この記事の読者
キーワード・知ってると理解がしやすい
- CNN
- VGG
Index
SSD / Single Shot MultiBox Detector とは
2015 年に Google から発表された CNN を用いた物体検出の手法.
物体検出のタスクでは、「物体の位置」と「物体の種類」の 二つを特定する必要がある.
SSD では、ニューラルネットのアーキテクチャを工夫することで、その二つを一つの流れ (Single Shot) で推定する. (その分、高速でに処理ができる.)
SSD Framework / 検出の仕組み
CNN での特徴量抽出を基本として、「物体の位置(Bounding Box)」 と 「物体の種類(Class Score)」を推定する.
ネットワーク上流は、画像分類によく使用されるアーキテクチャを利用する.
Multi-Scale Feature Maps For Detection
ベースネットワークに、CNN を追加していき、途中途中の出力を物体検出にための特徴量として利用する.
そうすることで、異なるスケール情報から物体を検出することができる.
Convolutional Predictors For Detection
各スケールでの、特徴量から「物体の位置(Bounding Box)」 と 「物体の種類(Class Score)」を検出する
予測用の CNN を利用する.
Default Boxes and Aspect Ratios
各スケールの特徴量のセル(マス目)に、Default Box (anchor / アンカー) を適用する.
縦横比率(Aspect Rations) の異なる Default Box になるように決定する.
各スケールの特徴量のセル(アンカー・マス目)に、複数個、設置!
上図だと、4x4 や 8x8 の特徴量マップに、4 つの Default Box を設置している.
予測する項目は、Default Box (の中心点) からのずれている距離(cx, cy) と、 Default Box (幅と高さ)との大きさのずれ(w, h)
また、クラスの予測は Default Box ごとに行う.
出力される予測の形状
各スケールの特徴量マップを予測用の CNN に入力し、予測結果が出力される.
とかける. ここで、
- Default Box Num は Default Box の数
- 4 は ある Default Box との差分(cx, cy, w, y) の 4 次元
出力を「物体の位置(Bounding Box)」 と 「物体の種類(Class Score)」に分けて考えてみる.
さらに、細く考える.
Non-Maximum Suppression Step
各スケールごとの予測結果には、各セルごとにDefault Box 分の予測結果を含んでいる.
そこで、まず各セルの中の Default Box の中で、予測スコアの高い Default Box を候補とする.
さらに、各スケールの結果をあわせ、予測したクラス同士の BB の IoU を計算する.
閾値以上の BB を削除し、重複している BB を削除する.
アーキテクチャ
各スケールの特徴量マップを予測用のCNN (Detectors) に入力され、Non-Maximum Suppression で、 使用する BB を選定している.
Train
上では、SSD のアーキテクチャから、どのように出力されるかを確認した. 次に、その予測と正解データ(GT; ground truth)をどのように使って、学習を行うかを考える.
Matching strategy
「予測した BB」 が 「どの GT の BB」 なのかを考える.
閾値(0.5)を超える jaccard 指数の「予測した BB」 と「GT の BB」を対応付ける.
閾値を超えるものを対応付けすることで,
「GT の BB」に重複する複数の「予測した BB」を対応付けすることができる.
損失関数 / 目的関数
損失関数は、位置に関する誤差関数とクラスに関する誤差関数で構成されている.(重み付き平均)
参考
- SSD: Single Shot MultiBox Detector
Web サイト
【物体検出】SSD(Single Shot MultiBox Detector)の解説