主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

fasterRCNNObjectDetector

快R-CNN深層学習の検出器を使用したオブジェクトの検出

説明

fasterRCNNObjectDetectorオブジェクトは更快R-CNN与卷积神经网络(地区)オブジェクト検出器を使用して,イメージからオブジェクトを検出します。イメージ内のオブジェクトを検出するには,学習済みの検出器を関数检测に渡します。

関数检测を使用する場合,以3.0计算能力上のCUDA®対応 英伟达®gpuの使用がが推奨されます。このgpuは计算时间を大幅短缩します.gpuをを使するは,并行计算工具箱™が必要です。

作成

学習データを指定して関数trainFasterRCNNObjectDetectorを呼び出して、fasterRCNNObjectDetectorオブジェクトを作成します(深度学习工具箱™が必要)。

检测器=列车FastErrorCNNObjectDetector(列车数据,…)

プロパティ

すべて展开する

このプロパティは読み取り専用です。

分類モデルの名前。文字ベクトルまたは string スカラーとして指定します。既定では、名前は関数trainFasterRCNNObjectDetectorで指定されたTrainingData.テーブルの 2.列目の見出しに設定されます。この名前はfasterRCNNObjectDetectorオブジェクトの作用成后に変更できます。

このプロパティは読み取り専用です。

学習済みの 快速R-CNNオブジェクト検出ネットワーク。DAGNetwork(深度学习工具箱)オブジェクトとして指定します。このオブジェクトには,快R-CNN検出器内で使用される畳み込みニューラルネットワークを定義する層が格納されます。

このプロパティは読み取り専用です。

アンカーボックスのサイズ。M行2列の行列として指定します。ここで、各行の形式は [height width] です。この値は学習時に設定されます。

このプロパティは読み取り専用です。

更快的R-CNN検出器が検出対象として学習済みのオブジェクト クラスの名前。细胞配列として指定します。このプロパティは関数trainFasterRCNNObjectDetectorの入力引数TrainingData.によって设定さます。クラス名をTrainingData.テーブルの一切として指定ますます。

このプロパティは読み取り専用です。

[高度宽度]〖l-cnn〗サポートされるれるとしてとしてし。

オブジェクト関数

检测 使用更快的R-CNN对象检测器检测对象

すべて折りたたむ

この例では更快R-CNN与卷积神经网络(地区)オブジェクト検出器を学習させる方法を説明します。

深層学習は,ロバストなオブジェクト検出器に学習させるために使用できる強力な機械学習手法です。オブジェクト検出の深層学習手法には、Faster R-CNN や You Only Look Once (YOLO) v2 などの複数の手法が存在します。この例では、関数trainFasterRCNNObjectDetectorを使用して更快R-CNN車両検出器を学習させます。詳細については,深層学習を使用したオブジェクトの検出を参照してください。

事前学習済みの検出器のダウンロード

学習の完了を待たなくて済むように、事前学習済みの検出器をダウンロードします。検出器に学習させる場合は、変数doTrainingAndEvalを 真的に設定します。

doTrainingAndEval = false;如果~doTrainingAndEval&&~存在('FasterrRcnnResnet50EndToEndToEndVehicleExample.mat',“文件”)disp(“下载预训练探测器(118 MB)……”);pretrainedURL =“//www.tatmou.com/金宝appsupportfiles/vision/data/fasterRCNNResNet50EndToEndVehicleExample.mat”;websave ('FasterrRcnnResnet50EndToEndToEndVehicleExample.mat',训练前;结束

データセットの読み込み

この例では,295个のイメージを含む小さなラベル付きデータセットししははます。各各には,1または2个のラベル付けれ车両インスタンスがれています。小さなデータセットれ。小さなデータは更快的r-cnnの学习手顺を调べるうえでますが,実际にロバストな検出を习习させるにははくのラベル付けさされが必要になりなり必要になりなりますますがイメージを解冻解冻しが必要イメージを解冻ししがのイメージ解冻解冻します。

解压缩vehicleDatasetImages.zip数据=负载(“vehicleDatasetGroundTruth.mat”);vehicleDataset=data.vehicleDataset;

車両データは 2.列の 桌子に保存されています。1.列目にはイメージ ファイルのパスが含まれ、2.列目には車両の境界ボックスが含まれています。

