使用深度学习入门目标检测
利用深度学习进行目标检测,为预测图像中目标的位置提供了一种快速且准确的方法。深度学习是一种强大的机器学习技术,在此技术中,目标检测器会自动学习检测任务所需的图像特征。Computer Vision Toolbox™ 提供了多种基于深度学习的目标检测技术,例如“只需看一次” (YOLO) v2、YOLO v3、YOLO v4、YOLOX、RTMDet 以及单次检测 (SSD)。

使用目标检测技术的应用包括:
场景理解
多目标跟踪
目视检查
自动驾驶汽车
监控
Computer Vision Toolbox 及其支持包可帮助您配置预训练的目标检测器或设计自定义目标检测网络,使用预训练网络或已训练网络进行推理,进行迁移学习,并在目标检测器分析工具中可视化并评估检测结果。
若要开始使用预训练网络检测图像中的目标,请参阅使用预训练的目标检测网络检测目标部分。
若要开始训练未经过训练或预训练的目标检测网络以进行迁移学习,并评估结果,请参阅训练目标检测网络并进行迁移学习部分。
您还可以使用深度网络设计器 (Deep Learning Toolbox)逐层设计自定义网络。例如使用 YOLO v2 目标检测网络的示例,请参阅使用预训练的 YOLO v2 检测器进行迁移学习。
使用预训练的目标检测网络检测目标
Computer Vision Toolbox 提供预训练的目标检测模型,您可以利用这些模型直接进行推理,或将其应用于自定义数据集进行迁移学习。
配置预训练模型
要使用预训练的目标检测模型,您必须先下载并安装该预训练的目标检测模型。您可以使用附加功能资源管理器下载并安装预训练模型支持包。有关安装附加功能的详细信息,请参阅获取和管理附加功能。
下表列出了目标检测器的名称、相应的可用预训练模型,以及需要下载的对应附加功能支持包的名称。
| 目标检测模型 | 可用的预训练模型 | 支持包名称 |
|---|---|---|
yolov2ObjectDetector |
| Computer Vision Toolbox Model for YOLO v2 Object Detection |
yolov3ObjectDetector |
| Computer Vision Toolbox Model for YOLO v3 Object Detection |
yolov4ObjectDetector |
| Computer Vision Toolbox Model for YOLO v4 Object Detection |
yoloxObjectDetector |
| Automated Visual Inspection Library for Computer Vision Toolbox |
| Computer Vision Toolbox Model for RTMDet Object Detection |
使用预训练模型进行推理
使用预训练的检测器模型,对测试图像进行推理并检测其中的目标。如需帮助选择适合您应用的预训练目标检测网络,请参阅Choose an Object Detector。要返回边界框、置信度得分和相应的类别标签,请将预训练的检测器对象传递给相应的 detect 对象函数。
例如,若要使用配置预训练模型部分中列出的预训练 YOLO v4 tiny-yolov4-coco 网络,请通过创建一个 yolov4ObjectDetector 对象来加载该模型。
detector = yolov4ObjectDetector("tiny-yolov4-coco");
将一张测试图像读入工作区,并显示该图像。要对这个图像运行检测器,请将图像保存到您的工作区中。
I = imread("carsonroad.png");
imshow(I)

使用 yolov4ObjectDetector 对象的 detect 对象函数,检测测试图像中的目标。
[bboxes,scores,labels] = detect(detector,I);
使用 insertObjectAnnotation 函数将结果叠加在输入图像上显示。
detectedImg = insertObjectAnnotation(I,"Rectangle",bboxes,labels);
figure
imshow(detectedImg)

