APやmAPの値をどのように計算できるかについてはかなり混乱しています。特に、オブジェクト検出のためにAP / mAP値を取得したいと考えています。
私が確実に知っているのは、
リコール= TP /(TP + FN)、精度= TP /(TP + FP)
たとえば、評価するクラスが1つだけで、500のテスト画像があるとします。各テスト画像には異なる数の予測(境界ボックス提案)が含まれる場合がありますが、各画像には1つのグラウンドトゥルース境界ボックスしかありません。
画像1:[クラス、確率、x1、y1、x2、y2]、[クラス、確率、x3、y3、x4、y4]、[クラス、確率、x5、y5、x6、y6]、[クラス、確率、 x7、y7、x8、y8]、...
画像2:[クラス、確率、x1、y1、x2、y2]、[クラス、確率、x3、y3、x4、y4]、...
。。。(等々)
*ほんの一例で、私はこれを作りました
TPを取得するには、各予測のIOUを見つけて、選択したしきい値(0.5など)を超えるものをカウントする必要があることを知っています(しきい値を超えるIOUを持つ複数の予測がある場合、1回だけカウントして他を処理しますか? FPとして?)
これは私を困惑させるところです:
TP + FP =各画像に対して行われた予測の数でしょうか?
すべてのテスト画像にネガがないため、TP + FN = 500?
画像ごと、またはクラスごとに計算されますか?
私の例に基づいてAP / mAPを取得するためのステップバイステップガイドを誰かに教えてもらえますか?最も曖昧な部分は、画像ごとに行うのか、クラスごとに行うのか(つまり、一度に500枚の画像を処理する場合)です。
私が見つけたほとんどのガイド/論文は、情報検索を対象としています。これでいくつかの助けをいただければ幸いです。
*注:一部のカスタムデータセットでテストしています。PASCAL VOCにはそれを行うためのコードがいくつかあることは知っていますが、自分のデータに合わせてカスタマイズしたコードを自分で記述したいと思っています。