主要内容

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

yoloxObjectDetector

使用 YOLOX 目标检测器检测目标

自 R2023b 起

说明

Add-On Required: 此功能需要

yoloxObjectDetector 对象会创建一个“只需看一次”(You Only Look Once X,简称 YOLOX)目标检测器,用于检测任意大小图像中的对象。YOLOX 是一种 YOLO 检测器,它采用单阶段架构,能够实现实时检测,且无需预定义锚框。使用此对象,您可以:

  • 使用基于 COCO 数据集训练的 YOLOX 深度学习网络,创建一个预训练的 YOLOX 目标检测器。

  • 使用预训练网络或未训练网络,创建一个自定义的 YOLOX 目标检测器。

注意

此函数需要 Deep Learning Toolbox™。

创建对象

描述

detector = yoloxObjectDetector 创建了一个 YOLOX 目标检测器,该检测器使用 CSP-Darknet-53 网络,基于 COCO 数据集进行了训练,可检测 80 种目标类别。

detector = yoloxObjectDetector(name) 通过使用在 COCO 数据集上训练的 YOLOX 深度学习网络,创建了一个预训练的 YOLOX 目标检测器。

示例

detector = yoloxObjectDetector(name,classes) 会创建一个预训练的 YOLOX 目标检测器,并将其配置为使用指定的目标类别集进行迁移学习。为了获得最佳效果,在进行检测之前,必须先使用新的训练图像对检测器进行训练。

在进行目标检测之前,请使用 trainYOLOXObjectDetector 函数对检测器进行训练。

detector = yoloxObjectDetector(___,Name=Value) 用于设置对象的 ModelNameInputSize 属性,并指定检测器的 NormalizationStatistics,除了可使用先前语法中的任意输入参量组合外,还可使用名称-值参量。例如,ModelName="customDetector" 将目标检测器的名称设置为 "customDetector"

输入参量

全部展开

预训练的 YOLOX 深度学习网络的名称,该网络以 CSP-DarkNet-53 作为基础网络,并在 COCO 数据集 [1] 上进行训练,其名称应指定为以下值之一。

  • "nano-coco" - 预训练的 YOLOX-nano 深度学习网络,具有最少的滤波器和最少的卷积层。当可用计算资源有限,且需要最快的性能和实时推理时,请使用 YOLOX-nano。

  • "tiny-coco" - 预训练的 YOLOX-tiny 深度学习网络。在限制稍宽松的实时应用中,可使用 YOLOX-tiny,其准确率较 YOLOX-nano 有所提升。

  • "small-coco" - 预训练的 YOLOX-small 深度学习网络。当计算资源较为充足时,建议使用 YOLOX-small,其准确率高于 YOLOX-tiny。

  • "medium-coco" - 预训练的 YOLOX-medium 深度学习模型。当具备一定的计算资源(例如 GPU 硬件)时,请使用 YOLOX-medium,其准确率高于 YOLOX-small。

  • "large-coco" - 预训练的 YOLOX-large 深度学习网络,拥有最多的滤波器和卷积层。使用 YOLOX-large 网络可获得最高水平的目标检测准确率,但需以计算成本和速度为代价。

提示

为了提高复杂检测任务的准确率和性能,可以牺牲推理速度、增加计算时间并提高内存需求,从而扩大预训练模型的规模。使用 YOLOX-nano 进行实时推理,但会牺牲检测准确率。由于推理速度快,建议在近实时应用中使用 YOLOX-tiny 和 YOLOX-small。当有足够的计算资源时,请使用 YOLOX-medium 和 YOLOX-large 以获得最高的准确率,但这会以牺牲计算速度为代价。

数据类型: char | string

用于训练检测器的目标类名称,指定为字符串向量、字符向量元胞数组或分类向量。该参量用于设置 yoloxObjectDetector 对象的 ClassNames 属性。

数据类型: char | string | categorical

名称-值参数

全部展开

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: yoloxObjectDetector(detector,classes,ModelName="customDetector") 将目标检测器的名称设置为 "customDetector"

目标检测器的名称,指定为字符向量或字符串标量。

用于训练目标检测器的图像尺寸,指定为行向量 [H W C],其中 HWC 分别对应高度、宽度和通道数。默认值为网络输入大小。

Z-score 归一化统计量,指定为包含以下字段的结构体,这些字段包含来自 COCO 数据集的值:

字段描述默认值
MeanC 的各通道均值向量。[123.6750 116.2800 103.5300]
StandardDeviationC 的各通道标准差向量。[58.3950 57.1200 57.3750]

C 的通道数必须与 InputSize 指定的图像中的通道数一致。

属性

全部展开

此 属性 为只读。

目标检测器的名称,以字符向量或字符串标量形式存储。要设置此属性,请在创建对象时进行指定。

此 属性 为只读。

要检测的目标类名称,以分类向量的形式存储。要设置此属性,请在创建对象时使用 classes 参量。

此 属性 为只读。

用于训练和推理的图像尺寸,以整数行向量的形式存储,格式为 [height width channels]。要设置此属性,请在创建对象时进行指定。

对象函数

detectDetect objects using YOLOX object detector

示例

全部折叠

指定一个预训练的 YOLOX 深度学习网络的名称。

networkName = "small-coco"
networkName = 
"small-coco"

使用预训练的 YOLOX 网络创建一个 YOLOX 目标检测器。

detector = yoloxObjectDetector(networkName);

显示并检查 YOLOX 目标检测器的属性。

disp(detector)
  yoloxObjectDetector with properties:

                 ClassNames: {80×1 cell}
                  InputSize: [640 640 3]
    NormalizationStatistics: [1×1 struct]
                  ModelName: 'small-coco'

检测选定图像中的目标。

I = imread("carsonroad.png");
[bboxes,scores,labels] = detect(detector,I);

显示检测结果。

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

Figure contains an axes object. The hidden axes object contains an object of type image.

参考

[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.

扩展功能

全部展开

版本历史记录

在 R2023b 中推出

全部展开