rcnnObjectDetector
使用R-CNN深学习检测器检测对象
描述
的rcnnObjectDetector
对象检测对象从一个图像,使用R-CNN检测器与卷积神经网络(地区)对象。检测对象在一个图像,通过训练检测器检测
函数。分类的图像区域,通过检测器classifyRegions
函数。
的使用rcnnObjectDetector
需要统计和机器学习的工具箱™和深度学习工具箱™。
当使用检测
或classifyRegions
功能与rcnnObjectDetector
使用CUDA®使英伟达®GPU是强烈推荐。GPU大大减少了计算时间。使用GPU的并行计算需要工具箱™。关于支持计算能力的信息,看到金宝appGPU计算的需求(并行计算工具箱)。
创建
创建一个rcnnObjectDetector
对象通过调用trainRCNNObjectDetector
函数与训练数据(需要深度学习工具箱)。
探测器= trainRCNNObjectDetector (trainingData…)
属性
网络
- - - - - -系列网络对象
SeriesNetwork
|DAGNetwork
系列表示卷积神经网络(CNN)的网络对象中使用R-CNN探测器,指定为一个SeriesNetwork
(深度学习工具箱)或DAGNetwork
(深度学习工具箱)对象。
RegionProposalFcn
- - - - - -自定义区域的建议方法
函数处理
自定义区域建议处理函数,指定为一个函数的名字。自定义函数proposalFcn
必须有以下函数形式:
[bboxes,分数]= proposalFcn(我)
输入参数我
是一个形象。函数必须返回矩形边框的米4数组。每一行的bboxes
包含一个研制出向量,x,y,宽度,高度),指定一个边界框的左上角和大小(以像素为单位)。函数必须返回一个为每一个边界框在一个分数米1的向量。更高的分数表明,边界框更有可能包含一个对象。
一会
- - - - - -对象类名称
单元阵列
对象类名称,指定为一个单元阵列。该数组包含对象类的名称R-CNN探测器被训练。
BoxRegressionLayer
- - - - - -边界框回归层
特征向量
这个属性是只读的。
边界框回归层名称,指定为一个特征向量。这个属性设置在训练使用
的观点BoxRegressionLayer
trainRCNNObjectDetector
。
对象的功能
检测 |
使用R-CNN深学习检测器检测对象 |
classifyRegions |
分类对象在图像区域使用R-CNN对象探测器 |
例子
火车R-CNN停车标志探测器
负荷训练数据和网络层。
负载(“rcnnStopSigns.mat”,“stopSigns”,“层”)
映像目录添加到MATLAB路径。
imDir = fullfile (matlabroot,“工具箱”,“愿景”,“visiondata”,…“stopSignImages”);目录(imDir);
设置网络训练选项使用mini-batch 32减少GPU内存使用量的大小。降低InitialLearningRate减少的速率网络参数改变。这是有益的在微调pre-trained网络和阻止网络改变过快。
选择= trainingOptions (“个”,…“MiniBatchSize”32岁的…“InitialLearnRate”1 e-6…“MaxEpochs”10);
火车R-CNN探测器。训练可以花几分钟来完成。
rcnn = trainRCNNObjectDetector (stopSigns层,选择,“NegativeOverlapRange”0.3 [0]);
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *培训R-CNN对象探测器以下对象类:* stopSign步骤1的3:从27日训练图像提取区域建议……。步骤2的3:在训练数据训练神经网络分类对象……| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | |时代迭代时间| Mini-batch | Mini-batch |基地学习| | | |(秒)| | |精度损失速率| | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 3 | 50 | 9.27 | 0.2895 | 96.88% | 0.000001 | | 100 | | 14.77 | 0.2443 | 93.75% | 0.000001 | | 150 | | 20.29 | 0.0013 | 100.00% | 0.000001 | | 200 | | 25.94 | 0.1524 | 96.88% | 0.000001 | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |网络训练完成。步骤3的3:训练边界框回归模型为每个对象类……100.00%……做的。R-CNN培训完成。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
测试R-CNN探测器测试图像。
img = imread (“stopSignTest.jpg”);[bbox,分数,标签]=检测(rcnn img,“MiniBatchSize”、32);
显示强大的检测结果。
[得分,idx] = max(分数);bbox = bbox (idx:);注释= sprintf (' % s:(信心= % f) '标签(idx),得分);detectedImg = insertObjectAnnotation (img,“矩形”bbox,注释);图imshow (detectedImg)
删除图像目录的路径。
rmpath (imDir);
恢复训练R-CNN对象探测器
恢复训练R-CNN对象探测器使用额外的数据。为了说明这个过程,地面实况数据的一半将用于最初训练检测器。然后,培训使用的所有数据恢复。
训练数据加载和初始化培训选项。
负载(“rcnnStopSigns.mat”,“stopSigns”,“层”)stopSigns。imageFilename = fullfile (toolboxdir (“愿景”),“visiondata”,…stopSigns.imageFilename);选择= trainingOptions (“个”,…“MiniBatchSize”32岁的…“InitialLearnRate”1 e-6…“MaxEpochs”10…“详细”、假);
火车R-CNN探测器地面真理的一部分。
:rcnn = trainRCNNObjectDetector (stopSigns(1:10),层,选择,“NegativeOverlapRange”0.3 [0]);
从探测器得到训练的网络层。当你通过网络层的数组trainRCNNObjectDetector
按原样使用,他们继续训练。
网络= rcnn.Network;层= network.Layers;
使用的所有训练数据恢复训练。
rcnnFinal = trainRCNNObjectDetector (stopSigns层,选项);
创建一个网络多级R-CNN对象检测
创建一个R-CNN对象探测器的两个对象类:狗和猫。
对象类= {“狗”,“猫”};
网络必须能够分类两种狗,猫,和“背景”类以被训练使用trainRCNNObjectDetector
。在这个例子中,添加了一个包括背景。
numClassesPlusBackground =元素个数(对象类)+ 1;
最后一个完全连接的网络层定义了类的数量,网络可以进行分类。组最后一个完全连接层有一个输出尺寸等于类+背景类的数量。
层= […imageInputLayer([1] 28日28日)convolution2dLayer (5、20) fullyConnectedLayer (numClassesPlusBackground);classificationLayer softmaxLayer () ()];
现在这些网络层可以用来训练一个R-CNN两级对象探测器。
使用保存网络R-CNN对象探测器
创建一个R-CNN对象探测器和设置它使用检查点保存网络。网络检查点保存在网络训练时,每一个时代trainingOptions
“CheckpointPath”参数设置。网络检查点是有用的,以防你的训练意外终止。
负荷训练数据停止的标志。
负载(“rcnnStopSigns.mat”,“stopSigns”,“层”)
添加图像文件的完整路径。
stopSigns。imageFilename = fullfile (toolboxdir (“愿景”),“visiondata”,…stopSigns.imageFilename);
设置“CheckpointPath”使用trainingOptions
函数。
checkpointLocation = tempdir;选择= trainingOptions (“个”,“详细”假的,…“CheckpointPath”,checkpointLocation);
火车R-CNN对象探测器和一些图片。
:rcnn = trainRCNNObjectDetector (stopSigns(1:3),层,选项);
加载一个检查点保存网络。
wildcardFilePath = fullfile (checkpointLocation,“convnet_checkpoint__ * .mat”);内容= dir (wildcardFilePath);
负载的一个检查站网络。
(1).folder filepath = fullfile(内容,内容(1). name);检查点=负载(filepath);checkpoint.net
ans = SeriesNetwork属性:层:[15×1 nnet.cnn.layer.Layer]
创建一个新的R-CNN对象探测器和设置它使用保存的网络。
rcnnCheckPoint = rcnnObjectDetector ();rcnnCheckPoint。RegionProposalFcn = @rcnnObjectDetector.proposeRegions;
检查点设置网络保存网络。
rcnnCheckPoint。网络= checkpoint.net
rcnnCheckPoint = rcnnObjectDetector属性:网络:[1×1 SeriesNetwork]一会:{“stopSign”“背景”}RegionProposalFcn: @rcnnObjectDetector.proposeRegions
引用
[1]Girshick,罗斯,et al。”丰富的特性准确的对象层次结构检测和语义分割。”2014年IEEE计算机视觉与模式识别会议IEEE 2014,页580 - 87。DOI.org (Crossref),https://doi.org/10.1109/CVPR.2014.81。
[2]Girshick,罗斯。“快速R-CNN。”2015年IEEE计算机视觉国际会议(ICCV),2015岁的IEEE 1440 - 48页。DOI.org (Crossref),https://doi.org/10.1109/ICCV.2015.169。
版本历史
介绍了R2016b
MATLAB명령
다음MATLAB명령에해당하는링크를클릭했습니다。
명령을실행하려면MATLAB명령창에입력하십시오。웹브라우저는MATLAB명령을지원하지않습니다。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。