Main Content

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

trainACFObjectDetector

ACF オブジェクト検出器を学習させる

説明

detector = trainACFObjectDetector(trainingData) は、学習済みの集合チャネル特徴 (ACF) オブジェクト検出器を返します。この関数では、trainingData table で与えられたイメージ内オブジェクトの陽性インスタンスを使用し、学習中に自動的にイメージから陰性インスタンスを収集します。グラウンド トゥルース table を作成するには、イメージ ラベラーまたはビデオ ラベラー アプリを使用します。

detector = trainACFObjectDetector(trainingData,Name,Value) は、Name,Value ペアの引数を 1 つ以上指定したオプションを追加で使用して detector オブジェクトを返します。

すべて折りたたむ

trainACFObjectDetector と学習イメージを使用して、一時停止標識を検出できる ACF オブジェクト検出器を作成します。検出器を個別のイメージでテストします。

学習データを読み込みます。

load('stopSignsAndCars.mat')

一時停止標識のグラウンド トゥルースを選択します。これらのグラウンド トゥルースは、イメージに含まれる一時停止標識の既知の位置のセットです。

stopSigns = stopSignsAndCars(:,1:2);

イメージ ファイルの絶対パスを追加します。

stopSigns.imageFilename = fullfile(toolboxdir('vision'),...
    'visiondata',stopSigns.imageFilename);

ACF 検出器を学習させます。'Verbose',falseName,Value のペアとして指定することで、学習プロセスの出力をオフにできます。

acfDetector = trainACFObjectDetector(stopSigns,'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 36.4495 seconds.

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

img = imread('stopSignTest.jpg');

[bboxes,scores] = detect(acfDetector,img);

検出結果を表示し、オブジェクトの境界ボックスをイメージに挿入します。

for i = 1:length(scores)
   annotation = sprintf('Confidence = %.1f',scores(i));
   img = insertObjectAnnotation(img,'rectangle',bboxes(i,:),annotation);
end

figure
imshow(img)

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

ラベル付きのグラウンド トゥルース イメージ。2 列の table として指定します。1 列目には、グレースケールまたはトゥルーカラー (RGB) のイメージへのパスとファイル名が含まれていなければなりません。ただし、ACF ベースの検出器が最も適切に機能するのは、トゥルーカラー イメージの場合です。2 列目には、M 行 4 列の行列が含まれます。これには、対応するイメージに関連する境界ボックスの位置が含まれます。位置は、[x,y,width,height] の形式です。2 列目は、自動車、犬、花、一時停止標識などの単一のオブジェクト クラスの陽性インスタンスを表します。陰性インスタンスは、学習プロセス中にイメージから自動的に収集されます。

各境界ボックスは [x,y,width,height] の形式でなければなりません。この形式は、対応するイメージでのオブジェクトの左上隅の位置とサイズを指定します。テーブル変数 (列) 名はオブジェクト クラス名を定義します。グラウンド トゥルース テーブルを作成するには、イメージ ラベラー アプリを使用します。

名前と値の引数

例: 'ObjectTrainingSize', [100 100]

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

学習中のオブジェクトのサイズ。ピクセル単位の [height width] の形式の 2 要素ベクトルとして指定します。最小の学習サイズは [8 8] です。学習プロセス中に、オブジェクトは 'ObjectTrainingSize' で指定された高さと幅にサイズ変更されます。サイズを大きくすると検出精度が向上する可能性がありますが、学習時間と検出時間も長くなります。

'Auto' を指定する場合、サイズは陽性インスタンスの幅と高さの比率の中央値に基づいて設定されます。

例: [100,100]

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

反復学習プロセスを行う学習ステージ数。'NumStages' と正の整数値で構成されるコンマ区切りのペアとして指定します。この数を増加させると学習時間は長くなりますが、検出器が改善し、学習誤差を減らすことができます。

データ型: double

ネガティブ サンプル係数。'NegativeSamplesFactor' と実数値のスカラーで構成されるコンマ区切りのペアとして指定します。各ステージで使用するネガティブ サンプルの数は、次と等しくなります。

NegativeSamplesFactor × number of positive samples used at each stage

データ型: double

最後のステージの弱学習器の最大数。'MaxWeakLearners' と正の整数スカラーまたは正の整数のベクトルで構成されるコンマ区切りのペアとして指定します。入力がスカラーの場合、MaxWeakLearners は最後のステージの最大数を指定します。入力がベクトルの場合、MaxWeakLearners は各ステージの最大数を指定し、'NumStages' の同じ長さでなければなりません。これらの値は通常、ステージを通じて増加します。ACF オブジェクト検出器は、ブースティング アルゴリズムを使用して弱学習器のアンサンブルを作成します。大きな値を使用すると、検出パフォーマンスの速度が遅くなりますが、検出精度を向上できます。推奨値の範囲は 300 ~ 5000 です。

データ型: double

学習プロセスの進行状況情報を表示するオプション。'Verbose' と true または false で構成されるコンマ区切りのペアとして指定します。

データ型: logical

出力引数

すべて折りたたむ

学習済みの ACF ベースのオブジェクト検出器。acfObjectDetector オブジェクトとして返されます。

バージョン履歴

R2017a で導入