若要使用经过训练的目标检测网络对测试图像进行推理,请按照相同的流程操作,但需将经过训练的网络作为 detector 参量传递给 detect 函数。
MathWorks GitHub 预训练网络
MathWorks® GitHub 代码库提供了最新预训练目标检测深度学习网络的实现,可供下载并直接用于进行开箱即用的推理。这些预训练网络已经基于标准数据集(如 COCO 和 Pascal VOC 数据集)进行了训练。您可以直接使用这些预训练模型来检测测试图像中的不同目标。
有关所有最新的 MathWorks 预训练目标检测器的列表,请参阅 MATLAB 深度学习 (GitHub) 。
训练目标检测网络并进行迁移学习
若要修改网络以识别更多类别,或自定义其他网络参数,可以进行迁移学习。本节介绍了如何准备训练数据、配置预训练目标检测网络、训练网络以及评估检测结果。
创建训练数据
使用标注 App(例如图像标注器视频标注器真实值标注器 (Automated Driving Toolbox)),对视频、图像序列、图像集合或自定义数据源中的真实值数据进行交互式标注。您可以使用矩形 ROI 标注以交互方式标注真实值,这些标注定义了图像中目标的位置和大小。

如需进一步了解如何为图像标注以进行目标检测,请参阅以下主题:
数据扩充与预处理
利用数据增强技术,在有限的数据集上训练目标检测器。通过对数据集中的图像进行微小调整(例如平移、裁剪或变换),可以生成独特且各不相同的训练数据,从而构建出更稳健的检测器。使用数据存储,可以方便地读取和扩充数据集合。使用 imageDatastore 和 boxLabelDatastore 分别创建用于存储图像和标注边界框数据的数据存储库。
如需进一步了解用于训练的数据增强和预处理,请参阅以下主题:
有关使用数据存储扩充训练数据的更多信息,请参阅Datastores for Deep Learning (Deep Learning Toolbox)和使用内置数据存储执行附加图像处理运算 (Deep Learning Toolbox)。
训练目标检测器
要训练目标检测网络,请使用与您的目标检测模型对应的训练函数。例如,如果您正在使用 yolov4ObjectDetector 对象来配置检测器,请使用 trainYOLOv4ObjectDetector 函数。
使用 trainingOptions (Deep Learning Toolbox) 函数指定网络训练选项。您可以使用Experiment Manager (Deep Learning Toolbox)设置训练选项的参数。有关使用 Experiment Manager 进行超参数调优的信息,请参阅Train Object Detectors in Experiment Manager。
如需进一步了解训练、推理以及结果评估,请参阅以下示例:
评估和优化目标检测器的性能
使用目标检测器分析工具以交互方式可视化检测结果。若要使用一套全面的度量将检测结果与真实值进行对比评估,您可以:
使用目标检测器分析工具计算、评估并导出性能度量。若要开始在 App 中可视化并评估检测结果,请参阅 《目标检测器分析器入门指南》。有关使用 App 评估性能度量的培训示例,请参阅Multiclass Object Detection Using YOLO v2 Deep Learning。
使用
evaluateObjectDetection函数计算并评估性能度量。
evaluateObjectDetection 函数将目标检测度量作为 objectDetectionMetrics 对象返回。您还可以使用目标检测器分析工具将度量导出为 objectDetectionMetrics 对象,以便进行进一步分析。使用这些 objectDetectionMetrics 对象函数,可跨类、图像和重叠阈值计算度量,并创建自定义可视化效果。
objectDetectionMetrics 对象函数 | 用法 | 输出示例 |
|---|---|---|
计算数据集中所有或选定类别的平均精确率 (AP) 以及重叠度(交并比)阈值 |
| |
计算数据集中所有类别的精确率、召回率和置信度得分,或计算指定类别及重叠阈值下的相关索引 |
| |
confusionMatrix | 根据指定的置信度阈值或重叠阈值,计算混淆矩阵和归一化混淆矩阵 |
|
metricsByArea | 根据检测到的目标的面积将其分组,从而计算基于目标大小的度量,例如平均精确率 (AP)、召回率和精确率 |
|
summarize | 计算整个数据集或各类别的目标检测度量摘要 |
|
| 计算每个图像的性能度量,包括精确率、召回率以及真阳性 (TP)、假阳性 (FP) 和假阴性 (FN) 的数量 |
|
如需进一步了解性能度量,请参阅Evaluate Object Detector Performance。





