深層学習

YOLOとSSD

YOLOとSSDは、候補領域を別工程で作らず、画像から矩形・信頼度・クラスを一度のネットワーク評価で予測する一段階検出器です。YOLOのグリッド回帰とSSDのマルチスケール特徴・デフォルトボックスの違いを整理します。

  • A|中核
  • 深層学習

数式の記号で止まったら 記号の読み方 (∂・⊙・転置・上付き添字を、読み方から)

ひとことで言うと

YOLOとSSDは、画像中の物体候補を先に切り出す工程を置かず、1回のネットワーク評価で矩形とクラスを直接予測する一段階検出器です。YOLOは画像をグリッドに分け、各セルから矩形・信頼度・クラス確率を回帰します。SSDは特徴マップ上のデフォルトボックスを基準に、クラススコアと矩形の補正量を予測します。

YOLOは、画像を方眼紙に置いて「このマスの担当物体はここ」と一気に書き込む方式です。SSDは、粗い方眼紙と細かい方眼紙を重ね、各マスに縦長・横長などの型紙を複数置いてから、対象に合うよう型紙を調整する方式です。

なぜ必要か

検出を分類器の再利用と候補領域の後処理の組合せとして構成すると、画像の切り出しや特徴の再計算がパイプラインに入り、推論速度と実装の一貫性を損ねます。YOLOは検出を画像全体から矩形座標とクラス確率への単一の回帰問題として定式化し、検出性能を直接最適化できる単一ネットワークにまとめました。SSDも候補領域生成と、その後の画素・特徴の再サンプリングをなくし、学習と推論を一つの枠組みにしています。

系統推論の流れ得意な判断
二段階検出候補領域を作る → 各候補を分類・補正位置の精密さを取りやすいが工程が増える
YOLO画像 → グリッドごとの直接予測全体を一度に見て高速に出す
SSD画像 → 複数特徴マップ上のボックス予測位置・サイズの異なる対象を分担する

一段階化の代償は、速さと精度の設計上の交換です。YOLO論文は、既存の検出システムに比べて局在化の誤りが多い一方、背景を物体と誤検出することは少ないと報告しています。SSD論文は、提案領域を使う方法に匹敵する精度を保ちながら高速で、他の一段階法より精度がよいという比較を示しています。したがって「一段階だから常に低精度」ではなく、どの予測単位に空間とスケールの自由度を持たせたかで見るのが実装上の要点です。

仕組み

YOLO:セルが担当する回帰

画像を S×SS\times S のグリッドに分けます。物体中心が入るセルを、その物体を検出する担当にします。各セルは BB 個の矩形候補と信頼度、さらに物体があるという条件付きクラス確率を出します。矩形の中心 (x,y)(x,y) はセル内の相対位置、幅 ww と高さ hh は画像全体に対する相対量として表せるため、出力は画像全体から直接得られます。

セル ii の出力を次のようにまとめます。

oi=(xi,1,yi,1,wi,1,hi,1,ci,1,…,ci,B,pi)\mathbf{o}_i = (x_{i,1},y_{i,1},w_{i,1},h_{i,1},c_{i,1},\ldots,c_{i,B},\mathbf{p}_i)

oi\mathbf{o}_i はセルの予測ベクトル、(x,y,w,h)(x,y,w,h) は矩形、cc は各矩形の信頼度、pi\mathbf{p}_i はセルに物体があるときのクラス確率ベクトルです。ここで重要なのは、矩形候補を別のネットワークが提案するのではなく、同じ順伝播の出力として位置と分類を同時に出す点です。一方、セルごとの空間的な制約が強く、近接した小物体の集団やセル境界付近では表現力が制限されます。

SSD:基準ボックスと複数の解像度

SSDは、特徴マップの各位置に複数のデフォルトボックスを置きます。デフォルトボックスは異なるスケールとアスペクト比を持つ基準矩形で、ネットワークは各基準についてクラススコアと、実際の物体に合わせる補正量を予測します。学習では基準ボックスと正解矩形をIoUで対応付け、対応した基準を正例として補正と分類を学習します。IoUやNMSの定義自体はここでは前提にします。

