最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

objectDetectorTrainingData

オブジェクト検出器用の学習データの作成

構文

trainingData = objectDetectorTrainingData(gTruth)
trainingData = objectDetectorTrainingData(gTruth,Name,Value)

説明

trainingData = objectDetectorTrainingData(gTruth) は、指定されたグラウンド トゥルースから学習データの table を返します。この table は、trainACFObjectDetectortrainRCNNObjectDetectortrainFastRCNNObjectDetectortrainFasterRCNNObjectDetector などの学習関数を使用して、オブジェクト検出器の学習に使用できます。

この関数は、複数の MATLAB® ワーカーを使用する並列計算をサポートします。Computer Vision System Toolbox の設定 ダイアログを使用して並列計算を有効にします。

trainingData = objectDetectorTrainingData(gTruth,Name,Value) は、学習データの table と、1 つ以上の名前と値のペアの引数で指定された追加オプションを返します。gTruthgroundTruth オブジェクトがビデオ ファイルまたはカスタム データ ソースを使用して作成された場合、任意の組み合わせの名前と値のペアの引数を指定できます。groundTruth オブジェクトがイメージの集合またはイメージ シーケンス データ ソースから作成された場合、名前と値のペアの引数 SamplingFactor しか指定できません。

すべて折りたたむ

学習データを使用し、ACF ベースの検出器を学習させます。

MATLAB パスにイメージを含むフォルダーを追加します。

imageDir = fullfile(matlabroot, 'toolbox', 'vision', 'visiondata', 'stopSignImages');
addpath(imageDir);

groundTruth データを読み込みます。グラウンド トゥルースには、一時停止標識と自動車のデータが含まれます。

load('stopSignsAndCarsGroundTruth.mat','stopSignsAndCarsGroundTruth')

ラベル定義を表示して、グラウンド トゥルースに含まれるラベル タイプを確認します。

stopSignsAndCarsGroundTruth.LabelDefinitions
ans=3×2 table
       Name         Type   
    __________    _________

    'stopSign'    Rectangle
    'carRear'     Rectangle
    'carFront'    Rectangle

学習用の一時停止標識データを選択します。

stopSignGroundTruth = selectLabels(stopSignsAndCarsGroundTruth,'stopSign');

車両オブジェクト検出器用の学習データを作成します。

trainingData = objectDetectorTrainingData(stopSignGroundTruth);
summary(trainingData)
Variables:

    imageFilename: 41x1 cell array of character vectors

    stopSign: 41x1 cell

ACF オブジェクト検出器に車両を学習させます。

acfDetector = trainACFObjectDetector(trainingData,'NegativeSamplesFactor',2);
ACF Object Detector Training
The training will take 4 stages. The model size is 34x31.
Sample positive examples(~100% Completed)
Compute approximation coefficients...Completed.
Compute aggregated channel features...Completed.
--------------------------------------------
Stage 1:
Sample negative examples(~100% Completed)
Compute aggregated channel features...Completed.
Train classifier with 42 positive examples and 84 negative examples...Completed.
The trained classifier has 19 weak learners.
--------------------------------------------
Stage 2:
Sample negative examples(~100% Completed)
Found 84 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 42 positive examples and 84 negative examples...Completed.
The trained classifier has 20 weak learners.
--------------------------------------------
Stage 3:
Sample negative examples(~100% Completed)
Found 84 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 42 positive examples and 84 negative examples...Completed.
The trained classifier has 54 weak learners.
--------------------------------------------
Stage 4:
Sample negative examples(~100% Completed)
Found 84 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 42 positive examples and 84 negative examples...Completed.
The trained classifier has 61 weak learners.
--------------------------------------------
ACF object detector training is completed. Elapsed time is 48.4379 seconds.

ACF 検出器をサンプル イメージでテストします。

I = imread('stopSignTest.jpg');
bboxes = detect(acfDetector,I);

検出したオブジェクトを表示します。

annotation = acfDetector.ModelName;
I = insertObjectAnnotation(I,'rectangle',bboxes,annotation);

figure 
imshow(I)

パスからイメージ フォルダーを削除します。

rmpath(imageDir); 

MATLAB パスにイメージ フォルダーを追加します。

imageDir = fullfile(matlabroot,'toolbox','driving','drivingdata','vehiclesSequence');
addpath(imageDir);

groundTruth データを読み込みます。

load vehicleGroundTruth.mat

車両オブジェクト検出器用の学習データを作成します。

trainingData = objectDetectorTrainingData(gTruth,'SamplingFactor',2);

ACF オブジェクト検出器に車両を学習させます。