データセットは学習、検証、テスト用のセットに分割します。データの 60% を学習用に、10% を検証用に、残りを学習済みの検出器のテスト用に選択します。

rng(0) shuffledIndices = randperm(height(vehicleDataset)));idx = floor(0.6 * height(vehicleDataset));trainingIdx = 1: idx;trainingDataTbl = vehicleDataset (shuffledIndices (trainingIdx):);validationIdx = idx+1: idx+1 + floor(0.1 * length(shuffledIndices));validationDataTbl = vehicleDataset (shuffledIndices (validationIdx):);testdx = validationIdx(end)+1: length(shuffledIndices);testDataTbl = vehicleDataset (shuffledIndices (testIdx):);

imageageAtastore.およびBoxlabeldata商店をを使し,学院および评価中にとラベルデータを読み込むデータをを

imdstrain = imageageataStore(trainingDatatbl {:,“imageFilename”});bldsTrain = boxLabelDatastore (trainingDataTbl (:,“汽车”));imdsValidation=imageDatastore(validationDataTbl{:,“imageFilename”});bldsValidation = boxLabelDatastore (validationDataTbl (:,“汽车”));imdstest = imageageataStore(testdatatbl {::,“imageFilename”});bldsTest = boxLabelDatastore (testDataTbl (:,“汽车”));

イメージイメージデータストアとボックスボックスデータストアをを组みわせわせ

培训数据=联合收割机(imdsTrain,bldsTrain);验证数据=联合收割机(imdsValidation,bldsValidation);测试数据=联合收割机(imdsTest,bldsTest);

学習イメージとボックス ラベルのうちの 1.つを表示します。

data =阅读(trainingData);I=data{1};bbox=data{2};annotatedImage=insertShape(I,“矩形”,bbox);annotatedImage=imresize(annotatedImage,2);地物imshow(annotatedImage)

更快的R-CNN検出ネットワークの作成

更快的R-CNNオブジェクト検出ネットワークは、特徴抽出ネットワークと、その後に続く 2.つのサブネットワークによって構成されます。通常、特徴抽出ネットワークは、ResNet-50や 初始版本3などの事前学習済みの 有线电视新闻网です。特徴抽出ネットワークの後に続く 1.つ目のサブネットワークは、オブジェクト提案 (オブジェクトが存在する可能性が高いイメージ内の領域) を生成するよう学習させた領域提案ネットワーク (RPN)です。2.つ目のサブネットワークは、各オブジェクト提案の実際のクラスを予測するように学習しています。

通常、特徴抽出ネットワークは事前学習済みの 有线电视新闻网です (詳細については事前学習済みの深層ニューラルネットワーク(深度学习工具箱)を参照)。この例では特徴抽出にResNet-50を使用します。用途の要件によって,MobileNet v2やResNet-18など,その他の事前学習済みのネットワークも使用できます。

fasterRCNNLayersを使用して,事前学習済みの特徴抽出ネットワークが自動的に指定された更快R-CNNネットワークを作成します。fasterRCNNLayersでは 更快的R-CNNネットワークをパラメーター化する以下の複数の入力を指定する必要があります。

  • ネットワーク入力サイズ

  • アンカーボックス

  • 特徴抽出ネットワーク

最初に,ネットワークネットワーク力サイズを指定ますますますます。ネットワークネットワーク力サイズ选択する际ははは,ネットワーク自体の実行必要な小屋,学校イメージイメージサイズ,および选択しのでデータをするによってによってサイズデータコストを考虑します。可以なな场サイズに,ネットワークに必要な入に,ネットワークに必要な入サイズより大厦ネットワーク入力量サイズ选択実行。例の行にかかる计算削减実には计算コストするには计算コストネットワークのななな最最な最な最ななななししししししししし

InputSize = [224 224 3];

この例で使使使使イメージはは224行224列より大厦なサイズ持つため,学校习前前处手顺イメージサイズを変更しばなりませんしなりません。

次に,estimateAnchorBoxesを使用して、学習データ内のオブジェクトのサイズに基づいてアンカー ボックスを推定します。学習前のイメージのサイズ変更を考慮するには、アンカー ボックスを推定する学習データのサイズを変更します。变换を使用して学習データの前処理を行い、アンカー ボックスの数を定義してアンカー ボックスを推定します。