さらに、解像度の異なる複数の特徴マップから予測します。高解像度のマップは小さい対象を細かい位置で扱いやすく、低解像度のマップは大きい対象を広い受容範囲で扱いやすい、という分担です。画像を複数サイズで何度も処理するのではなく、一つのネットワーク内で異なる層の特徴を使ってスケール差を吸収します。

観点YOLOSSD
予測単位グリッドセルごとの矩形特徴マップ位置ごとのデフォルトボックス
形状の持たせ方セルから幅・高さを回帰基準のスケール・比率+補正量
スケール対応グリッドとネットワークの出力に依存複数解像度の特徴マップで明示的に分担
典型的な迷い1セル1クラスという制約対応する基準ボックスと正負例の設計

試験でどう問われるか

問われ方正解に寄る条件引っかけ
YOLOの「回帰」の意味画像から矩形座標とクラス確率を直接出す候補領域を先に生成してから分類する、とする
YOLOのグリッド物体中心を含むセルが担当し、セルが複数矩形を予測する画像全体で候補を一つだけ出す、とする
SSDのデフォルトボックス各特徴マップ位置の基準矩形に対するスコアと補正を出す予測矩形がすべて同じ比率・同じ尺度だとする
SSDのマルチスケール解像度の異なる複数特徴マップから大小の対象を予測する入力画像をサイズ変更して別々に推論する、とする
二段階との比較候補生成を省くため速くしやすいが、精度・局在化との交換がある一段階は必ず精度が低い、と断定する

実装で確かめる

実装の核心は、同じ画像に対して「候補矩形を外から渡す」のではなく、予測テンソルの形を先に決めることです。次のコードは、YOLO型のセル出力数とSSD型の複数特徴マップ上の基準ボックス数を数えます。実際の学習やデコードを省いた、形状確認用の最小例です。

import numpy as np

S, B, C = 7, 2, 20
yolo_shape = (S, S, B * 5 + C)
feature_maps = [(38, 38, 4), (19, 19, 6), (10, 10, 6)]
ssd_candidates = sum(h * w * boxes for h, w, boxes in feature_maps)

yolo = np.zeros(yolo_shape)
ssd = np.zeros((ssd_candidates, 4 + C))
assert yolo.shape == (7, 7, 30)
assert ssd.shape[0] == 8542

YOLOの B×5+CB\times5+C は、各矩形の中心・幅・高さ・信頼度の5値とクラス確率を合わせた数です。SSDの候補数は、特徴マップの高さ・幅と、その位置に置くデフォルトボックス数の積を全マップで足したものです。実際のモデルでは、ここに正解との対応付け、損失、デコード、最後のNMSが続きます。

取り違えやすいもの

用語YOLO・SSDとの切り分け
一段階検出候補領域生成を独立した前段にせず、1回のネットワーク評価で予測する系統の呼び名です
二段階検出候補領域を作る段階と、その候補を分類・補正する段階を分けます。詳細な構造はここでは扱いません
YOLOグリッドセルを予測の責任単位にし、矩形とクラス確率を直接回帰します
SSD複数解像度の特徴マップと、各位置のデフォルトボックスを使って予測します
アンカー/デフォルトボックスSSDでは基準矩形として使われ、出力はその座標そのものではなく、クラススコアと補正量です
IoU/NMS対応付けや重複除去に関わる前提部品で、YOLOとSSDの設計差そのものではありません

想起チェック

YOLOが検出を単一の回帰問題として扱うとは何を直接予測することか

画像全体から、グリッドセルごとの矩形座標、信頼度、クラス確率を一つのネットワークで予測することです。候補領域を別工程で作ってから分類する構成ではありません。

SSDが大小の物体を扱うために使う二つの設計は何か

解像度の異なる複数の特徴マップと、各位置に置く異なるスケール・アスペクト比のデフォルトボックスです。

YOLOとSSDの違いを予測単位で言い分けると

YOLOはグリッドセルが責任単位、SSDは特徴マップ上のデフォルトボックスが基準単位です。どちらも一段階ですが、スケールと形状の持たせ方が異なります。

一段階検出を二段階検出より速くしやすい理由と、その代償は何か

候補生成と候補ごとの再計算を省き、単一ネットワークで処理するためです。代償として、予測単位の制約や特徴表現の設計によって、局在化精度や小物体への対応との交換が生じます。

出典