主要内容

检测

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

描述

例子

bboxes=检测(探测器检测单个图像或图像数组中的对象,,使用你只看一次版本3 (YOLO v3)的目标探测器,探测器.图像的输入大小必须大于或等于预训练的检测器的网络输入大小。检测到的对象的位置作为一组包围框返回。

例子

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

例子

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

例子

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

例子

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

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

请注意

要运行此函数,您将需要深度学习工具箱™。

例子

全部折叠

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

探测器= yolov3ObjectDetector(“tiny-yolov3-coco”);

方法读取测试图像并对测试图像进行预处理进行预处理函数。

Img = imread(“sherlock.jpg”);Img =预处理(检测器,Img);

检测测试图像中的对象。

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

显示检测结果。

Results = table(bboxes,labels,scores)
结果=1×3表bboxes标签分数  ________________________ ______ _______ 133年67 283 278 0.51771的狗
detectedImg = insertObjectAnnotation(img,“矩形”、bboxes、标签);图imshow (detectedImg)

图中包含一个轴对象。axis对象包含一个image类型的对象。

加载一个预先训练好的YOLOv3对象检测器。

探测器= yolov3ObjectDetector(“tiny-yolov3-coco”);

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

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

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

detectionResults = detect(检测器,imds,“阈值”, 0.3,“MiniBatchSize”、32);

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

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

执行非最大抑制,从重叠的集群中选择最强的包围框。设置OverlapThreshold参数值为0.2。

[bboxes,scores,labels] = selectstronggestbboxmulticlass (bboxes,scores,labels,“OverlapThreshold”, 0.2);

显示检测结果。

Results = table(bboxes,labels,scores)
结果=3×3表bboxes标签分数  ________________________ ______ _______ 14 71 52 27车0.93352 74 73 7 5车15 10车0.85313 0.65369 102 73
detectedImg = insertObjectAnnotation(I,“矩形”、bboxes、标签);图imshow (detectedImg)

图中包含一个轴对象。axis对象包含一个image类型的对象。

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

探测器= yolov3ObjectDetector(“tiny-yolov3-coco”);

读取一个测试图像。

Img = imread(“highway.png”);

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

roiBox = [70 40 100 100];

检测指定ROI内的对象。

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

显示ROI和检测结果。

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

图中包含一个轴对象。axis对象包含一个image类型的对象。

输入参数

全部折叠

YOLO v3对象检测器,指定为yolov3ObjectDetector对象。

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

  • H:身高

  • W宽度:

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

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

测试图像的强度范围必须与用于训练检测器的图像的强度范围相似。例如,如果你训练探测器uint8图像,将测试图像重新缩放到范围[0,255]im2uint8重新调节函数。测试图像的大小必须与训练中使用的图像的大小相当。如果这些尺寸相差很大,探测器就很难检测到物体,因为测试图像中物体的尺度与探测器训练识别的物体的尺度不同。

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

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

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

名称-值参数

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

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:检测(探测器,我,“阈值”,0.25)

检测阈值,指定为逗号分隔的对,由“阈值”和范围[0,1]中的标量。分数小于此阈值的检测将被删除。为了减少误报,增加这个值。

为每个检测到的对象选择最强的包围框,指定为由逗号分隔的对组成“SelectStrongest”,要么真正的

  • 真正的-返回每个对象最强的包围框。方法调用selectStrongestBboxMulticlass函数,该函数使用非最大抑制来根据置信分数消除重叠的包围框。

    默认情况下,selectStrongestBboxMulticlass函数按如下方式调用

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

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

最小区域大小,指定为逗号分隔的对,由“MinSize”一个形式为[的向量高度宽度].单位是像素。最小区域大小定义包含对象的最小区域的大小。

默认情况下,MinSize1×1。

最大区域大小,由逗号分隔的对组成最大容量的一个形式为[的向量高度宽度].单位是像素。最大区域大小定义包含对象的最大区域的大小。

默认情况下,最大容量的设置为输入图像的高度和宽度,.为了减少计算时间,请将此值设置为输入测试图像中可以检测到的物体的已知最大区域大小。

最小批大小,由逗号分隔的对组成“MiniBatchSize”和一个标量值。使用MiniBatchSize处理大量的图像集合。为了提高计算效率,将图像分组为小批量,进行批量处理。增加小批尺寸以减少处理时间。减小大小以使用更少的内存。

选项,用于在执行对象检测之前对测试图像进行预处理,指定为逗号分隔的对,由“DetectionPreprocessing”其中一个价值观是:

  • “汽车”—对测试图像进行预处理,再进行目标检测。的检测函数调用进行预处理执行这些操作的函数:

    • 将训练图像的强度值重新缩放到范围[0,1]。

    • 将训练图像调整为最近的网络输入大小之一,并更新边界框坐标值以进行准确的训练。该函数保留训练数据的原始纵横比。

  • “没有”—无需对测试图像进行预处理,即可进行目标检测。如果选择此选项,测试映像的数据类型必须是其中之一

数据类型:字符|字符串

输出参数

全部折叠

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

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

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

图像中包围框的数量。

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

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

  • -如果输入是单个测试图像,则为元素行向量。

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

在图像中检测到的包围框数量。分数越高,表示检测的可信度越高。

属性返回的包围框的标签

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

  • T-by-1单元格数组,如果输入是一个测试图像数组。T数组中测试映像的数目。数组中的每个单元格都包含一个-by-1类别向量,包含对象类的名称。

在图像中检测到的包围框数量。

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

扩展功能

版本历史

R2021a中引入