acfDetector = trainACFObjectDetector(trainingData,'ObjectTrainingSize',[20 20]);
ACF Object Detector Training
The training will take 4 stages. The model size is 20x20.
Sample positive examples(~100% Completed)
Compute approximation coefficients...Completed.
Compute aggregated channel features...Completed.
--------------------------------------------
Stage 1:
Sample negative examples(~100% Completed)
Compute aggregated channel features...Completed.
Train classifier with 71 positive examples and 355 negative examples...Completed.
The trained classifier has 68 weak learners.
--------------------------------------------
Stage 2:
Sample negative examples(~100% Completed)
Found 76 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 71 positive examples and 355 negative examples...Completed.
The trained classifier has 120 weak learners.
--------------------------------------------
Stage 3:
Sample negative examples(~100% Completed)
Found 54 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 71 positive examples and 355 negative examples...Completed.
The trained classifier has 170 weak learners.
--------------------------------------------
Stage 4:
Sample negative examples(~100% Completed)
Found 63 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 71 positive examples and 355 negative examples...Completed.
The trained classifier has 215 weak learners.
--------------------------------------------
ACF object detector training is completed. Elapsed time is 19.0148 seconds.

ACF 検出器をテスト イメージでテストします。

I = imread('highway.png');
[bboxes, scores] = detect(acfDetector,I,'Threshold',1);

最も強い検出を選択します。

[~,idx] = max(scores);

検出したオブジェクトを表示します。

annotation = acfDetector.ModelName;
I = insertObjectAnnotation(I,'rectangle',bboxes(idx,:),annotation);

figure 
imshow(I)

パスからイメージ フォルダーを削除します。

rmpath(imageDir);

入力引数

すべて折りたたむ

グラウンド トゥルース データ。groundTruth オブジェクトの配列として指定します。groundTruth オブジェクトを使用して、既存のグラウンド トゥルース データからグラウンド トゥルース オブジェクトを作成できます。

並列計算を有効にして groundTruth のカスタム データ ソースを使用すると、リーダー関数は MATLAB ワーカーのプールを使用してデータ ソースからイメージを並列で読み取ると想定されます。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'SamplingFactor',5

グラウンド トゥルース データ ソースのイメージをサブサンプリングするための係数。'auto'、整数、または整数のベクトルとして指定します。サンプリング係数が N の場合、返される学習データには、ラベル データが空のグラウンド トゥルース イメージを無視し、グラウンド トゥルース データ ソースのイメージが N 個おきに含まれます。

SamplingFactor適用されるサンプリング係数
'auto'サンプリング係数 N は、タイムスタンプ付きのデータ ソースの場合は 5、イメージの集合の場合は 1 です。
整数gTruth のすべてのグラウンド トゥルース データ ソースは、同一のサンプリング係数 N でサンプリングされます。
整数のベクトルgTruth の k 番目のグラウンド トゥルース データ ソースは、サンプリング係数 N(k) でサンプリングされます。

抽出されたイメージを書き込むフォルダー名。string スカラーまたは文字ベクトルとして指定します。指定されたフォルダーが存在している必要があります。また、そのフォルダーへの書き込み権限が必要です。このプロパティは、ビデオ ファイルまたはカスタム データ ソースを使用して作成された groundTruth オブジェクトにのみ適用されます。

イメージ ファイル形式。string スカラーまたは文字ベクトルとして指定します。ファイル形式は imwrite によってサポートされていなければなりません。この引数は、ビデオ ファイルまたはカスタム データ ソースを使用して作成された groundTruth オブジェクトにのみ適用されます。

出力イメージ ファイル名に適用する接頭辞。string スカラーまたは文字ベクトルとして指定します。イメージ ファイルは次のように命名されます。

<name_prefix><image_number>.<image_format>

既定の値では、イメージ抽出元のデータ ソースの名前 strcat(sourceName,'_') を使用します。このプロパティは、ビデオ ファイルまたはカスタム データ ソースを使用して作成された groundTruth オブジェクトにのみ適用されます。

MATLAB コマンド ラインに学習の進行状況を表示します。true または false として指定します。このプロパティは、ビデオ ファイルまたはカスタム データ ソースを使用して作成された groundTruth オブジェクトにのみ適用されます。

出力引数

すべて折りたたむ

学習データ。2 つ以上の列を含む table として返されます。table の 1 列目には、イメージ ファイルの名前が含まれています。残りの列には、グラウンド トゥルース オブジェクト入力 gTruth 内で検出された四角形 ROI ラベルのオブジェクトの位置が含まれます。四角形 ROI ラベルは、各イメージ内のオブジェクトの位置を指定する [x,y,width,height] 境界ボックスでなければなりません。四角形 ROI ラベルに対応するラベルのみが trainingData に返されます。他のラベルは無視されます。出力 table は、入力 gTruth オブジェクトに存在するサブラベルや属性データを無視します。

R2017a で導入