主要内容

探测

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

描述

bboxes.=检测(探测器一世检测图像中的对象一世使用R-CNN(带有卷积神经网络的区域)对象检测器。检测到的对象的位置作为一组边界框返回。

使用此功能时,使用CUDA®启用nvidia.®强烈推荐GPU。GPU显着降低计算时间。GPU的使用需要并行计算工具箱™。有关支持的计算能力的信息,请参阅金宝appGPU通金宝app过发布支持(并行计算工具箱)

[bboxes.得分] =检测(探测器一世还返回每个边界框的检测分数。

例子

[___标签] =检测(探测器一世还使用前面的语法中的任一种返回分配给边界框的分类标签数组。用于对象类的标签在使用过程中定义trainrcnnobjectdetector.功能。

[___] =检测(___ROI.检测由此指定的矩形搜索区域内的对象ROI.

[___] =检测(___名称,价值使用一个或多个指定选项名称,价值对论点。例如,检测(探测器,i,'numstongstregions',1000)将最强的地区建议限制为1000。

例子

全部收缩

加载培训数据和网络层。

加载('rcnnstopsigns.mat''stopsigns''层'

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

imdir = fullfile(matlabroot,'工具箱''想象''VisionData'......'stopsignimages');addpath(imdir);

设置网络培训选项以使用迷你批量大小为32,以减少GPU内存使用情况。降低InitialLearningRate以降低网络参数改变的速率。当微调预先调整的网络并阻止网络变得太快时,这是有益的。

选项=培训选项('sgdm'......'minibatchsize',32,......'italllearnrate',1e-6,......'maxepochs',10);

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

rcnn = thathrcnnobjectdetector(stopsigns,图层,选项,'负极的贪婪',[0 0.3]);
*******************************************************************训练an R-CNN Object Detector for the following object classes: * stopSign Step 1 of 3: Extracting region proposals from 27 training images...done. Step 2 of 3: Training a neural network to classify objects in training data... |=========================================================================================| | Epoch | Iteration | Time Elapsed | Mini-batch | Mini-batch | Base Learning| | | | (seconds) | Loss | Accuracy | Rate | |=========================================================================================| | 3 | 50 | 9.27 | 0.2895 | 96.88% | 0.000001 | | 5 | 100 | 14.77 | 0.2443 | 93.75% | 0.000001 | | 8 | 150 | 20.29 | 0.0013 | 100.00% | 0.000001 | | 10 | 200 | 25.94 | 0.1524 | 96.88% | 0.000001 | |=========================================================================================| Network training complete. Step 3 of 3: Training bounding box regression models for each object class...100.00%...done. R-CNN training complete. *******************************************************************

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

img = imread('stopsigntest.jpg');[bbox,score,label] =检测(rcnn,img,'minibatchsize',32);

显示最强的检测结果。

[得分,Idx] = Max(得分);bbox = bbox(idx,:);注释= sprintf('%s :(信心=%f)',标签(IDX),得分);detectedimg = InsertObjectAnnotation(IMG,'矩形',bbox,注释);图imshow(detectedimg)

从路径中删除图像目录。

rmpath(imdir);

输入参数

全部收缩

R-CNN对象检测器,指定为一个rcnobjectdetector目的。要创建此对象,请调用trainrcnnobjectdetector.函数培训数据作为输入。

输入图像,指定为一个H-经过-W.-经过-C数字图像数组。图像必须是真实的,非问题,灰度或RGB图像。

  • H: 高度

  • W.: 宽度

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

检测器对输入图像的范围敏感。因此,确保输入图像范围类似于用于训练检测器的图像的范围。例如,如果探测器训练uint8.图像,将此输入图像重新归类到范围[0,255]IM2UINT8.要么rescale.功能。该输入图像的大小应与培训中使用的图像的大小相媲美。如果这些尺寸非常不同,检测器难以检测对象,因为输入图像中的对象的比例与检测器训练以识别的对象的比例不同。考虑你是否使用过SmallestimageMention.培训期间的财产修改培训图像的大小。

数据类型:uint8.|uint16|int16|双倍的|单身的|逻辑

搜索兴趣区域,指定为[Xy宽度高度矢量。矢量指定以像素为单位的左上角和大小。

名称值对参数

指定可选的逗号分离对名称,价值论点。名称是参数名称和价值是相应的价值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'numstongstregions',1000

最大最强的地区建议数,指定为逗号分隔对'numstrontearch'和一个整数。减少此值以加速检测精度成本的处理时间。要使用所有区域提案,请将此值指定为INF.

为每个检测到的对象选择最强定的边界框,指定为逗号分隔的对组成'Selectstrongest'和任何一种真的要么错误的

  • 真的- 返回每个对象最强大的边界框。要选择这些框,探测打电话给selectstrongestbboxmulticlass.功能,它使用非混中抑制来基于其分数消除重叠边界框。

    例如:

    SelectStrongestBoxMulticlass(Bbox,Scores,......'ratiotype''min'......'重叠阈值',0.5);

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

用于R-CNN数据处理的较小批次的大小,指定为逗号分隔的配对组成'minibatchsize'和一个整数。较大的批量尺寸导致更快的处理,但占用更多内存。

运行探测器的硬件资源,指定为逗号分隔对组成'executionenvironment''汽车''GPU', 要么'中央处理器'。该表显示了有效的硬件资源值。

资源 行动
'汽车' 如果它可用,请使用GPU。否则,使用CPU。
'GPU' 使用GPU。要使用GPU,您必须具有并行计算工具箱和CUDA启用的NVIDIA GPU。如果不可用合适的GPU,则该函数返回错误。有关支持的计算能力的信息,请参阅金宝appGPU通金宝app过发布支持(并行计算工具箱)
'中央处理器' 使用CPU。

输出参数

全部收缩

在图像中检测到的物体的位置,作为返回m-By-4矩阵定义m边界框。每一排bboxes.包含表格的四元素矢量[Xy宽度高度]。此矢量指定像素中的边界框的左上角和大小。

检测分数,作为一个返回m-by-1矢量。得分更高表示对检测的置信度较高。

边界框的标签,作为一个返回m- 1个分类数组m标签。您定义用于在培训输入时标记对象的类名探测器

介绍在R2016B.