preprocessedtrainingdata =转换(TrainingData,@(数据)预处理数据(数据,inputSize));Numanchors = 3;anchorboxes = extimateanchorboxes(Preprocessedtrainingdata,Numanchors)
anchorBoxes =3×2136 119 55 48 157 128

アンカー ボックスの選択の詳細は、学習データからのアンカーボックスの推定(电脑Vision Toolbox™)およびアンカー ボックスによるオブジェクトの検出を参照してください。

次に,resnet50を使用して事前学習済みの ResNet-50モデルを読み込みます。

featureExtractionNetwork=resnet50;

特徴抽出層として“激活\u 40\u relu”ををします。この特价抽出层抽出层,系系量出し。このダウンサンプリングの量,空间分享到抽出れる徴のとの适切なオフオフです(ネットワーク。最适なな抽出层ますががな徴抽出层ますになな抽出层ますにはは経験抽出层必要必要するには的的必要必要がには的的的必要するにはは的的必要するには的的的ににには的的にににには的的は的ははには的的た徴徴的ははは的的ははははははははははははははははは徴徴徴徴は徴ははは徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴徴分析を使用すると,ネットワーク内に存在する可能性がある他の特徴抽出層の名前を検索できます。

FeatureLayer =“激活\u 40\u relu”

検出するクラスの数を定義します。

numclasses =宽度(车辆达到)-1;

更快的R-CNNオブジェクト検出ネットワークを作成します。

LGRAPHE=fasterRCNNLayers(输入大小、NumClass、锚箱、featureExtractionNetwork、featureLayer);

深度学习工具箱™ から分析またはディープネットワークデザイナーを使用してネットワークを可視化できます。

更快的r-cnnネットワークアーキテクチャをより详细制御制御必要ががあるは,ディープネットワークデザイナー使使てr-cnn検出ネットワークをででし。R-CNN、快速R-CNNおよび更快R-CNN入門を参照してください。

データ拡張

データ拡張は、学習中に元のデータをランダムに変換してネットワークの精度を高めるために使用されます。データ拡張を使用すると、ラベル付き学習サンプルの数を実際に増やさずに、学習データをさらに多様化させることができます。

变换を使用して、イメージと関連するボックス ラベルを水平方向にランダムに反転させることによって学習データを拡張します。データ拡張は、テスト データと検証データには適用されないことに注意してください。理想的には、テスト データと検証データは元のデータを代表するもので、バイアスのない評価を行うために変更なしで使用されます。

augmentedTrainingData=转换(trainingData,@augmentData);

同じイメージを複数回読み取り、拡張された学習データを表示します。

增强数据=单元(4,1);对于k=1:4 data=read(augmentedTrainingData);augmentedData{k}=insertShape(data{1}),“矩形”、数据{2});重置(augmentedTrainingData);结束图蒙太奇(增强数据,'毗邻', 10)

学習データの前処理

拡张された学习データと検证データををし习习习にます。

trainingData =变换(augmentedTrainingData @(数据)preprocessData(数据、inputSize));validationData =变换(validationData @(数据)preprocessData(数据、inputSize));

前致理性済みのデータを読み取ります。

data =阅读(trainingData);

イメージイメージとボックスのの境界を表示しし

I=data{1};bbox=data{2};annotatedImage=insertShape(I,“矩形”,bbox);annotatedImage=imresize(annotatedImage,2);地物imshow(annotatedImage)

更快的R-CNNの学習

trainingOptionsを使用してネットワーク学習オプションを指定します。前処理済みの検証データに“ValidationData”を設定します。“CheckpointPath”,学校,学院プロセス中にに习习さます検出保存できますでをできやますで习が中间断れた习,保存保存しされたた,保存断断たたた,保存保存断さたた,保存したれたた,保存保存たを再开できます。

选择= trainingOptions ('sgdm',...“MaxEpochs”10...“MiniBatchSize”2,...“初始学习率”1 e - 3,...“CheckpointPath”,Tempdir,...“ValidationData”,验证数据);

doTrainingAndEvalがtrueのの合,trainFasterRCNNObjectDetectorを使用して更快R-CNNオブジェクト検出器を学習させます。そうでない場合は,事前学習済みのネットワークを読み込みます。

