检测
使用YOLO v3对象检测器检测对象
语法
描述
方法返回的所有图像中的对象detectionResults
=检测(探测器
,ds
)读
输入数据存储的函数ds
.
例子
使用YOLO v3对象检测器检测对象
加载一个预先训练好的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)
从存储在图像数据存储中的图像中检测对象
加载一个预先训练好的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)
检测ROI内的对象
加载一个预先训练好的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)
输入参数
探测器
- - - - - -YOLO v3对象检测器
yolov3ObjectDetector
对象
YOLO v3对象检测器,指定为yolov3ObjectDetector
对象。
我
- - - - - -测试的图片
数字数组
测试图像,指定为大小的数值数组H——- - - - - -W——C或H——- - - - - -W——C——- - - - - -T.图像必须是实数、非稀疏、灰度或RGB图像。
H:身高
W宽度:
C:每个图像中的通道大小必须等于网络的输入通道大小。例如,对于灰度图像,C必须等于
1
.对于RGB彩色图像,它必须等于3.
.T:数组中测试映像的个数。该函数计算数组中每个测试图像的对象检测结果。
测试图像的强度范围必须与用于训练检测器的图像的强度范围相似。例如,如果你训练探测器uint8
图像,将测试图像重新缩放到范围[0,255]im2uint8
或重新调节
函数。测试图像的大小必须与训练中使用的图像的大小相当。如果这些尺寸相差很大,探测器就很难检测到物体,因为测试图像中物体的尺度与探测器训练识别的物体的尺度不同。
数据类型:uint8
|uint16
|int16
|双
|单
ds
- - - - - -测试的图片
ImageDatastore
对象|CombinedDatastore
对象|TransformedDatastore
对象
测试图像,指定为ImageDatastore
对象,CombinedDatastore
对象,或TransformedDatastore
对象,该对象包含测试映像的完整文件名。数据存储中的图像必须是灰度图像或RGB图像。
roi
- - - - - -搜索感兴趣的区域
[xy宽度高度)向量
搜索感兴趣的区域,指定为[xy宽度高度)向量。向量指定一个区域的左上角和大小(以像素为单位)。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:检测(探测器,我,“阈值”,0.25)
阈值
- - - - - -检测阈值
0.5
(默认)|范围[0,1]中的标量
检测阈值,指定为逗号分隔的对,由“阈值”
和范围[0,1]中的标量。分数小于此阈值的检测将被删除。为了减少误报,增加这个值。
SelectStrongest
- - - - - -选择最强包围框
真正的
(默认)|假
为每个检测到的对象选择最强的包围框,指定为由逗号分隔的对组成“SelectStrongest”
,要么真正的
或假
.
真正的
-返回每个对象最强的包围框。方法调用selectStrongestBboxMulticlass
函数,该函数使用非最大抑制来根据置信分数消除重叠的包围框。默认情况下,
selectStrongestBboxMulticlass
函数按如下方式调用selectStrongestBboxMulticlass (bboxes分数,...“RatioType”,“联盟”,...“OverlapThreshold”, 0.5);
假
—返回所有检测到的包围框。然后,您可以编写自己的自定义方法来消除重叠的包围框。
MinSize
- - - - - -最小区域大小
[1]
(默认)|形式为[的向量高度宽度]
最小区域大小,指定为逗号分隔的对,由“MinSize”
一个形式为[的向量高度宽度].单位是像素。最小区域大小定义包含对象的最小区域的大小。
默认情况下,MinSize
1×1。
最大尺寸
- - - - - -最大区域大小
大小
(我
)(默认)|形式为[的向量高度宽度]
最大区域大小,由逗号分隔的对组成最大容量的
一个形式为[的向量高度宽度].单位是像素。最大区域大小定义包含对象的最大区域的大小。
默认情况下,最大容量的
设置为输入图像的高度和宽度,我
.为了减少计算时间,请将此值设置为输入测试图像中可以检测到的物体的已知最大区域大小。
MiniBatchSize
- - - - - -最小批尺寸
128
(默认)|标量
最小批大小,由逗号分隔的对组成“MiniBatchSize”
和一个标量值。使用MiniBatchSize
处理大量的图像集合。为了提高计算效率,将图像分组为小批量,进行批量处理。增加小批尺寸以减少处理时间。减小大小以使用更少的内存。
DetectionPreprocessing
- - - - - -选项预处理测试图像
“汽车”
(默认)|“没有”
选项,用于在执行对象检测之前对测试图像进行预处理,指定为逗号分隔的对,由“DetectionPreprocessing”
其中一个价值观是:
“汽车”
—对测试图像进行预处理,再进行目标检测。的检测
函数调用进行预处理
执行这些操作的函数:将训练图像的强度值重新缩放到范围[0,1]。
将训练图像调整为最近的网络输入大小之一,并更新边界框坐标值以进行准确的训练。该函数保留训练数据的原始纵横比。
“没有”
—无需对测试图像进行预处理,即可进行目标检测。如果选择此选项,测试映像的数据类型必须是其中之一单
或双
.
数据类型:字符
|字符串
输出参数
bboxes
—检测到的对象位置
米矩阵|T-by-1单元格数组
在输入图像或图像中检测到的对象位置,作为
米-by-4矩阵,如果输入是单个测试图像。
T-by-1单元格数组,如果输入是一个测试图像数组。T数组中测试映像的数目。数组中的每个单元格都包含一个米-by-4矩阵,指定边界框检测。
.米图像中包围框的数量。
矩阵中的每一行都是一个四元素向量,形式为[xy宽度高度].这个向量指定了左上角和相应包围框的大小(以像素为单位)。
分数
-检测分数
米-元素行向量|T-by-1单元格数组
每个边界框的检测置信度分数,返回为
米-如果输入是单个测试图像,则为元素行向量。
T-by-1单元格数组,如果输入是一个测试图像数组。T数组中测试映像的数目。数组中的每个单元格都包含一个米-element行向量,表示对应边界框的检测分数。
米在图像中检测到的包围框数量。分数越高,表示检测的可信度越高。
标签
—包围框的标签
米-by-1分类向量|T-by-1单元格数组
属性返回的包围框的标签
米如果输入是单个测试图像,则为-by-1分类数组。
T-by-1单元格数组,如果输入是一个测试图像数组。T数组中测试映像的数目。数组中的每个单元格都包含一个米-by-1类别向量,包含对象类的名称。
米在图像中检测到的包围框数量。
detectionResults
-检测结果
三栏表
检测结果,返回为包含变量名的3列表,盒子,分数,标签.的盒子列米-by-4矩阵,的米在图像中找到的对象的包围框。每行包含一个包含4个元素向量的包围框,格式为[x,y,宽度,高度].该格式指定了相应图像中边界框的左上角位置和像素大小。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
的
roi
的参数检测
方法必须是代码生成常量(coder.const ()
)和一个1x4向量。只有
阈值
,SelectStrongest
,MinSize
,最大尺寸
名称-值对检测
都受支持金宝app。
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
使用注意事项和限制:
的
roi
的参数检测
方法必须是编码原常量(coder.const ()
)和一个1x4向量。只有
阈值
,SelectStrongest
,MinSize
,最大尺寸
支持名称-值对。金宝app输入图像的高度、宽度和通道必须是固定的大小。
版本历史
R2021a中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。