Day 4 - 物体検知、セグメンテーション のまとめ


この記事は個人的なお勉強用のメモです。

講義

講義無し。
完全な自習。

関連記事

物体検知

概要

物体検知(detection)

与えられた画像から、
どの位置(矩形での範囲)
・どんな物体が
写っているのかを検知する技術。

1枚の画像から複数の物体を検知する場合も。

技術の種類

  • Faster R-CNN
  • YOLO
  • SSD

Faster R-CNN

概要

R-CNN や Fast R-CNN を進化させた技術。
Fast R-CNN では Selective Search という技術を使っていたが
処理速度がネックになっていた。

Faster R-CNN では、RPN(Region Proposal Network) と言われる
小さな畳み込みネットワークで問題点を解決。

構成

  • 領域提案ネットワーク(Region Proposal Network, RPN)
    特徴マップを畳み込み層から受け取り、候補領域の座標とその「領域が物体である確率を出力。
  • Fast R-CNN
    畳み込み層から受け取った特徴マップとRPNから受け取った候補領域を用いて、
    詳細な物体位置(バウンディングボックス座標)とその物体のクラスを出力。

RPN
reg layer:あらかじめ設定されたアンカーボックスの座標を予測(回帰)
cls layer:各アンカーボックスが物体か背景かを予測(2値分類)

アンカーボックス

それぞれ異なるスケールおよびアスペクト比を持つ矩形領域

判定

正例(物体)のアンカーボックス:
 各正解ボックス(ground truth)との IoU が最大のアンカーボックス
 または、いずれかの正解ボックスとの IoU が 0.7 を超えるアンカーボックス
負例(背景)のアンカーボックス:
 どの正解ボックスとも IoU が 0.3 未満になるアンカーボックス
その他のアンカーボックス:
 損失関数を計算する際に考慮されない。

IoU (Intersection over Union):一致度を測る指標

アンカーボックスの個数

特徴マップが $(H, W, C)$ のとき、
アンカーボックスの個数は $H \times W \times k$

損失関数
L(\{p_i\},\{t_i\})=\frac{1}{N_{cls}}\sum_i L_{cls}(p_i, p_i^\ast)
+\lambda\frac{1}{N_{neg}}\sum_i p_i^\ast L_{reg}(t_i,t_i^\ast)

$i$:ミニバッチ内でのアンカーボックスのインデックス
$p_i$:アンカーボックスが $i$ が物体である確率
$p_i^\ast$:正解ラベル(アンカーボックスが正例(物体)の場合は 1、負例(背景)の場合は 0)
$t_i$:予測された座標ベクトル
$t_i^\ast$:真の座標ベクトル
$L_{cls}$:分類損失
$L_{reg}$:回帰損失

YOLO

You Only Look Once

一枚の画像を特定サイズのグリッドに分割
その分割されたグリッドごとにクラス推定とバウンディングボックスの回帰を実施
(分類ではなく回帰であることが大きな特徴)

SSD

Single Shot Multibox Detector
YOLO に類似した物体検出タスク用モデル
これも回帰であることが特徴

通常のCNN
入力層に近い特徴マップのサイズ > 出力層に近い特徴マップのサイズ
(詳細な位置情報を持つ)     (詳細な位置情報を持たない)

SSD は各層の大きさの異なる特徴マップを利用して物体を検出

セグメンテーション

概要

セグメンテーションでは物体の位置をピクセル単位で特定
(物体検知では物体の位置を矩形位置で特定)

活用

自動車の自動運転
リアルタイムでセグメンテーションを実施

技術の種類

  • 全畳み込みネットワーク(Fully Convolutional Network, FCN)
    セマンティックセグメンテーション(Semantic Segmentation)の代表的なモデル

FCN は 2020 年のシラバスに含まれていないため、
出題されないと思いたい。

セマンティックセグメンテーション

概要

  • ピクセルごとにクラス分類を解く
  • いくつかのピクセルが孤立して異なるクラスに分類される問題あり
  • この問題は条件付き確率場(Conditional random field, CRF)による後処理で解決

Dice 係数

IoU では面積の差が大きいほど値が小さく評価されてしまうため、
代わりに Dice 係数で評価する。

Dice 係数の数式

Dice(S_{true}, S_{pred})=\frac{2|S_{true}\cap S_{pred}|}{|S_{true}|+|S_{pred}|}

$|S|$:領域 $S$ の面積
$S_{true}\cap S_{pred}$:$S_{true}$ と $S_{pred}$ の共通領域

余談
2つの面積の平均に対する重なり部分の面積の割合ということであれば、
以下の式の方がわかりやすい気がする。

Dice(S_{true}, S_{pred})=\frac{|S_{true}\cap S_{pred}|}{\frac{|S_{true}|+|S_{pred}|}{2}}

Dice 係数と IoU の大小関係

Dice係数 $\geq$ IoU

IoU(参考)

IoU(S_{true}, S_{pred})
=\frac{|S_{true}\cap S_{pred}|}{|S_{true} \cup S_{pred}|}
=\frac{|S_{true}\cap S_{pred}|}{|S_{true}|+|S_{pred}|- |S_{true}\cap S_{pred}|}