如果doTrainingAndEval%培训更快的R-CNN探测器。% *调整负重叠范围和正重叠范围,以确保%训练样本与地面真相紧密重叠。[探测器,信息] = trainfasterrcnnobjectdetector(trainingdata,lgraph,选项,...“负超范围”, 0.3 [0],...“正超范围”(0.6 - 1));其他的%以负载预训练检测器为例。pretrained =负载('FasterrRcnnResnet50EndToEndToEndVehicleExample.mat'); 检测器=预训练检测器;结束

この例は、12GBメモリ搭載の Nvidia(TM)Titan X GPUで検証済みです。ネットワークの学習には約 20分かかりました。学習時間は使用するハードウェアによって異なります。

简介なチェックとして,1つのテストイメージに対して検出実実サイズますますて习イメージと同じてにししししししし

I=imread(testDataTbl.imageFilename{1});I=imresize(I,inputSize(1:2));[bboxes,scores]=detect(detector,I);

結果を表示します。

I=插入对象注释(I,“矩形”,bboxes,得分);图imshow(i)

テスト セットを使用した検出器の評価

大规模なイメージセットで习済みのオブジェクト検出検出をし,パフォーマンスを测定ます。计算机vision toolbox™にに,平台综合率(评估要求) や対数平均ミス率 (评估法律)などの一般的なメトリクスを測定するオブジェクト検出器の評価関数が用意されています。この例では,平均適合率メトリクスを使用してパフォーマンスを評価します。平均適合率は,検出器が正しい分類を実行できること(適合率)と検出器がすべての関連オブジェクトを検出できること(再現率)を示す単一の数値です。

学習データと同じ前処理変換をテストデータに適用します。

testdata = transform(testdata,@(data)preprocessdata(数据,inputsize));

すべてのテスト イメージに対して検出器を実行します。

如果dotrainingandeval检测=检测(检测器,testdata,'minibatchsize',4);其他的%以负载预训练检测器为例。pretrained =负载('FasterrRcnnResnet50EndToEndToEndVehicleExample.mat');检测结果=预训练。检测结果;结束

平均適合率メトリクスを使用してオブジェクト検出器を評価します。

[ap,召回,精度]=评估检测精度(检测结果,检测数据);

適合率/再現率 (公共关系)の曲線は、さまざまなレベルの再現率における検出器の適合率を示しています。すべてのレベルの再現率で適合率が 1.になるのが理想的です。より多くのデータを使用すると平均適合率を向上できますが、学習に必要な時間が長くなる場合があります。公共关系曲線をプロットします。

图表(召回率、精度)xlabel(“回忆”) ylabel (“精确性”) 网格头衔(斯普林特)('平均精度= %.2f'(美联社)

サポート関数

函数data = augmentData(数据)水平随机翻转图像和边框。tform=随机仿射2d(“XReflection”,true);rout=affineOutputView(大小(数据{1}),tform);数据{1}=imwarp(数据{1},tform,'OutputView',溃败);数据{2} = bboxwarp(数据{2},tform,rut);结束函数targetSize data = preprocessData(数据)%调整图像和包围框的大小为targetSize。scale = targetsize(1:2)./大小(数据{1},[1 2]);数据{1} = IMResize(数据{1},targetsize(1:2));数据{2} = bboxresize(数据{2},比例);结束

参考文献

[1] 任、S、何克、R.格什克和J.孙。“更快的R-CNN:通过区域建议网络实现实时目标检测。”模式分析和机器智能的IEEE交易.第39卷第6期,2017年6月,第1137-1149页。

[2] Girshick,R.,J.Donahue,T.Darrell和J.Malik.“用于精确目标检测和语义分割的丰富特征层次。”2014年IEEE计算机视觉和模式识别会议的诉讼程序.哥伦布,哦,2014年6月,第580-587页。

[3] Girshick,R.“Fast R-CNN”。2015年IEEE计算机视觉国际会议记录.智利圣地亚哥,2015年12月,第1440-1448页。

[4] 边缘盒:从边缘定位对象建议欧洲计算机视觉会议瑞士苏黎世,2014年9月,第391-405页。

J. R. R., K. E. A. van de Sande, T. Gevers, and A. W. M. Smeulders。"物体识别的选择性搜索"国际计算机愿景.Vol。104,第2页,2013年9月,第154-171页。

R2017aで導入