SSD(單次多框偵測器)
SSD——Single Shot MultiBox Detector(Liu 等人,2016)——是一個單階段偵測器,其招牌構想是從多張不同解析度的特徵圖做預測,而不只是一張。它和 YOLO 一樣一次傳遞就偵測、沒有提議階段,但它直接攻擊 YOLO 在多尺度物件上的弱點,靠的是認識到 CNN 的不同層自然會「看見」不同大小的物件:淺層、高解析度的圖適合小物件;深層、低解析度的圖適合大物件。
具體而言,SSD 在一連串逐步縮小的特徵圖上(例如 38×38、19×19、10×10、5×5、3×3、1×1)接上小型卷積預測頭。在每張圖的每一格上,它鋪設一組數種長寬比的預設框(它對錨框的稱呼),由一個 3×3 卷積對每個預設框預測 C+1 個類別分數與 4 個框偏移。大特徵圖配小預設框抓小物件;小特徵圖配大預設框抓大物件。所有頭在一次前向傳遞中一起發射;最後由 NMS 清理。
訓練採用以 IoU 為基礎的匹配(每個真實框匹配最佳的預設框,外加任何 IoU > 0.5 者),並使用結合 softmax 分類與 smooth-L1 定位的損失。一個關鍵成分是難負樣本挖掘(hard negative mining):由於絕大多數預設框都是背景,SSD 只保留最難的負樣本,使正負比約為 1:3,避免容易的背景淹沒損失——這正是後來 focal loss 以更優雅方式處理的同一個失衡問題。
SSD 在當時擊中速度與準確度的甜蜜點(SSD300 約 59 fps,SSD512 較準但較慢),並推廣了多尺度特徵的構想,而 FPN 很快以由上而下的連接將其一般化。它主要殘留的弱點是小物件,因為它最淺的特徵圖仍缺乏強烈的語意特徵——這正是特徵金字塔網路所要彌合的缺口。
SSD 的多尺度頭是一個由下而上的金字塔:每張圖原樣使用,所以淺層高解析度的圖(必須在那裡找到小物件)語意薄弱。FPN 的修正是把深層、語意豐富的特徵流回那些淺層圖——光是這一個改變,就解釋了為何基於 FPN 的偵測器在小物件上大勝普通 SSD。