物体検出の評価指標 mAP の計算方法

深層学習を利用した物体検出の評価に、AP (average)、再現率 (recall)、PR 曲線などが指標として用いられる。これらの指標を算出するには、混同行列を構成する true positive (TP)、true negative (TN)、false positive (FP)、false negative (FN) の要素の値を予め知っておく必要がある。物体検知の場合、予測バウンディングボックスと真のバウンディングボックスの重なり方によって、FP や FN の区別が難しくなる。このページでは、物体検出における TP、FP、FN の求め方を示す。

IoU (Intersection over Union)

Intersection over Union (IoU) は、モデルが予測したバウンディングボックスが、真のバウンディングボックスとどれぐらい重なっているのかを評価するための指標である。集合分野において、2 つの集合の重なりを評価する際に使う Jaccard 係数と同じものである。

予測バウンディングボックスの領域を Apred とし、真のバウンディングボックスの領域を Atruth とすると、IoU は次のように計算される。すなわち、予測バウンディングボックスの領域と真のバウンディングボックスの領域のうち、両者が全体の何割が重なっているのかを示している。

\[ IoU = \frac{A_{truth} \cap A_{pred}}{A_{truth} \cup A_{pred}} \]

予測バウンディングボックスと真のバウンディングボックスが正確に重なれば、分母と分子は同じ値になるため、IoU が 1.0 になる。これに対して、予測バウンディングボックスと真のバウンディングボックスがほとんど重なっていなければ、分母の値は大きくかつ分子の値が小さいため、IoU は 0 に近い値をとる。

予測評価(TP・FP・FN)

物体検出の課題について、車だけの単一物体の検出もあれば、車・人・建物など複数種類の物体検出もある。ここでは、車・人・建物などのような複数種類の物体検出の問題について考える。車・人・建物などの複数クラスの中で、まずは、車の予測結果のみを評価する。

予測が正しかったどうか評価するには、IoU に閾値を設けて評価する。例えば、閾値を 0.8 として設けたとき、車と予測したバウンディングボックスと真の車バウンディングボックスの IoU が 0.94 であれば、これは予測が正しかったと言える。これに対して、両者の重なりから計算された IoU が 0.27 であれば、これは予測が間違ったと言える。このように、真の車バウンディングボックスに対して、予測が正しかったのか、それとも誤ったのかを判定することができ、TP や FP などを計算できるようになる。

車の予測結果についての TP、FP、FN の具体例を次の図に示した。TP および FP を計算するときは、予測された車バウンディングボックスに着目して計算する。これに対して、FN を計算するときは、真のバウンディングボックスに着目して計算する。TP、FP を計算するときの基準と、FN を計算するときの基準が異なっているので、くれぐれも両者を混同しないようにすることが大切である。

<図>

TP と FP

車と予測された複数のバウンディングボックスに対して、一つずつ、予測が正しかったかどうかを評価していく。まず、一つ目の予測バウンディングボックスに着目する。このバウンディングボックスが、真の車バウンディングボックスと重なっていたとする。両者の重なりを計算したところ、IoU が 0.98 となり閾値を大きく超えたとする。このとき、真の車バウンディングボックス(positive)を正しく(true)予測できたので、TP となる。

一方で予測バウンディングボックスが、真の車バウンディングボックスと重なっているが、IoU が 0.12 になったとする。このとき、車と予測されたバウンディングボックスと真のバウンディングボックスがほとんど重なっていないので、真の車バウンディングボックス(positive)を誤って(false)予測してしまったので、FP となる。

また、車のない場所や人・建物などの領域に、車バウンディングボックスが予測された場合、その領域を誤って(false)車(positive)と予測してしまったので、FP となる。

これまでに述べた TP と FP の評価方法を使って、車と予測されたすべてのバウンディングボックスについて評価して、TP および FP の数を集計する。そして、TP と FP の和が車と予測されたすべてのバウンディングボックスの数と同じ値にある。

FN

FP は、真のバウンディングボックスに着目して計算する。一枚の画像に複数の車があるとき、真の車バウンディングボックスが複数存在することになる。この場合、これらを一つずつ評価していく。

まず、一つ目の真の車バウンディングボックスに着目する。この真の車のバウンディングボックスに、重なっている予測バウンディングボックスを確認する。そのような予測バウンディングボックスがなかったとき、車が存在しているにもかかわらず、誤って(false)車と予測できなかった(negative)ため、FN として計上する。

また、真の車のバウンディングボックスに重なっている予測バウンディングボックスが存在したとする。その予測クラスをみると、それが人間であったとする。この場合も、真の車のバウンディングボックスから見たとき、正しく予測できていないので、車の FN として計上する。(人間クラスを評価するときは、これは人間の FP となる。)

そして、上のような評価をすべての真のバウンディングボックスに対して行っていく必要がある。

TN

True negative は、車が存在していない領域に、(車と予測された)バウンディングボックスが存在しないときが、TN となる。このような場所が、数多くあるが、モデルの正確性を評価するのにほとんど役に立たない。例えば、適合度(precision)や再現率(recall)を計算するには TN の数を必要としない。

適合度・再現率

TP、FP、FN の値を利用して、適合度(precision)や再現率(recall)を次の式に基づいて計算できる。

\[ precision = \frac{TP}{TP + FP} \] \[ recall = \frac{TP}{TP + FN} \]

