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

trainACFObjectDetector

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

構文

detector = trainACFObjectDetector(trainingData)
detector = trainACFObjectDetector(trainingData,Name,Value)

説明

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

detector = trainACFObjectDetector(trainingData,Name,Value) は、1 つ以上の Name,Value 引数ペアによって追加のオプションが指定された 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 44.0801 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)

入力引数

すべて折りたたむ

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

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

名前と値のペアの引数

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

例: 'ObjectTrainingSize'[100 100]

学習イメージのサイズ。'ObjectTrainingSize' と 'Auto' または [height width] ベクトルから構成されるコンマ区切りのペアとして指定します。height および width の最小値は 8 です。学習プロセス中、すべてのイメージはこの高さと幅にサイズ変更されます。サイズを大きくすると検出精度が向上する可能性がありますが、学習時間と検出時間も長くなります。

'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 で導入