剛開始什麼都不太懂,直接就把論文載下來看,看完腦袋滿是問號,因為論文中很多概念都是繼承其他論文的研究,所以很多細節概念並沒有講得特別清晰,後來看到一個SSD教學的投影片,雖然全部內容都是俄文,但投影片的圖就足夠讓我們清楚的了解SSD的整個大架構原理,因此很多圖都是截自這個影片的。底下有附上這投影片的連結,有興趣的朋友可以點擊觀看
SSD: Single Shot MultiBox Detector (How it works)
abstract:
SSD是當今最快的object detection算法,兼具了YOLO的速度與FasterRCNN的準度,本篇論文的最大特點是改進了YOLO只用最後一層來檢測目標而SSD運用多層feature map來做檢測,既兼顧大目標物體檢測亦提升小目標物體檢測的精度。本論文將YOLO在PASCAL VOC 2007 test的檢測精度由63.4%提升到74.3%,速度也從45FPS進展到59FPS(論文中闡述與圖中不同),此外,如果採用512*512的大圖片訓練的話,精度甚至可高達81.6%。
Main:
下面圖解說明YOLO與SSD的不同點: YOLO 是以最後一層全連接層來做box regression的動作,而SSD是結合各層的卷積網路來做box regression YOLO:
SSD: 本文以VGG當作基礎網路做了相關實驗,實際上SSD可以接在任何現有的網路後面,如下圖所示的,它是很多Detector組成的卷積網路
底下附上程式原始碼方便比較,原始碼來源如下: Tensorflow-SSD code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
下圖將第四個Detector拆開來,以便了解內部構造,如圖所示,輸入是個5X5X256的卷積特徵圖,而輸出是兩個卷積層,一個輸出形狀為5X5X12,用來預測每個box的四個座標,而每個位置可以自由地設定要幾個default box,像這例子就代表每個位置有三個不同比例的default box,因此輸出設計成12(3X4),另一個輸出形狀為5X5X63,代表每個default box需要21個分類,因此輸出設計成63(CX3),在這裡C為21(其中一類為背景類,因此在這裡的分類有20種)。
每個feature map分成25個位置當作中心點擺3個default box,因此總共有75個default box出現在這層
box預測如中間的紅色小框框所示,深度為4,每一層各存不同的資訊,分別是中心點的座標x,y,以及其寬和高w,h,右邊的小紅框框也是同樣的道理,分別是20種類別再加上一個背景類別
每一層的default box皆不同,將所有box集合起來就可以得到7308個default box