IoU(Intersection over Union): 物体検出における評価指標

1. IoU(Intersection over Union)とは [概要]

IoU(Intersection over Union)とは,物体検出で用いられる物体ROIを囲むバウンディンボックス領域の,評価指標である.別名 Jaccard Index(ジャッカード係数)とも呼ばれる.

IoUは,元々は物体検出モデルの評価指標として用いられていたが,最近は,物体検出ネットワークの損失関数としても用いられる.

1.1 IoU の定義

IoUは,名前の通り「Intersection(AND領域)/ Union (OR領域)」の割合を計算する「2つのバウンディンボックス間の重なり度(集合間の濃度の比)」である(図1).完全に重なると1.0であり,領域間にズレがあり重なりが減るほど値が0.0に近づく.よって,IoUの値で閾値計算を行う場合,0.5や0.7あたりを閾値に用いることが多い.

IoU (Intersection over Union)
図1 IoU (Intersection over Union)

まず,バウンディンボックス表現には,YOLOSSDなどのように中心$(x,y)$とサイズ$(w,h)$による「中心ベースの矩形表現」を用いるとする.

このとき,IoU値は,正解ボックス(gt)予測ボックス(pred)の間のmetricとして,以下のように定義できる:

\[
\text{IoU}(B^{pred},B^{gt}) = \frac{|B^{pred} \cap B^{gt}|}{|B^{pred} \cup B^{gt}|}
\]

$|\cdot|$は,集合の濃度(Wikipedia)を示している.つまり,IoUとは,画像平面上の,2つの画素集合(領域)$B^{pred},B^{gt}$間で,「AND集合とOR集合の比率」を,矩形間の一致度として指標化した値である(図1).

ここで,正解のバウンディンボックス領域を$B^{gt} = (x^{gt},t^{gt},w^{gt},h^{gt})$とし,物体検出モデルが予測するバウンディンボックス領域を$B^{pred} = (x^{pred},t^{pred},w^{pred},h^{pred})$となる.

ちなみに現在の物体検出モデルのうちアンカーベースの手法は,画像のグリッド上に配置された「サイズ+位置」のPriorである「アンカーボックス」から,回帰によってそのオフセットとしてバウンディンボックスを予測することが多い.この場合のアンカーボックスと予測ボックスの間の一致度も,IoUで評価することになる.

2. IoUの昔と今

以前の古典的な物体検出では,物体検出タスクだけを解けば良いので,IoUを用いた損失関数が,他のタスクの損失関数と関連してくることはなかった.あまり工夫する指標ではなく,そのままシンプルに用いるだけであった.それが,近年はMask R-CNNや,PersonLabの提案以降に「物体検出・インスタンスセグメンテーション・人物姿勢推定」の3タスクが,R-CNN(2ステージ型)を通して,マルチタスクに学習することが多くなり,その対応のためIoUを計算する際のバウンディンボックスの四角形情報の使われ方が発展してきている(ただし,その詳細までは長くなるので,この記事をシンプルに保つためにも,ここでは述べない).

つまりは,昔の物体検出はずっと「バウンディンボックスの推定」が全てだったので,使用することを想定していなかった「ROI(物体の前景マスク)」や「人物関節キーポイント(これも緩い意味で前景ROI)」とも組み合わせるようになり,「IoUを積極的に改造して,損失にも使用する」ことが増えてきているのである.

また,深層学習以前の古典的な物体検出では,まずは1つの物体だけが映っている部分から着実に1物体を検出することが目的であった.それが,少しずつ2物体ずつ重なりがある場面でも検出するようになっていくことで,遮蔽を考慮した「2物体間のIoU」も必要になっていった.更には,たくさんの物体が重なり合って密に映っている「Dense Object Detection (RetinaNetのFocal Lossなど)」の仮定下だと,3物体以上が密に互いに遮蔽している中でも,IoUの(特殊な)定義が必要になっていっている.これは物体検出だけでなく,Denseに人物間が重なりあう人物姿勢推定やインスタンスセグメンテーションでも,重なりが複雑になっているので同様である.

関連記事

関連書籍

参照外部リンク

SNSでシェアやブックマークを行う