SSD使用VGG-16-Atrous做爲基礎網絡,其中黃色部分爲在VGG-16基礎網絡上填加的特徵提取層。SSD與yolo不一樣之處是除了在最終特徵圖上作目標檢測以外,還在以前選取的5個特特徵圖上進行預測。
SSD圖1爲SSD網絡進行一次預測的示意圖,能夠看出,檢測過程不只在填加特徵圖(conv8_2, conv9_2, conv_10_2, pool_11)上進行,爲了保證網絡對小目標有很好檢測效果,檢測過程也在基礎網絡特徵圖(conv4_3, conv_7)上進行。網絡
注意:圖中fc6, fc7名爲fc,實際上是卷積層。
SSD圖2爲整個SSD訓練網絡的結構,因爲圖像所含層數太多,網絡中不能看到每層細節,我重畫其中部分層爲綠色,做爲表明。能夠看出,GT標籤在分特徵圖上生成priorbox,即再將全部priobox組合爲mbox_priorbox做爲全部默認框的真實值。再看預測過程,會在所選取的特徵圖進行兩個 3x3卷積,其中一個輸出每一個默認框的位置(x, y, w, h)四個值,另外一個卷積層輸出每一個默認框檢測到不一樣類別物體的機率,輸出個數爲預測類別個數。再將全部的默認框位置整合爲mbox_loc,將全部默認框預測類別的向量組合爲mbox_conf。mbox_loc、mbox_conf爲全部預測默認框,將它與全部默認框的真實值mbox_priorbox進行計算損失,獲得mbox_loss。
圖中data下方每一個priorbox都對應了min_size與max_size,表示不一樣特徵圖上的默認框在原圖上的最小與最大感覺野。關於不一樣特徵圖上的min_size與max_size,論文中給出的計算公式,惋惜與實現的prototxt中的參數並不對應。
SSD的損失函數如圖3所示,由每一個默認框的定位損失與分類損失構成。
函數
SSD訓練過程當中使用的數據加強對網絡性能影響很大,大約有6.7%的mAP提高。性能
(1) 隨機剪裁:採樣一個片斷,使剪裁部分與目標重疊分別爲0.1, 0.3, 0.5, 0.7, 0.9,剪裁完resize到固定尺寸。.net
(2) 以0.5的機率隨機水平翻轉。blog
基礎網絡部分特徵圖分辨率高,原圖中信息更完整,感覺野較小,能夠用來檢測圖像中的小目標,這也是SSD相對於YOLO檢測小目標的優點所在。增長對基礎網絡conv4_3的特徵圖的檢測可使mAP提高4%。v8
數據集中目標的開關每每各式各樣,所以挑選合適形狀的默認框可以提升檢測效果。做者實驗得出使用瘦高與寬扁默認框相對於只使用正方形默認框有2.9%mAP提高。get
一般卷積過程當中爲了使特徵圖尺寸特徵圖尺寸保持不變,經過會在邊緣打padding,但人爲加入的padding值會引入噪聲,所以,使用atrous卷積可以在保持感覺野不變的條件下,減小padding噪聲,關於atrous參考。本文SSD訓練過程當中而且沒有使用atrous卷積,但預訓練過程使用的模型爲VGG-16-atrous,意味着做者給的預訓練模型是使用atrous卷積訓練出來的。使用atrous版本VGG-16做爲預訓模型比較普通VGG-16要提升0.7%mAP。io
做者發現SSD對小目標檢測效果很差(但也比YOLO要好,所以多特徵圖檢測),這是由於小物體在高層特徵圖上保留不多的信息,經過增長輸入圖像的尺寸可以解決對小物體檢測效果。
基礎