[深度學習]Object detection物體檢測之SSD(8)
阿新 • • 發佈:2018-11-26
目錄
論文全稱:《SSD: Single Shot MultiBox Detector》
論文地址:https://arxiv.org/pdf/1512.02325.pdf
綜述
今天解讀的這篇了論文是著名的SSD目標檢測演算法,和YOLO一樣是一種one stage的演算法,區別於rcnn,fast rcnn,faster rcnn等two stage 的演算法。通過下圖可以看到SSD300和SSD512(指的是輸入影象的解析度)在檢測速度和精度方面均是state of art的。
SSD與其他演算法的區別
下圖可以清晰的表明了幾種流行的目標檢測演算法之間的區別:
- MulitiBox使用全連線來預測多個boxes的objectness(是否為一個物體)以及每一個box的offset(與真實值的偏移程度),然後再預測每一個box的物體類別;
- YOLO使用全連線預測多個boxes的objectness以及每一個box的offset,而且同時再預測每一個box的物體類別;
- Faster R-CNN使用卷積層預測多個boxes的objectness以及每一個box的offset,然後再預測每一個box的物體類別;
- SSD使用卷積層預測多個boxes的objectness以及每一個box的offset,同時預測每一個box的物體類別;
SSD的主要貢獻
1.Multi-Scale Feature Maps
在不同大小卷積層之後分別預測多個boxes的objectness以及每一個box的offset,大的卷積圖可以檢測到小的物體,小的卷積圖更傾向於檢測大的物體。
2.Splitting the Region Space
與YOLO每一個單元都要自適應邊界框不同,SSD採用了Faster R-CNN裡面的anchor的方法,對於每一個單元檢測都去匹配最近似的一個先驗anchor,因為不同的Groud Truth的長寬比不同需要很多時間去擬合,採取anchor的方法更容易迴歸。最後mAP得到了2.5的增長。
3.Data Augmentation
利用水平翻轉,隨機裁剪,顏色扭曲和隨機擴充套件可以做到資料增強而提高檢測精度。
SSD300網路結構
SSD/YOLO區別:
- YOLO在卷積層後接全連線層,即檢測時只利用了最高層Feature maps(包括Faster RCNN也是如此)
- SSD採用金字塔結構,即利用了conv4-3/conv-7/conv6-2/conv7-2/conv8_2/conv9_2這些大小不同的feature maps,在多個feature maps上同時進行softmax分類和位置迴歸
- SSD還加入了Prior box,類似Faster R-CNN的anchor機制
SSD網路的缺點
- 需要人工設定prior box的min_size,max_size和aspect_ratio值。網路中prior box的基礎大小和形狀不能直接通過學習獲得,而是需要手工設定。而網路中每一層feature使用的prior box大小和形狀恰好都不一樣,導致除錯過程非常依賴經驗。
- 雖然採用了pyramdial feature hierarchy的思路,但是對小目標的recall依然一般,並沒有達到碾壓Faster RCNN的級別。作者認為,這是由於SSD使用conv4_3低階feature去檢測小目標,而低階特徵卷積層數少,存在特徵提取不充分的問題。
參考文獻:
http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf