主要内容

检测

使用YOLO v4对象检测器检测对象

描述

例子

bboxes=检测(探测器检测单个图像或图像数组中的对象,,使用“只看一次”版本4 (YOLO v4)对象检测器,探测器.的检测函数自动调整和缩放输入图像的大小,以匹配用于训练检测器的图像。在输入图像中检测到的对象的位置作为一组边界框返回。

例子

bboxes分数=检测(探测器还为每个边界框返回特定于类的置信度分数。

例子

bboxes分数标签=检测(探测器返回分配给边界框的标签的分类数组。对象类的标签在训练过程中定义。

例子

detectionResults=检测(探测器ds控件返回的所有图像中检测对象输入数据存储的函数ds

例子

___=检测(___roi检测矩形搜索区域内的对象roi,除了来自以前语法的任何参数的组合。

___=检测(___名称=值使用一个或多个名称、值参数指定选项。

请注意

若要使用在COCO数据集上训练的预训练的YOLO v4对象检测网络,必须安装用于YOLO v4对象检测的计算机视觉工具箱™模型.您可以下载并安装YOLO v4目标检测的计算机视觉工具箱模型从Add-On Explorer。有关安装插件的更多信息,请参见获取和管理插件.要运行此函数,您需要使用深度学习工具箱™。

例子

全部折叠

指定预训练的YOLO v4深度学习网络的名称。

name =“tiny-yolov4-coco”

使用预训练的YOLO v4网络创建YOLO v4对象检测器。

探测器= yolov4ObjectDetector(名称);

使用预先训练的YOLO v4对象检测器检测未知图像中的对象。

Img = imread(“sherlock.jpg”);Img = im2single(imresize(Img,0.5));[bboxes,scores,labels] = detect(检测器,img,阈值=0.4)
bboxes =1×4单行向量80.9433 31.6083 398.4628 288.3917
成绩=0.4281
标签=分类

显示检测结果。

detectedImg = insertObjectAnnotation(img,“矩形”、bboxes、标签);图imshow (detectedImg)

加载一个预先训练的YOLO v4对象检测器。

探测器= yolov4ObjectDetector(“csp-darknet53-coco”);

读取测试数据并将其存储为映像数据存储对象。

Location = fullfile(matlabroot,“工具箱”“愿景”“visiondata”“汽车”);imds = imageDatastore(location);

检测测试数据集中的对象。设置阈值参数值为0.4和MiniBatchSize取值为32。

detectionResults = detect(检测器,imds,阈值=0.4,MiniBatchSize=32);

从测试数据集中读取图像,并提取相应的检测结果。

Num = 20;I = readimage(imds,num);bboxes = detectionResults.Boxes{num};labels = detectionResults.Labels{num};scores = detectionResults.Scores{num};

执行非最大抑制从重叠的集群中选择最强的边界框。设置OverlapThreshold参数值为0.5。

[bboxes,scores,labels] = selectstronggestbboxmulticlass (bboxes,...分数,标签,OverlapThreshold = 0.5);

显示检测结果。

结果=表格(方块,标签,分数)
结果=2×3表bboxes标签分数  ____________________________________ ______ _______ 汽车17.818 69.966 23.459 11.381 0.90267 75.206 66.011 0.58296 26.134 - 23.541的车
(I,“矩形”、bboxes、标签);图imshow (detectedImg)

加载一个预先训练的YOLO v4对象检测器。

探测器= yolov4ObjectDetector(“csp-darknet53-coco”);

读取测试图像。

Img = imread(“stopsign.jpg”);

在测试图像中指定感兴趣的区域(ROI)。

roiBox = [250 60 500 300];

检测指定ROI内的对象。

[bboxes,scores,labels] = detect(检测器,img,roiBox);

显示ROI和检测结果。

img = insertObjectAnnotation(img,“矩形”roiBox,“投资回报”颜色=“蓝色”);detectedImg = insertObjectAnnotation(img,“矩形”、bboxes、标签);图imshow (detectedImg)

输入参数

全部折叠

YOLO v4对象检测器,指定为yolov4ObjectDetector对象。

测试图像,指定为大小的数值数组H——- - - - - -W——CH——- - - - - -W——C——- - - - - -T.图像必须是实数、非稀疏、灰度或RGB图像。

  • H:身高

  • W宽度:

  • C:每张图像中的通道大小必须等于网络的输入通道大小。例如,对于灰度图像,C必须等于1.对于RGB彩色图像,它必须等于3.

  • T:数组中测试图像的个数。该函数为数组中的每个测试图像计算对象检测结果。

数据类型:uint8|uint16|int16||

测试图像,指定为ImageDatastore对象,CombinedDatastore对象,或TransformedDatastore对象,该对象包含测试图像的完整文件名。数据存储中的图像必须是灰度图像或RGB图像。

感兴趣的搜索区域,指定为[xy宽度高度)向量。这个向量以像素为单位指定了一个区域的左上角和大小。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:检测(检测器,阈值= 0.25)

检测阈值,指定为范围[0,1]中的标量。得分低于此阈值的检测将被删除。要减少误报,请增加此值。

为每个检测到的对象选择最强的包围框,指定为真正的

  • 真正的-返回每个对象的最强边界框。方法调用selectStrongestBboxMulticlass函数,该函数使用非最大抑制来消除重叠的边界框,基于它们的置信度得分。

    默认情况下,selectStrongestBboxMulticlass函数的调用如下

    selectStrongestBboxMulticlass (bboxes分数,...RatioType =“联盟”...OverlapThreshold = 0.5);

  • —返回所有检测到的边界框。然后,您可以编写自己的自定义方法来消除重叠的边界框。

最小区域大小,指定为形式为[的向量高度宽度].单位以像素为单位。最小区域大小定义包含对象的最小区域的大小。

默认情况下,MinSize1×1。

最大区域大小,指定为形式为[的向量高度宽度].单位以像素为单位。最大区域大小定义包含对象的最大区域的大小。

默认情况下,最大尺寸设置为输入图像的高度和宽度,.为了减少计算时间,将该值设置为输入测试图像中可以检测到的对象的已知最大区域大小。

最小批处理大小,指定为标量值。使用MiniBatchSize处理大量的图像集合。为提高计算效率,将图像分组为小批,分批处理。增加小批尺寸以减少处理时间。减小大小以使用更少的内存。

运行检测器的硬件资源,指定为逗号分隔的对,由“ExecutionEnvironment”而且“汽车”“图形”,或“cpu”

  • “汽车”—如果有图形处理器,请使用图形处理器。否则,请使用CPU。

  • “图形”—使用GPU。要使用GPU,你必须有并行计算工具箱™和CUDA®使英伟达®GPU。如果没有合适的GPU,函数将返回一个错误。有关支持的计算功能的信息,请参见GPU计算要求(并行计算工具箱)

  • “cpu”—使用CPU。

性能优化,指定为逗号分隔的对组成“加速”和以下其中之一:

  • “汽车”-自动应用一些适合输入网络和硬件资源的优化。

  • 墨西哥人的—编译并执行MEX函数。该选项仅在使用GPU时可用。使用GPU需要并行计算工具箱和CUDA支持的NVIDIA GPU。如果并行计算工具箱或合适的GPU不可用,则函数返回错误。有关支持的计算功能的信息,请参见GPU计算要求(并行计算工具箱)

  • “没有”—禁用所有加速。

默认选项是“汽车”.如果“汽车”, MATLAB®应用许多兼容优化。如果您使用“汽车”选项,MATLAB从未生成MEX函数。

使用“加速”选项“汽车”而且墨西哥人的可以提供性能优势,但以增加初始运行时间为代价。使用兼容参数的后续调用会更快。当您计划使用新的输入数据多次调用函数时,请使用性能优化。

墨西哥人的选项根据函数调用中使用的网络和参数生成并执行MEX函数。您可以同时拥有与单个网络相关联的多个MEX函数。清除网络变量也会清除与该网络关联的任何MEX函数。

墨西哥人的选项仅对指定为数值数组、数值数组的单元格数组、表或图像数据存储的输入数据可用。类型的数据存储不支持墨西哥人的选择。

墨西哥人的选项仅在使用GPU时可用。您还必须安装C/ c++编译器。有关设置说明,请参见墨西哥人设置(GPU编码器)

墨西哥人的加速并不支持所有层。有关受支持层的列表,请参见支持层(GPU编码器)

输出参数

全部折叠

在输入图像中检测到的对象的位置,作为

  • -by-4矩阵,如果输入是单个测试图像。

  • T如果输入是测试图像数组,则使用-by-1 cell array。T数组中测试图像的数量。数组中的每个单元格都包含-by-4矩阵,指定边界框检测。

是图像中边界框的数量。

矩阵中的每一行都是一个四元素向量,形式为[xy宽度高度].这个向量指定了左上角和相应边框的大小(以像素为单位)。

每个边界框的检测置信度分数,返回为

  • -元素行向量如果输入是一个单一的测试图像。

  • T如果输入是测试图像数组,则使用-by-1 cell array。T数组中测试图像的数量。数组中的每个单元格都包含-element行向量,表示对应边界框的检测分数。

在图像中检测到的边界框的数量。分数越高表示检测的信心越高。

绑定框的标签,作为对象返回

  • 如果输入是单个测试图像,则使用-by-1分类数组。

  • T如果输入是测试图像数组,则使用-by-1 cell array。T数组中测试图像的数量。数组中的每个单元格都包含-by-1包含对象类名称的分类向量。

在图像中检测到的边界框的数量。

检测结果作为一个包含变量名的3列表返回,盒子分数,标签.的盒子-by-4矩阵在图像中找到的对象的边框。每一行包含一个作为4元素向量的边界框,格式为[xy宽度高度].该格式指定了相应图像中边界框的左上角位置和像素大小。

扩展功能

版本历史

在R2022a中引入

Baidu
map