ドキュメンテーション

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

一時停止標識検出器の学習

MAT ファイルからポジティブ サンプル データを読み込みます。ファイルには、複数のオブジェクト カテゴリの境界ボックスを指定するテーブルが含まれます。このテーブルは、学習イメージ ラベラー アプリからエクスポートされたものです。

ポジティブ サンプルを読み込みます。

load('stopSignsAndCars.mat');

テーブルから一時停止標識の境界ボックスを選択します。

positiveInstances = stopSignsAndCars(:,1:2);

MATLAB パスにイメージ ディレクトリを追加します。

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

ネガティブ イメージのフォルダーを指定します。

negativeFolder = fullfile(matlabroot,'toolbox','vision','visiondata',...
    'nonStopSigns');

ネガティブ イメージを含む imageDatastore オブジェクトを作成します。

negativeImages = imageDatastore(negativeFolder);

HOG 特徴を使用して 'stopSignDetector.xml' という名前のカスケード オブジェクト検出器を学習させます。メモ: コマンドの実行には数分かかる場合があります。

trainCascadeObjectDetector('stopSignDetector.xml',positiveInstances, ...
    negativeFolder,'FalseAlarmRate',0.1,'NumCascadeStages',5);
Automatically setting ObjectTrainingSize to [ 35, 32 ]
Using at most 42 of 42 positive samples per stage
Using at most 84 negative samples per stage

--cascadeParams--
Training stage 1 of 5
[........................................................................]
Used 42 positive and 84 negative samples
Time to train stage 1: 1 seconds

Training stage 2 of 5
[........................................................................]
Used 42 positive and 84 negative samples
Time to train stage 2: 0 seconds

Training stage 3 of 5
[........................................................................]
Used 42 positive and 84 negative samples
Time to train stage 3: 1 seconds

Training stage 4 of 5
[........................................................................]
Used 42 positive and 84 negative samples
Time to train stage 4: 5 seconds

Training stage 5 of 5
[........................................................................]
Used 42 positive and 17 negative samples
Time to train stage 5: 9 seconds

Training complete

新たに学習させた分類器を使用して、イメージ内の一時停止標識を検出します。

detector = vision.CascadeObjectDetector('stopSignDetector.xml');

テスト イメージを読み取ります。

img = imread('stopSignTest.jpg');

一時停止標識を検出します。

bbox = step(detector,img);

境界ボックスの四角形を挿入し、マークしたイメージを返します。

 detectedImg = insertObjectAnnotation(img,'rectangle',bbox,'stop sign');

検出した一時停止標識を表示します。

figure; imshow(detectedImg);

パスからイメージ ディレクトリを削除します。

rmpath(imDir);