主要内容

检测

使用R-CNN深度学习检测器检测对象

描述

bboxes=检测(探测器检测图像中的物体使用R-CNN(带有卷积神经网络的区域)目标检测器。检测到的对象的位置以一组包围框的形式返回。

当使用这个函数时,使用CUDA®使英伟达®强烈推荐使用GPU。GPU大大减少了计算时间。使用GPU需要并行计算工具箱™。有关支持的计算能力的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱)

bboxes分数) =检测(探测器还返回每个边界框的检测分数。

例子

___标签) =检测(探测器也返回分配给边界框的标签的分类数组,使用前面的任何一种语法。对象类使用的标签是在训练期间使用trainRCNNObjectDetector函数。

___) =检测(___roi在指定的矩形搜索区域内检测对象roi

___) =检测(___名称,值使用一个或多个指定选项名称,值对参数。例如,检测(探测器,我,‘NumStongestRegions’,1000)限制最强区域提案的数量为1000个。

例子

全部折叠

负载训练数据和网络层。

负载(“rcnnStopSigns.mat”“stopSigns”“层”

将图像目录添加到MATLAB路径中。

imDir = fullfile (matlabroot,“工具箱”“愿景”“visiondata”...“stopSignImages”);目录(imDir);

设置网络训练选项使用32个小批量来减少GPU内存的使用。降低InitialLearningRate,降低网络参数的变化速率。当对预先训练的网络进行微调并防止网络变化过快时,这是有益的。

选择= trainingOptions (“个”...“MiniBatchSize”32岁的...“InitialLearnRate”1 e-6...“MaxEpochs”10);

训练R-CNN探测器。训练可能需要几分钟才能完成。

rcnn = trainRCNNObjectDetector(stopSigns, layer, options,“NegativeOverlapRange”0.3 [0]);
******************************************************************* 培训一个R-CNN对象探测器以下对象类:* stopSign步骤1的3:从27日训练图像提取区域建议……。步骤2:训练神经网络对训练数据中的对象进行分类…|=========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习| | | | | | |精度损失速率(秒)  | |=========================================================================================| | 50 | 3 | 9.27 | 0.2895 | 0.000001 | 96.88%| | 100 | | 14.77 | 0.2443 | 93.75% | 0.000001 | | 150 | | 20.29 | 0.0013 | 100.00% | 0.000001 | | 200 | | 25.94 | 0.1524 | 0.000001 | 96.88%  | |=========================================================================================| 网络训练完成。步骤3:训练每个对象类的边界盒回归模型。R-CNN培训完成。*******************************************************************

在测试图像上测试R-CNN检测器。

img = imread (“stopSignTest.jpg”);[bbox, score, label] =检测(rcnn, img,“MiniBatchSize”、32);

显示最强检测结果。

[score, idx] = max(score);Bbox = Bbox (idx,:);注释= sprintf ('%s:(置信度= %f)'标签(idx),得分);detectedImg = insertObjectAnnotation (img,“矩形”bbox,注释);图imshow (detectedImg)

从路径中删除映像目录。

rmpath (imDir);

输入参数

全部折叠

R-CNN对象检测器,指定为rcnnObjectDetector对象。要创建此对象,请调用trainRCNNObjectDetector以训练数据作为输入。

输入图像,指定为H——- - - - - -W——- - - - - -C图像的数字数组。图像必须是真实的,非稀疏的,灰度或RGB图像。

  • H:身高

  • W宽度:

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

检测器对输入图像的范围很敏感。因此,确保输入的图像范围与用于训练检测器的图像范围相似。例如,如果检测器被训练uint8图像,重新缩放这个输入图像的范围[0,255]使用im2uint8重新调节函数。输入图像的大小应该与训练中使用的图像的大小相当。如果这些尺寸相差很大,检测器就很难检测到目标,因为输入图像中目标的规模与检测器训练识别的目标的规模不同。考虑一下你是否使用了SmallestImageDimension属性来修改训练图像的大小。

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

指定为[xy宽度高度)向量。向量以像素为单位指定区域的左上角和大小。

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“NumStongestRegions”,1000年

最强区域建议的最大数目,指定为逗号分隔对,由“NumStrongestRegions”和一个整数。降低这个值以加快处理时间,但降低检测精度。要使用所有区域提议,请指定此值为

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

  • 真正的-返回每个物体最强的边界框。要选择这些方框,检测调用selectStrongestBboxMulticlass函数,该函数使用非最大抑制来消除基于它们的分数的重叠边界框。

    例如:

    selectStrongestBboxMulticlass (bbox,分数,...“RatioType”“最小值”...“OverlapThreshold”, 0.5);

  • -返回所有检测到的包围盒。然后可以使用自定义操作来消除重叠的边界框。

用于R-CNN数据处理的较小批的大小,指定为逗号分隔对组成“MiniBatchSize”和一个整数。较大的批大小会导致更快的处理速度,但会占用更多内存。

运行检测器的硬件资源,指定为逗号分隔对组成“ExecutionEnvironment”“汽车”“图形”,或“cpu”.该表显示了有效的硬件资源值。

资源 行动
“汽车” 如果GPU可用,请使用GPU。否则,请使用CPU。
“图形” 使用GPU。要使用GPU,你必须有并行计算工具箱和支持CUDA的NVIDIA GPU。如果没有合适的GPU,该函数将返回一个错误。有关支持的计算能力的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱)
“cpu” 使用CPU。

输出参数

全部折叠

在图像中检测到的物体的位置,返回为4矩阵定义边界框。每一行的bboxes包含形式为[xy宽度高度].这个向量指定了以像素为单位的边界框的左上角和大小。

检测分数,返回为1的向量。分数越高,表明对检测的信心越高。

边框的标签,返回为-by-1分类数组标签。在训练输入时,定义用于标记对象的类名探测器

介绍了R2016b