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

evaluateDetectionPrecision

オブジェクト検出の適合率メトリクスの評価

構文

averagePrecision = evaluateDetectionPrecision(detectionResults,groundTruthData)
[averagePrecision,recall,precision] = evaluateDetectionPrecision(___)
[___] = evaluateDetectionPrecision(___,threshold)

説明

averagePrecision = evaluateDetectionPrecision(detectionResults,groundTruthData) は、groundTruthData と比較した detectionResults の平均適合率を返します。平均適合率を使用して、オブジェクト検出器のパフォーマンスを測定できます。マルチクラス検出器の場合、関数は averagePrecisiongroundTruthData で指定された順序で各オブジェクト クラスのスコアのベクトルとして返します。

[averagePrecision,recall,precision] = evaluateDetectionPrecision(___) は、前の構文の入力引数を使用して、適合率/再現率曲線をプロットするデータ点を返します。

[___] = evaluateDetectionPrecision(___,threshold) は、検出をグラウンド トゥルース ボックスに割り当てるためのオーバーラップしきい値を指定します。

すべて折りたたむ

プリロードされたグラウンド トゥルース情報を使用して ACF ベースの検出器を学習させます。学習イメージで検出器を実行します。検出器を評価し、適合率/再現率曲線を表示します。

グラウンド トゥルースの table を読み込みます。

load('stopSignsAndCars.mat')
stopSigns = stopSignsAndCars(:,1:2);
stopSigns.imageFilename = fullfile(toolboxdir('vision'),'visiondata', ...
    stopSigns.imageFilename);

ACF ベースの検出器を学習させます。

detector = 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 34.8797 seconds.

結果を保存する table を作成します。

numImages = height(stopSigns);
results(numImages) = struct('Boxes',[],'Scores',[]);

学習イメージで検出器を実行します。結果を table として保存します。

for i = 1:numImages
    I = imread(stopSigns.imageFilename{i});
    [bboxes,scores] = detect(detector,I);
    results(i).Boxes = bboxes;
    results(i).Scores = scores;
end

results = struct2table(results);

グラウンド トゥルース データに対して結果を評価します。適合率の統計を取得します。

[ap,recall,precision] = evaluateDetectionPrecision(results,stopSigns(:,2));

適合率/再現率曲線をプロットします。

figure
plot(recall,precision)
grid on
title(sprintf('Average Precision = %.1f',ap))

入力引数

すべて折りたたむ

オブジェクトの位置とスコア。検出された各オブジェクトの境界ボックスとスコアを含む 2 列のテーブルとして指定します。マルチクラス検出の場合、3 番目の列には各検出の予測ラベルが含まれます。

オブジェクトを検出するときに、struct2table を使用して bboxes 出力と scores 出力を結合し、検出結果テーブルを作成できます。

   for i = 1:numImages
        I = imread(imageFilename{i});
        [bboxes,scores] = detect(detector,I);
        results(i).Boxes = bboxes;
        results(i).Scores = scores;
    end
 results = struct2table(results);

データ型: テーブル

学習データ。1 つ以上の列を含む table として指定します。table には、単一クラス データ用の 1 つの列と、マルチクラス データ用の複数の列が含まれます。各列には、オブジェクトの位置を指定する [x,y,width,height] 境界ボックスの M x 4 の行列が含まれます。この形式は、オブジェクトの左上隅の位置とサイズを指定します。列名にはクラス ラベルを指定します。

グラウンド トゥルース ボックスに割り当てられた検出のオーバーラップしきい値。数値スカラーとして指定します。オーバーラップ率は、Intersection over Union として計算されます。

出力引数

すべて折りたたむ

すべての検出結果の平均適合率。数値スカラーまたはベクトルとして返されます。"適合率" は、グラウンド トゥルースに基づく、検出器内オブジェクトのすべての陽性インスタンスに対する真陽性インスタンスの比率です。マルチクラス検出器の場合、平均適合率は各オブジェクト クラスの平均適合率スコアのベクトルです。

各検出からの再現率値。数値スカラーのベクトルまたは cell 配列として返されます。"再現率" は、グラウンド トゥルースに基づいた、検出器内の真陽性と偽陰性の合計に対する真陽性インスタンスの比率です。マルチクラス検出器の場合、recallprecision は cell 配列で、各セルには各オブジェクト クラスのデータ点が含まれます。

各検出からの適合率値。数値スカラーのベクトルまたは cell 配列として返されます。"適合率" は、グラウンド トゥルースに基づく、検出器内オブジェクトのすべての陽性インスタンスに対する真陽性インスタンスの比率です。マルチクラス検出器の場合、recallprecision は cell 配列で、各セルには各オブジェクト クラスのデータ点が含まれます。

R2017a で導入