主要内容

本页采用了机器翻译。点击此处可查看英文原文。

YOLOX 目标检测入门指南

使用 Computer Vision Toolbox™ 自动化视觉检测库支持包,通过 You Only Look Once X (YOLOX) 目标检测器检测图像中的对象。

YOLOX 目标检测模型是一种单阶段、无锚点技术,与之前的 YOLO 模型相比,该模型显著缩小了模型规模并提高了计算速度 [1]。YOLOX 没有使用占用大量内存的预定义锚框,而是通过查找对象中心点来直接定位对象。为了预测边界框的维度,该网络将输入图像划分为三个不同尺度的网格,并将网格点作为边界框的左上角偏移量。由于可以根据图像尺寸重新计算网格,因此您可以使用 YOLOX 进行基于切片的训练:先在图像片段上训练 YOLOX 网络,然后对全尺寸图像进行推理。

YOLOX 网络由三个部分组成:骨干层、颈部和头部:

  1. YOLOX 网络的核心是一个预训练网络 CSP-DarkNet-53,该网络是在 COCO 数据集上训练而成的。骨干网络充当特征提取网络,负责根据输入图像计算特征图。

  2. 颈部 (neck) 连接骨干 (backbone) 和检测头 (head)。它由特征金字塔网络 (FPN) 和路径聚合网络组成,其中特征金字塔网络生成多尺度特征图及相应的网格,而路径聚合网络则将低层和高层特征进行融合。颈部将骨干层的特征图进行拼接,并以三种不同尺度(1024、512 和 256 个通道)作为输入传递给头部。

  3. 解耦检测头将聚合特征处理为三个特征通道,其中包含:

    • 分类得分 - 每个边界框所属的类别

    • 回归得分 - 每个边界框的位置和维度

    • 目标检测得分 (IoU) - 表示每个边界框包含对象的置信度得分

为简明起见,图中展示了 YOLOX 的基本架构,其中仅在三个尺度中的一个尺度上采用了解耦头。

YOLOX architecture: the FPN serves as the backbone network to extract multi-scale features from the input image, and output features at 3 scales to the head. The decoupled detection head outputs the classification, regression, and objectness scores.

安装自动化视觉检测支持包

此函数需要 Deep Learning Toolbox™ 以及 Computer Vision Toolbox 的自动化视觉检测库。您可以通过附加功能资源管理器安装 Computer Vision Toolbox 的自动化视觉检测库。有关安装附加功能的详细信息,请参阅获取和管理附加功能。要在 GPU 上处理图像数据,需要一台受支持的 GPU 设备以及 Parallel Computing Toolbox™。

使用预训练的 YOLOX 网络进行目标检测

若要使用默认设置的预训练 YOLOX 网络检测测试图像中的目标,请按照以下步骤操作。

  1. 从工作区加载一张测试图像。YOLOX 模型支持 RGB 或灰度图像。

    I = imread("boats.png");
    
  2. 创建一个 yoloxObjectDetector 对象,用于配置一个预训练的 YOLOX 网络,该网络采用 CSP-DarkNet-53 骨干网络作为特征提取器。

    detector = yoloxObjectDetector("small-coco");

    为了提高推理速度(可能以牺牲目标检测数量为代价),也可以指定特征数量较少的轻量级 CSP-DarkNet-53 骨干网络 ("tiny-coco")。

  3. 在预训练网络上使用 detect 函数执行目标检测,并指定该函数返回边界框、检测分数和标签。

    [bboxes,scores,labels] = detect(detector,I);
  4. 使用 insertObjectAnnotation 函数将结果叠加在输入图像上显示。

    detectedImg = insertObjectAnnotation(I,"Rectangle",bboxes,labels);
    figure
    imshow(detectedImg)

    Bounding box and label output from the pretrained YOLOX detector object is overlaid on the RGB test image

若要使用经过训练的 YOLOX 网络对测试图像进行推理,请按照相同的步骤操作,但在 detector 变量中指定该经过训练的 YOLOX 网络。

训练 YOLOX 神经网络并进行迁移学习

要在标注数据集上训练 YOLOX 目标检测网络,请使用 trainYOLOXObjectDetector 函数。您必须指定用于训练神经网络的数据集的类名。然后,使用 trainYOLOXObjectDetector 函数对未训练或预训练网络进行训练。该训练函数将训练好的神经网络作为 yoloxObjectDetector 对象返回。

要了解如何配置和训练 YOLOX 目标检测器以进行迁移学习并检测小型对象,请参阅利用 YOLOX 网络检测印刷电路板上的缺陷示例。

为深度学习标注训练数据

要生成真实值数据,您可以使用图像标注器视频标注器真实值标注器 (Automated Driving Toolbox)以交互方式对像素进行标注,并导出标注数据。您还可以使用这些 App,为目标检测标注矩形感兴趣区域 (ROI),为图像分类标注场景标签,以及为语义分割标注像素。若要根据任何标注员导出的真实值对象创建训练数据,可以使用 objectDetectorTrainingDatapixelLabelTrainingData 函数。有关详细信息,请参阅Training Data for Object Detection and Semantic Segmentation

参考

[1] Ge, Zheng, Songtao Liu, Feng Wang, Zeming Li, and Jian Sun. “YOLOX: Exceeding YOLO Series in 2021.” arXiv, August 5, 2021. http://arxiv.org/abs/2107.08430.

另请参阅

App

对象

函数

主题