LoginSignup
24

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-01-30

はじめに

YoloやSSDなど物体検出で評価指標として用いられる、IoUについて調べたのでまとめました。

目次

IoUとは

IoU(Intersection over Union)とは、2つの領域がどれぐらい重なっているかを表す指標です。
2つの領域の共通部分を和集合で割ったものになります。

image.png

物体検出では、「何が」「どこに」うつっているかを検出することになります。
「どこに」については、画像内の物体の座標(Bounding Box)で表すことができます。
「検出結果の座標」の精度を測る際、「正解の座標」との重なり具合を評価指標としたいときにIoUが使用されます。

IoUの計算方法

以下、$IoU$を計算します。

ここでは、Yoloで用いられている座標表示$(x, y, w, h)$を使用することとします(注1)。

  • $x$:領域中心の$x$座標
  • $y$:領域中心の$y$座標
  • $w$:領域の幅
  • $h$:領域の高さ

image.png

2つの領域

A(x_A, y_A, w_A, h_A)\\
B(x_B, y_B, w_B, h_B)

が与えられたとき、

dx = \min(x_{A, max}, x_{B, max}) - \max(x_{A, min}, x_{B, min})\\
dy = \min(y_{A, max}, y_{B, max}) - \max(y_{A, min}, y_{B, min})\\

とすると(注2)、重なる条件は

$dx > 0$ かつ $dy > 0$
あるいは
$x_{A, min} < x_{B, min} < x_{A, max}$ かつ $y_{A, min} < y_{B, min} < y_{A, max}$

さらに

\begin{align}
A\cup B &= A+B-A\cap B\\
&= w_Ah_A + w_Bh_B-dxdy
\end{align}

であるので

\begin{align}
IoU &= \frac{A\cap B}{A\cup B}\\
&=\frac{dxdy}{w_Ah_A + w_Bh_B-dxdy}
\end{align}

となります。

注釈

注1

実際には、Yoloでは上記座標の値を画像全体の大きさで割ったもの(規格化)になります。すなわち、画像全体の幅を$W$、高さを$H$としたとき、上記はそれぞれ

x\rightarrow\frac{x}{W},\\
y\rightarrow\frac{y}{H},\\
w\rightarrow\frac{w}{W},\\
h\rightarrow\frac{h}{H}

となります。
ここでは、簡単のため規格化はせずに計算しています。
詳しくは、Yolov5公式ページの説明を参照下さい。

注2

$x_{A, max}(x_{A, min})$は、$A$の$x$座標の最大値(最小値)を表します。例えば、上図においては、

\begin{align}
x_{A, max} &= x_A +\frac{w_A}{2}\\
x_{A, min} &= x_A -\frac{w_A}{2}\\
y_{A, max} &= y_A +\frac{h_A}{2}\\
y_{A, min} &= y_A -\frac{h_A}{2}\\
\end{align}

$B$についても同様です。

また、図形が重なる条件を求める際には、
「最値の最値」と「最値の最値」の差をとる
といった考え方を用いています。

参考文献

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
24