1stage物体検出モデル「SSD: Single Shot MultiBox Detector」を読んでみました
SSDとは
- 単一ディープニューラルネットワークを使って画像の中の物体を検出する方法
- 論文ではVGG16にExtra Feature Layersという畳み込み層を加え、物体検出を可能にした
- 予測時にカテゴリスコアの算出とデフォルトボックスの調整を行う
Contribution
- これまでの最先端であるYOLOを超える速度と性能を持つ物体検出方法(SSD)の提案
- 小さな畳み込みフィルターを使うことで、デフォルトバウンディングボックスのカテゴリスコアとボックスのオフセットを予測させた
- 異なるスケールの特徴マップから異なるスケールの予想を作り出し、アスペクト比によって明示的に分割した
- これらのデザインによって低解像度の画像であっても、シンプルな End-to-End の訓練と高い精度につながり、スピードと精度のトレードオフを解消した
- 様々な入力サイズをPSCAL VOC COCO, ILSVRCで検証して、最先端モデルと比較した。
1. Introduction
これまでの物体検出との比較
- 今までの手法
- SSD
- 初のディープニューラルネットワークベースの検出器
- ピクセルや特徴を再サンプル必要がない
- バウンディングボックスの採用と再サンプル工程を取り除きをしたため、従来より早い
2. The Single Shot Detector (SSD)
SSDのフレームワーク
- 入力画像と正解ボックスが必要
- 畳み込みによって、異なるいくつかの(4つくらいの)アスペクト比のデフォルトボックスと正解ボックスを異なるスケール(eg. 4x4 や 8x8)で評価する
- マッチしたデフォルトボックスは正、しなかったものは負として扱われる
2.1 モデル
2.2 訓練
マッチング戦略
- デフォルトボックスはjaccard係数が0.5以上であるものを正解としている
損失関数 = 確信度誤差関数 + 位置特定誤差
$$ x_{i, j}^{p} = \left\{ 1, 0\right\} $$ $x$: カテゴリpにおいて、i番目のデフォルトボックスとj番目の正解ボックスのマッチ度を示すもの $N$: マッチしたディフォルトボックスの数 $l$: 予測されたボックス $g$: 正解ボックス $c$: デフォルトボックスの座標のオフセット ((cx, cy) のように書く) $d$: ディフォルトバウンディングボックス $ω$: 幅 $h$: 高さ $α$: ハイパーパラメーター (実験では1とした)
確信度誤差関数
位置特定誤差関数
$$ L_{loc}(x,l,g) = \sumN_{i \in Pos}\sum_{m \in {cx, cy, w, h}} x^k_{ij} {\rm smooth_{L1}}(l^m_i-\hat{g}^m_j) $$
正規化
$$ \hat{g}^{cx}_j = (g^{cx}_j - d^{cx}_i) / d^{w}_i $$
$$ \hat{g}^{cy}_j = (g^{cy}_j - d^{cy}_i) / d^{h}_i $$
$$ \hat{g}^{w}_j = \log(g^{w}_j / d^{w}_i) $$
$$ \hat{g}^{h}_j = \log(g^{h}_j / d^{h}_i) $$
デフォルトボックスのスケールとアスペクト比の選び方
デフォルトボックスのアスペクト比の計算
- k番目の特徴マップのスケール $s_k$
高さと幅
$ a_r $ : アスペクト比{1, 2, 3, 1/2, 1/2}
$$ h_k^a = \frac{s_k}{\sqrt{a_r}} $$
$$ ω_k^a = s_k(\sqrt{a_r}) $$
- デフォルトボックスの中心
$$ (\frac{i+0.5}{|f_k|}, \frac{j+0.5}{|f_k|}) $$
$|f_k|$ : k番目の特徴マップのサイズ
3. 検証
- ILSVRC CLS-LOCで事前に訓練されたVGG16をベースに検証が行われた
3.1 性能比較 1 - PASCAL VOC2007
PASCAL VOC 2007
PASCAL VOC 2007 テスト結果
- 全体平均的にSSDの精度が高いことがわかる
- 最高で81.6% mAPを記録
- 入力画像は大きい方が良い
PASCAL VOC 2007 テストの動物、乗り物、家具の分類
$Cor$ : 正解 $Loc$ : 位置の間違い $Sim$ : 似たカテゴリの間違い $Oth$ : 別の物体との間違い $BG $ : 背景との間違い
発見と課題
- SSDはR-CNNより位置特定誤差が少ない
- カテゴリで多くの取り違えをしてしている
- 複数カテゴリの場所を共有していることが部分的な原因
- 小さな物体ではうまく認識できないことが多い
3.4 性能比較 2 -COCO
COCO
- セマンティックセグメンテーション情報が付加されたデータセット
- COCOの物体は小さい傾向にある
- R-CNNよりも良い結果が出ている
3.7 Inference time
- Fast YOLOは155FPSと出ているが精度が22%ほど低い
- それ以外は速度と精度の両方でより良い結果が出ている
- SSDの計算時間の80%はベースネットワークに使われているため、この速度が改善されればより早いモデルになることができる