SSD: Single Shot MultiBox Detector
intro: ECCV 2016 Oral
arxiv: http://arxiv.org/abs/1512.02325
paper: http://www.cs.unc.edu/~wliu/papers/ssd.pdf
slides: http://www.cs.unc.edu/%7Ewliu/papers/ssd_eccv2016_slide.pdf
github(Official): https://github.com/weiliu89/caffe/tree/ssd
video: http://weibo.com/p/2304447a2326da963254c963c97fb05dd3a973
github: https://github.com/zhreshold/mxnet-ssd
github: https://github.com/zhreshold/mxnet-ssd.cpp
github: https://github.com/rykov8/ssd_keras
github: https://github.com/balancap/SSD-Tensorflow
github: https://github.com/amdegroot/ssd.pytorch
github(Caffe): https://github.com/chuanqi305/MobileNet-SSD
SSD網絡結構以及原理
首先使用VGG16作爲base network,然後同其它的檢測網絡一樣替換掉VGG16本身的兩個全連接層,在SSD中直接改爲卷積層。
網絡結構的變化,又加入了4個卷積層,SSD與yolo不同之處是除了在最終特徵圖上做目標檢測之外,還在之前選取的5個特特徵圖上進行預測。SSD圖1爲SSD網絡進行一次預測的示意圖,可以看出,檢測過程不僅在填加特徵圖(conv8_2, conv9_2, conv_10_2, pool_11)上進行,爲了保證網絡對小目標有很好檢測效果,檢測過程也在基礎網絡特徵圖(conv4_3, conv_7)上進行。
此部分貼出幾個比較清楚的文章:
http://blog.csdn.net/zy1034092330/article/details/72862030
http://www.cnblogs.com/fariver/p/7347197.html
https://zhuanlan.zhihu.com/p/28867241
SSD的缺點以及相應的方案
SSD的缺點:
1. 需要人工設置prior box的min_size,max_size和aspect_ratio值。網絡中prior box的基礎大小和形狀不能直接通過學習獲得,而是需要手工設置。而網絡中每一層feature使用的prior box大小和形狀恰好都不一樣,導致調試過程非常依賴經驗。
2. 雖然採用了pyramdial feature hierarchy的思路,但是對小目標的recall依然一般,並沒有達到碾壓Faster RCNN的級別。作者認爲,這是由於SSD使用conv4_3低級feature去檢測小目標,而低級特徵卷積層數少,存在特徵提取不充分的問題。
針對上述缺點1,參考鏈接: https://github.com/zhreshold/mxnet-ssd/issues/25
針對上述缺點2,參考鏈接:爲什麼SSD(Single Shot MultiBox Detector)對小目標的檢測效果不好?