FP および FN が TP に比べて著しく少ないとき、適合度と再現率は 1.0 に近い値をとる。逆に、TP が FP および FN に比べて著しく少ないとき、適合度と再現率は 0.0 に近い値をとる。このことから、最もパフォーマンスのよいモデルというのは、適合度かつ再現率が高い(1.0 近くの値をとる)モデルであるといえる。

適合度が高く、再現率が低いとき、車と予測したバウンディングボックスのほとんどが真の車バウンディングボックスと重なっているといえる。しかし、(再現率が低いため、)画像中にある他の車を多く見逃していることになる。

<図>

再現率が高く、適合度が低いとき、画像中にあるほとんどの車を検出できたことを示している。しかし、(適合度が低いため、)人間・建物や画像の背景も多くが車として予測されていることを表している。

<図>

ここまで計算できた評価指標(TP・FP・FN・適合度・再現率)は、モデルが車と予測した結果をそのまま採用して評価している。例えば、モデルが出力している車バウンディングボックスに付いている確信度(車である確率のようなもの)が 0.60 でも、0.98 でも、両者を平等に扱って車と評価している。しかし、車に対する予測確信度を見ると、0.60 に比べると、明らかに 0.98 の方がより信用できる。それにもかかわらず、両者を同一基準で評価する。このような評価方法は、実態に即していない方法である。

そこで、確信度の高い予測結果に大きな重みをつけ、確信度の低い予測結果に小さい重みをつけて評価することが改善策の一つと考えられる。このような評価方法には ROC 曲線あるいは PR 曲線(precision-recall curve)を描いて、その曲線のしたの面積を求める方法がある。物体検出においては、PR 曲線を描いて、その下の面積を評価指標とするのが一般的である。

AP

物体検出において AP とよばれる指標が使われる。AP は average precision の略で、PR 曲線を積分して計算できる。まず、車の検出結果を利用して PR 曲線を描くことにする。次の検証画像に対する検証結果として、車として予測したバウンディングボックスが合計 10 個存在している。これらのバウンディングボックスには車である確信度(確率)が付いている。そこで、これら 10 個のバウンディングボックスを確信度の大きい順に表にまとめる。

<図>

<表>

確信度ーランクー正解ー適合度ー再現率

1	true
2	true
3	false
4 	...

適合度は、そのランクまでに出現した正解の割合である。例えば、ランク 1 の適合度は、今までにみてきたデータ 1 件のうち 1 件が正しいので、1.0 となる。ランク 3 の適合度をみると、3 件のデータのうち、予測が正解した数が 2 件であるため、2/3 = 0.67 となる。このような手順で、ランクの先頭から最後まで適合度を計算する。

再現率は、真の車に対して、正しく車と予測できた割合である。検証画像のなかに真の車は 5 個存在している。そこで、ランク 1 の再現率を計算すると、ランク 1 までの正解数は 1 であるので、その再現率は 1/5 = 0.20 になる。また、ランク 3 に着目すると、ランク 3 までの正解数が 2 であるので、2/5 = 0.40 になる。このような手順で、ランクの先頭から最後まで再現率を計算する。

そして、ここまで求めてきた適合度と再現率をそれぞれ縦軸と横軸の座標として、折れ線グラフで可視化する。この検証画像のセットには車と予測されたバウンディングボックスが 10 個しかなかったために、座標が 10 点のみとなる。機械学習において実用上数千以上の検証画像が用意されるため、そこから得られる適合度と再現率の座標セットが数千から数万に及ぶことがある。このようなデータなどで PR 曲線を描くと、きれいな曲線部分が得られるので、PR 曲線などと呼ばれている。

<PR曲線図>

次に、この PR 曲線の下側の面積を求める。PR 曲線を recall (r) に関数する関数とみなせば、PR 曲線の下側の面積は次のように求めることができる。

\[ AP = \int_{0}^{1}p(r)dr \]

この積分計算に時間がかかるために、次のように PR 曲線のジグザグした形を階段状に変形する。この変形は、下図のように、右端から見て常に最大値をとるようにする。この変換を数式で書き表すと次のようになる。

\[ p_{interp}(r) = \max_{\tilde{r} > r} p(\tilde{r}) \]

11-point AP

次に横軸(recall)の 0.0、0.1、0.2、...、1.0 の 11 点に対して、平滑後の PR 曲線の高さの平均を求める。この操作は、実は上の積分を近似的に求めていることになる。

\[ AP = \frac{1}{11}\sum_{r \in \{0.0, 0.1, ..., 1.0\}}p_{interp}(r) \]

この 11 個の横軸の点を利用して計算した AP は、2010 年前後までによく使われていた。しかし、現在では、11-point AP を使用する代わりに、すべての(再現率の)点を利用して計算した AP が使われるようになった。

All-point AP

すべての点を利用しているというはのは、階段状に平滑化した PR 曲線の下の面積を正確に求めるということである。式で表すと、次のようになる。

\[ AP = \sum\left(r_{n} - r_{n-1}\right) p_{interp}(r_{n}) \]

実は、この計算は、車と予測されたバウンディングボックスそれぞれに対して、AP を求めているのである。

<図>

mAP

mAP は mean average precision の略で、上で求めた AP の平均を意味する。上のような手順で、車の AP、人間の AP、建物の AP を求めた後に、これらの AP の平均を計算する。

\[ mAP = \frac{1}{N}\sum_{class=1}^{N}AP_{class} \]

References

  • Manal EA. Evaluating Object Detection Models: Guide to Performance Metrics. 2019. github.io
  • Jonathan H. mAP (mean Average Precision) for Object Detection. 2018. Medium