主要内容

trainRCNNObjectDetector

火车一个R-CNN深学习对象探测器

描述

例子

探测器= trainRCNNObjectDetector (trainingData,网络,选项)火车一个R-CNN与卷积神经网络(地区)基于对象探测器。函数使用深学习训练检测器检测多个对象类。

这个实现R-CNN不训练SVM分类器为每一个对象类。

这个函数要求您有很深的学习工具箱™和统计和机器学习的工具箱™。也建议您使用CUDA并行计算工具箱™®使英伟达®GPU。关于支持计算能力的信息,看到金宝appGPU计算的需求(并行计算工具箱)

探测器= trainRCNNObjectDetector (___,名称,值)返回一个探测器对象与指定的一个或多个可选的输入属性名称,值对参数。

探测器= trainRCNNObjectDetector (___”,RegionProposalFcn”,proposalFcn)选择火车R-CNN探测器使用自定义区域建议功能。

(探测器,信息)= trainRCNNObjectDetector (___)还返回培训进展的信息,如培训损失和准确性,为每个迭代。

探测器= trainRCNNObjectDetector (___,名称,值)使用指定的一个或多个额外的选项名称,值对参数和任何以前的输入。

例子

全部折叠

负荷训练数据和网络层。

负载(“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对象探测器使用额外的数据。为了说明这个过程,地面实况数据的一半将用于最初训练检测器。然后,培训使用的所有数据恢复。

训练数据加载和初始化培训选项。

负载(“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对象探测器的两个对象类:狗和猫。

对象类= {“狗”,“猫”};

网络必须能够分类两种狗,猫,和“背景”类以被训练使用trainRCNNObjectDetector。在这个例子中,添加了一个包括背景。

numClassesPlusBackground =元素个数(对象类)+ 1;

最后一个完全连接的网络层定义了类的数量,网络可以进行分类。组最后一个完全连接层有一个输出尺寸等于类+背景类的数量。

层= [imageInputLayer([1] 28日28日)convolution2dLayer (5、20) fullyConnectedLayer (numClassesPlusBackground);classificationLayer softmaxLayer () ()];

现在这些网络层可以用来训练一个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

输入参数

全部折叠

贴上地面实况图像,用两个或两个以上的列指定为一个表。

如果你使用一个表,表中必须有两个或两个以上的列。第一列的表必须包含图像文件的名称和路径。图像必须灰度或真彩(RGB),他们可以在任何支持的格式金宝appimread。剩余的每个列必须包含一个细胞向量4矩阵代表一个对象类,如车辆,,或停车标志。列包含第4单元阵列的两倍边界框的格式(x,y,宽度,高度]。格式指定边界框的左上角位置和大小在相应的形象。创建一个地面真值表,您可以使用图片标志应用程序或贴标签机视频应用。创建一个表的训练数据生成的地面实况,使用objectDetectorTrainingData函数。

表变量名定义对象类名。创建地面真值表,使用图片标志应用。盒子小于32-by-32不是用于培训。

网络,作为一个指定SeriesNetwork(深度学习工具箱)一个数组的(深度学习工具箱)对象,layerGraph(深度学习工具箱)对象,或通过网络名称。网络训练分类中定义的对象类trainingData表。的SeriesNetwork(深度学习工具箱),(深度学习工具箱),layerGraph(深度学习工具箱)深度学习工具箱对象是可用的。

  • 当你指定网络SeriesNetwork一个数组的对象,或通过网络名称,网络会自动转换为R-CNN网络通过添加新的分类和回归层支持对象检测。金宝app

  • 的数组(深度学习工具箱)对象必须包含一个分类层支持对象类的数量,加上背景类。金宝app使用这个输入类型定制每一层的学习速率。一个数组的例子(深度学习工具箱)对象:

    层= [imageInputLayer([3] 28日28日)convolution2dLayer (5 [5], 10) reluLayer () fullyConnectedLayer (10) softmaxLayer () classificationLayer ());

  • 当你指定网络SeriesNetwork,数组,或网络的名字,卷积和全层的权值初始化“narrow-normal”

  • 网络名称必须是以下有效的网络名称。您还必须安装相应的插件。

  • LayerGraph对象必须是一个有效的R-CNN对象检测网络。你也可以使用LayerGraph对象来训练一个自定义R-CNN网络。

看到开始使用R-CNN、快速R-CNN和R-CNN更快想要了解更多关于如何创建一个R-CNN网络。

训练选项,返回的trainingOptions(深度学习工具箱)从深度学习工具箱函数。指定网络培训解决者和其他选项,使用trainingOptions

请注意

trainRCNNObjectDetector不支持这些训练选项金宝app:

  • ValidationData,ValidationFrequency,或ValidationPatience选项

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“PositiveOverlapRange”,(0.5 - 1)

积极的训练样本比率范围的边界框重叠,指定为逗号分隔两人组成的“PositiveOverlapRange和一个双元素向量。向量包含值区间[0,1]。重叠区域的建议与地面真理边界框指定范围内作为积极的训练样本。

重叠率的使用PositiveOverlapRangeNegativeOverlapRange被定义为:

一个 r e 一个 ( 一个 B ) 一个 r e 一个 ( 一个 B )


一个B边界框。

消极训练样本比率范围的边界框重叠,指定为逗号分隔两人组成的“NegativeOverlapRange和一个双元素向量。向量包含值区间[0,1]。重叠区域的建议与地面真理边界框指定范围内作为消极的训练样本。

最大数量的最强的地区建议用于生成训练样本,指定为逗号分隔两人组成的NumStrongestRegions”和一个整数。降低这个值加快处理时间,尽管这样做减少训练精度。建议使用所有地区,设置这个值

自定义区域建议处理函数,指定为逗号分隔两人组成的RegionProposalFcn和函数名。如果你不指定一个自定义区域建议功能,默认的盒子边缘算法的变体[3],设置在rcnnObjectDetector,使用。一个自定义proposalFcn必须有以下函数形式:

[bboxes,分数]= proposalFcn(我)

输入,,是一个图像中定义groundTruth表。函数必须返回矩形边框的4数组。每一行的bboxes包含一个研制出向量,x,y,宽度,高度),指定一个边界框的左上角和大小(以像素为单位)。函数必须返回一个为每一个边界框在一个分数1的向量。更高的分数表明,边界框更有可能包含一个对象。分数是用来选择最强的地区,您可以指定NumStrongestRegions

盒子回归层名称,指定为逗号分隔两人组成的“BoxRegressionLayer”,一个特征向量。有效的值“汽车”或者在网络输入层的名称。这一层的输出激活被用作功能训练改进检测边界框的回归模型。

如果名字是“汽车”,然后trainRCNNObjectDetector自动选择一层从输入网络根据输入网络的类型:

  • 如果输入网络是一个SeriesNetwork或数组对象,那么过去卷积函数选择层。

  • 如果输入网络是一个LayerGraph,那么函数选择的来源,最后完全连接层。

检测器训练实验监测、指定为一个experiments.Monitor(深度学习工具箱)为使用对象实验管理器(深度学习工具箱)应用。你可以用这个对象的进步跟踪培训,培训结果表,更新信息字段的记录值指标使用的培训,和生产培训的情节。

在训练监控信息:

  • 在每个迭代训练损失。

  • 在每个迭代训练精度。

  • 训练均方根误差(RMSE)盒子回归层。

  • 在每个迭代学习速率。

输出参数

全部折叠

训练R-CNN-based对象探测器,作为一个返回rcnnObjectDetector对象。你可以训练一个R-CNN检测器检测多个对象类。

培训信息,作为结构与以下字段返回。每个字段是一个数字向量与每训练迭代的一个元素。没有在一个特定的迭代计算出来的值表示

  • TrainingLoss在每一次迭代时——培训损失。这是分类和回归的组合用于训练R-CNN网络损失。

  • TrainingAccuracy在每一次迭代时,训练集精度

  • BaseLearnRate在每一次迭代时,学习速率

限制

  • 这个实现R-CNN不训练SVM分类器为每一个对象类。

提示

  • 为训练加速数据预处理,trainRCNNObjectDetector自动创建并使用一个平行的根据您的池平行的偏好设置。这需要并行计算工具箱。

  • VGG-16、VGG-19 resnet - 101和Inception-ResNet-v2大型模型。训练和大图片可能产生“内存溢出”错误。减少这些错误,手动调整图像的边界框地面实况数据之前调用trainRCNNObjectDetector

  • 这个函数支持转移学习。金宝app当一个网络输入的名字,如“resnet50”,那么软件自动将网络转换成一个有效的基于pretrained R-CNN网络模型resnet50(深度学习工具箱)模型。另外,手动指定一个自定义R-CNN网络使用LayerGraph(深度学习工具箱)从一个pretrained DAG网络。看到创建R-CNN对象检测网络

  • 使用trainingOptions(深度学习工具箱)函数来启用或禁用详细打印。

引用

[1]Girshick, R。,J. Donahue, T. Darrell, and J. Malik. “Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation.”《IEEE计算机视觉与模式识别会议。2014年,页580 - 587。

[2]Girshick, r .“快速R-CNN。”《IEEE计算机视觉国际会议。2015年,页1440 - 1448。

[3]Zitnick c·劳伦斯,p .美元。“边缘盒:从边缘定位对象的建议。”电脑Vision-ECCV,激飞国际出版。2014年,页391 - 405。

扩展功能

版本历史

介绍了R2016b