1. 程式人生 > >SSD論文淺析

SSD論文淺析

Single Shot MultiBox Detectordeepsystems

背景

        因為YOLO V1帶來的快速的檢測速度,而準確率卻遠不如faster-rcnn,而且前面博文所說,YOLO V1只在一個grid cell中預測一種class,並且只在最後一層的feature map進行box的預測,使得在大小尺寸上難以兼顧到。

        本文中提出的SSD,很重要的一點就是將之前基礎的網路中的feature map和之後的多尺度feature map一起進行prior boxes的選取,提高了boxes對尺寸的要求。文章中對於prior boxes的選擇與faster-rcnn中的anchor技術比較類似。

        可以說是 anchor+YOLO的產物了。

網路結構

論文中的網路結構採用的是VGG-16-Atrous,使得conv6(FC6)處的尺寸為19*19(看原始碼可以理解,dilate=True),這裡分別採用兩組3*3的卷積(SAME卷積)對各層的feature map進行處理。類似於YOLO的方法。

拿conv4_3舉例(以下的尺寸都是以此為例)

    第一組:實現localization的regression(x,y,w,h)4個引數,則共需要3*3*512的卷積核4*default boxes個,可能要問default boxes是什麼鬼東西

        default boxes:對應卷積層尺寸38*38,每一個畫素對應產生default boxes個box


如上圖 對於8*8和4*4的來說,default boxes=4

這就好辦了,我們為了得到regression,卷積出38*38*(4*default boxes)的結果。

第二組:實現每一類的confidence的計算,加入資料集共前景C類,則需要有(C+1)個confidence。又每一個畫素default boxes,則可知需要3*3*512的卷積核(C+1)*default boxes個,好了,我們得到了38*38*((C+1)*default boxes)的結果。

實驗中將第一組和第二組的結果進行concat,得到38*38*((4+(C+1))*default boxes)的卷積結果

    default box不同scale和aspect ratio的選擇策略
     Sk*300(初始的尺寸)表示的是第k層feature map取的scale大小,每一層feature map有不同的scale,同一層的又有不同的aspect ratio,基本做到了大小尺寸的覆蓋了。

每一層所取得default boxes不一樣。

自此,我們得到了38*38*4 + 19*19*6 + 10*10*6 + 5*5*6 + 3*3*4 + 1*1*4 = 8732個prior box

訓練

區分正負樣本

正樣本:先從GT(ground truth)考慮,將所有與GT最匹配(IoU最大)的prior box標為候選正樣本集;

再從prior box考慮,將所有與任一個GT的IoU>0.5的prior box標為正樣本集。

負樣本:剩下的即負樣本

但顯然存在負樣本過多的問題,論文中沒有詳細寫這麼平衡至1:3,原始碼中應該是有的,有關Hard negative mining技術

loss function分析

一張圖可以說明,其中N為正例數目(下文的jaccard overlap其實就是IoU,一毛一樣)


SSD 訓練的目標函式(training objective)源自於 MultiBox 的目標函式,但是本文將其拓展,使其可以處理多個目標類別。具體過程是我們會讓每一個 prior box 經過Jaccard係數計算和真實框的相似度,閾值只有大於 0.5 的才可以列為候選名單;假設選擇出來的是N個匹配度高於百分之五十的框吧,我們令 表示第 i 個預設框,j 表示第 j 個真實框,p表示第p個類。那麼xpij表示 第 i 個 prior box 與 類別 p 的 第 j 個 ground truth box 相匹配的Jaccard係數,若不匹配的話,則xpij=0。總的目標損失函式(objective loss function)就由 localization loss(loc) 與 confidence loss(conf) 的加權求和:

1、N 是與 ground truth box 相匹配的 prior boxes 個數

2、localization loss(loc) 是 Fast R-CNN 中 Smooth L1 Loss,迴歸 bounding boxes 的中心位置,以及 width、height;confidence loss(conf) 是 Softmax Loss(多了一個是否匹配的係數),輸入為每一類的置信度 c(已經歸一化的概率)

3、權重項 α,可在protxt中設定 loc_weight,預設設定為 1