PASCAL VOC Challengeの検出タスクのmAPを計算する方法は?


22

Pascal VOCリーダーボードの検出タスクのmAP(平均精度)の計算方法は?http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4

そこに-11ページでhttp : //homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

平均精度(AP)。VOC2007チャレンジでは、分類された検出と検出の両方を評価するために、補間された平均精度(Salton and Mcgill 1986)が使用されました。特定のタスクおよびクラスについて、精度/リコール曲線はメソッドのランク付けされた出力から計算されます。リコールは、特定のランクよりも上位にランク付けされたすべての肯定的な例の割合として定義されます。精度は、そのランクより上のすべての例のうち、ポジティブクラスからの割合です。APは精度/リコール曲線の形状を要約し、11個の等間隔のリコールレベル[0,0.1、...、1]のセットでの平均精度として定義されます。 AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)

各リコールレベルrの精度は、対応するリコールがrを超えるメソッドに対して測定された最大精度を取得することにより補間されますpinterp(r) = max p(r˜)。ここで、p(r〜)はリコール〜rで測定された精度です。

地図について:http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision


それは次のことを意味します:

  1. PrecisionとRecall計算します

    • A)多くの異なるものIoU について> {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}真/偽の正/負の値を計算します

    ここでTrue positive = Number_of_detection with IoU > {0, 0.1,..., 1}https//datascience.stackexchange.com/a/16813/37736で述べたように、次に計算します:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)


  • B)または、検出アルゴリズムのさまざまなしきい値について、以下を計算します。

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)

    ここTrue positive = Number_of_detection with IoU > 0.5で言ったように:https : //stackoverflow.com/a/43168882/1558037



  1. 次に、次のようにPrecision-Recall curve作成します。 ここに画像の説明を入力してください

  1. その後、我々は、AP(平均精度)を計算する11個の値の平均Precision点でRecall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}、すなわちAP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)

(一般的に、0.3などの各ポイントに対して、この時点での精度の値Recall = 0.3ではなく、リコールの精度の最大値<= 0.3を取得します)


  1. そして、すべての画像の1つのオブジェクトクラスに対してのみAPを計算すると、このクラスに対してAP(平均精度)が得られairます。

したがって、APは不可欠です(曲線の下の領域):https : //stats.stackexchange.com/a/157019/111998

しかし、すべての画像のすべてのオブジェクトクラスのAPを計算すると、たとえばR4D_faster_rcnnの場合、すべての画像データセットのmAP(平均精度)が得られます88.6http ://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


質問:

  1. それは正しいですか、そうでない場合、Pascal VOC ChallengeのmAPを計算する方法は?
  2. また、パラグラフ1の3つの式(A、B、またはC)のうち、PrecisionとRecallの計算に正しいものはどれですか

短い答え:

  • mAP = AVG(各オブジェクトクラスのAP)
  • AP = AVG(11の各リコールの精度{精度= 0、0.1、...、1})
  • PR曲線=精度とリコール(予測バウンドボックスにある各しきい値に対して)
  • 精度= TP /(TP + FP)
  • リコール= TP /(TP + FN)
  • TP = IoU> 0.5での検出数
  • FP = IoU <= 0.5の検出数または複数回検出
  • FN =検出されなかった、またはIoU <= 0.5で検出されたオブジェクトの数

回答:


15

質問に答えるには:

  1. はい、あなたのアプローチは正しいです
  2. A、B、Cの正しい答えはBです。

説明は次のとおりです。オブジェクト検出のコンテキストで平均平均精度(mAP)を計算するには、各クラスの平均精度(AP)を計算してから、すべてのクラスの平均を計算する必要があります。ここで重要なのは、各クラスのAPを計算することです。一般に、精度(P)とリコール(R)の計算では、True Positive(TP)、False Positive(FP)、True Negative(TN)、Falseを定義する必要があります負(FN)。パスカルVOCチャレンジのオブジェクト検出の設定には次のものがあります。

  • TP:バウンディングボックス(BB)は、ユニオン(IoU)とグラウンドトゥルース(GT)の交差点が0.5を超えていること
  • FP:GTのIoUが0.5未満のBB、および既に検出されたGTのIoUのBB。
  • TN:真のネガはありません。画像には少なくとも1つのオブジェクトが含まれることが期待されます
  • FN:これらの画像はメソッドがBBを生成できなかった

