检测
使用YOLO v3对象检测器检测对象
语法
描述
方法返回的所有图像中的对象detectionResults
=检测(探测器
,ds
)读
输入数据存储的功能ds
.
例子
使用YOLO v3对象检测器检测对象
加载一个预训练的YOLO v3对象检测器。
= yolov3ObjectDetector(“tiny-yolov3-coco”);
读取测试图像并对测试图像进行预处理进行预处理
函数。
Img = Img“sherlock.jpg”);Img =预处理(检测器,Img);
检测测试图像中的对象。
[bboxes,scores,labels] = detect(检测器,img);
显示检测结果。
结果=表(bboxes,label,scores)
结果=1×3表bboxes标签分数 ________________________ ______ _______ 133年67 283 278 0.51771的狗
detectedImg = insertobjectnotation (img,“矩形”、bboxes、标签);图imshow (detectedImg)
从图像数据存储中存储的图像中检测对象
加载一个预训练的YOLOv3对象检测器。
= yolov3ObjectDetector(“tiny-yolov3-coco”);
读取测试数据并将其存储为图像数据存储对象。
Location = 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] = selectStrongestBboxMulticlass(bboxes,scores,labels)“OverlapThreshold”, 0.2);
显示检测结果。
结果=表(bboxes,label,scores)
结果=3×3表bboxes标签分数 ________________________ ______ _______ 14 71 52 27车0.93352 74 73 7 5车15 10车0.85313 0.65369 102 73
detectedImg = insertobjectnotation (I,“矩形”、bboxes、标签);图imshow (detectedImg)
检测ROI内的对象
加载一个预训练的YOLO v3对象检测器。
= yolov3ObjectDetector(“tiny-yolov3-coco”);
阅读测试图像。
Img = Img“highway.png”);
在测试图像中指定感兴趣区域(ROI)。
roiBox = [70 40 100 100];
检测指定ROI内的对象。
[bboxes,scores,labels] = detect(detector,img,roiBox);
显示ROI和检测结果。
img = insertobjectnotation (img,“矩形”roiBox,“投资回报”,“颜色”,“蓝色”);detectedImg = insertobjectnotation (img,“矩形”、bboxes、标签);图imshow (detectedImg)
输入参数
探测器
- - - - - -YOLO v3目标检测器
yolov3ObjectDetector
对象
YOLO v3对象检测器,指定为ayolov3ObjectDetector
对象。
我
- - - - - -测试的图片
数字数组
测试图像,指定为大小的数字数组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
对象
测试映像,指定为aImageDatastore
对象,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
-检测对象的位置
米-4矩阵|T-by-1单元阵列
在输入图像中检测到的对象的位置,作为返回
米如果输入是单个测试图像,则为- × 4矩阵。
T如果输入是测试图像数组,则为-by-1 cell array。T是数组中测试图像的个数。数组中的每个单元格都包含一个米- × 4矩阵,指定边界框检测。
.米是图像中边界框的数量。
矩阵中的每一行都是一个四元素向量,形式为[xy宽度高度]。此向量以像素为单位指定相应边界框的左上角和大小。
分数
-检测分数
米-元素行向量|T-by-1单元阵列
每个边界框的检测置信度分数,返回为
米-元素行向量,如果输入是单个测试图像。
T如果输入是测试图像数组,则为-by-1 cell array。T是数组中测试图像的个数。数组中的每个单元格都包含一个米-element行向量,表示相应边界框的检测分数。
米在图像中检测到的边界框的数量。分数越高,表示对检测的置信度越高。
标签
-边框标签
米-by-1分类向量|T-by-1单元阵列
边界框的标签,返回为
米如果输入是单个测试图像,则使用-by-1分类数组。
T如果输入是测试图像数组,则为-by-1 cell array。T是数组中测试图像的个数。数组中的每个单元格都包含一个米-by-1分类向量,包含对象类的名称。
米在图像中检测到的边界框的数量。
detectionResults
-检测结果
三栏表
检测结果,作为一个带有变量名的3列表返回,盒子,分数,标签.的盒子列米- × 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输入图像的高度、宽度和通道必须为固定大小。
版本历史
MATLAB命令
您点击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。