予測された各BBには、指定されたクラスの信頼値があります。したがって、スコアリング方法は、信頼度の降順で予測をソートし、可能なランクk = 1から予測数までのP = TP /(TP + FP)およびR = TP /(TP + FN)を計算します。そのため、各ランクに(P、R)があり、それらのPとRは「生の」Precision-Recall曲線です。Rの各値に対して補間されたPR曲線を計算するには、対応するR '> = Rを持つ最大Pを選択します。

voc devkit docに従ってPRカーブポイントをサンプリングする方法は2つあります。2010年以前のVOCチャレンジでは、R '> = Rで取得した最大Pを選択します。Rは0、0.1、...、1(11ポイント)に属します。APは、各リコールしきい値での平均精度です。VOC Challenge 2010以降では、R '> = Rの最大Pを選択しますが、Rはすべての一意のリコール値(0と1を含む)に属します。APは、PR曲線の下の領域サイズです。いくつかのしきい値を超えるリコールでPの値がない場合、Precision値は0であることに注意してください。

たとえば、クラス「Aeroplane」が指定されたメソッドの次の出力を考えてみましょう。

BB  | confidence | GT
----------------------
BB1 |  0.9       | 1
----------------------
BB2 |  0.9       | 1
----------------------
BB3 |  0.7       | 0
----------------------
BB4 |  0.7       | 0
----------------------
BB5 |  0.7       | 1
----------------------
BB6 |  0.7       | 0
----------------------
BB7 |  0.7       | 0
----------------------
BB8 |  0.7       | 1
----------------------
BB9 |  0.7       | 1
----------------------

さらに、2つの画像で境界ボックスが検出されなかったため、FN = 2になります。前の表は、GT = 1がTPおよびGT = 0 FPであることを意味するメソッドの予測の信頼値による順序付けです。したがって、TP = 5(BB1、BB2、BB5、BB8およびBB9)、FP = 5です。rank = 3の場合、BB1がすでに検出されているため精度が低下します。したがって、オブジェクトが実際に存在する場合でも、FPとしてカウントされます。。

rank=1  precision=1.00 and recall=0.14
----------
rank=2  precision=1.00 and recall=0.29
----------
rank=3  precision=0.66 and recall=0.29
----------
rank=4  precision=0.50 and recall=0.29
----------
rank=5  precision=0.40 and recall=0.29
----------
rank=6  precision=0.50 and recall=0.43
----------
rank=7  precision=0.43 and recall=0.43
----------
rank=8  precision=0.38 and recall=0.43
----------
rank=9  precision=0.44 and recall=0.57
----------
rank=10 precision=0.50 and recall=0.71
----------

前の結果を考えると、voc2010以前の方法を使用した場合、補間された精度の値は1、1、1、0.5、0.5、0.5、0.5、0.5、0、0、0です。その後、AP = 5.5 / 11 = 0.5 「飛行機」のクラス。それ以外の場合、voc2010以降、0、0.14、0.29、0.43、0.57、0.71、1の7つの一意のリコールの補間精度値は1、1、1、0.5、0.5、0.5、0です。 (0.14-0)* 1 +(0.29-0.14)* 1 +(0.43-0.29)* 0.5 +(0.57-0.43)* 0.5 +(0.71-0.57)* 0.5 +(1-0.71)* 0 = 0.5 「飛行機」のクラス。

クラスごとに繰り返して、(mAP)を取得します。

詳細については、以下のリンクで見つけることができます12。また、PASCAL Visual Object Classes Challenge:A Retrospectiveのペーパーで詳細な説明を確認してください。


1
どういたしまして!はい、すべての画像にわたって計算する必要があります。IoU> 0.5の場合、GTは1です。最終FNは3つの検出されていないオブジェクトのための3になります
feynman410

1
FNは予測が行われなかった画像の数、FPはIoU <= 0.5または複数回検出された検出の数です。この擬似コードを参照してくださいstats.stackexchange.com/a/263758/140597
feynman410

1
申し訳ありませんが、あなたの権利は検出されないオブジェクトの数です。
feynman410

1
@ feynman410混乱しました。検出されなかったテーブルオブジェクトのどこに配置するのか教えてください。テーブルの最後に?(彼らにはスコアがないため)
マーティンブリシアック

1
したがって、クラスごとにAPを計算するために、「精度」と「リコール」はクラスごとに個別に計算されます。右?したがって、それらは各画像で個別に計算されてから平均化されますか、それともすべての画像での検出全体にわたって計算されますか?
サムシングサム

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.