天天看點

【目标檢測】SSD算法學習

SSD的特點:

- 無region proposal過程,在各個feature map上産生固定的default boxes;

- 網絡結構端到端,可進行端到端的訓練;

網絡結構:

【目标檢測】SSD算法學習

- base network: 截斷的VGG16;

- 在其後添加6個extra layers(conv layers):conv6, conv7, conv8_2, conv9_2, conv10_2, conv11_2;

檢測過程:

- 樣本圖像輸入(input image) ;

- 通過base network,生成特征圖F1;

- 由F1依次通過各extra layers生成6個特征圖Fv6, Fv7, Fv8_2, Fv9_2, Fv10_2, Fv11_2;

- 加上conv4_3生成的特征圖Fv4_3,Fv7, Fv8_2, Fv9_2, Fv10_2, Fv11_2共6個特征圖,用于生成檢測框;

- 各特征圖由相應3*3卷積核(conv11_2特征圖分辨率為1*1,應當使用1*1卷積核),基于固定預選框生成對應檢測框,卷積核次元為[3, 3, (4/6)*(classes + 4)] (4/6:預選框個數,classes:總類别數,4:{x, y, w, h});

- 根據參與生成檢測框的各特征圖分辨率,任意類别得到8732個檢測框,經過NMS子產品處理得到最終的檢測結果;

訓練過程:

- 損失函數:

【目标檢測】SSD算法學習

    損失函數由分類損失函數(confidence loss)和回歸損失函數(location loss)權重構成;

【目标檢測】SSD算法學習

    分類損失函數為Softmax loss,

【目标檢測】SSD算法學習

代表ith預選框與類别為p的jth标定框的比對情況{0, 1},針對所有樣本計算;

【目标檢測】SSD算法學習

     回歸損失函數為

【目标檢測】SSD算法學習

損失函數,僅對正樣本檢測框計算;

- 政策 - 預選框比對标定框:首先比對與任一标定框IoU最高的預選框,其次比對預選框中與标定框IoU高于0.5的,比對到的框均為正樣本;

- Hard negative mining:比對後會得到少量的正樣本預選框和大量的負樣本預選框,進行分類任務訓練時會嚴重偏向負樣本,是以需要控制負樣本數量,通過對樣本的分類損失由高到低排序,按順序選取損失值大的負樣本使neg:pos = 3:1;

- 訓練過程:base network由ImageNet預訓練得到的模型初始化,對于輸入的訓練樣本,通過卷積神經網絡獲得若幹檢測框,通過預選框比對政策與Hard negative mining計算損失函數進行訓練。

預選框尺寸及長寬比設定:

- 預選框設定僅存在于Fv4_3,Fv7, Fv8_2, Fv9_2, Fv10_2, Fv11_2共6張特征圖;

- 特征圖分辨率:由高到低;預選框所覆寫的範圍:由小到大(對于固定的像素點預選框是固定的,但對于不同分辨率的特征圖,預選框映射回原圖的比例是在增大的);

- 比例計算:

【目标檢測】SSD算法學習
【目标檢測】SSD算法學習

 = 0.2,

【目标檢測】SSD算法學習

 = 0.9,m = 5(除去Fv4_3,Fv4_3對應比例為0.1),長寬比設定:{1, 2, 1/2, 3, 1/3},對于某一特征圖,設其比例為

【目标檢測】SSD算法學習

,則預選框基準邊長

【目标檢測】SSD算法學習

 = width *

【目标檢測】SSD算法學習

(width為圖檔寬,如:300*300),對于長寬比為2的預選框,長為

【目标檢測】SSD算法學習

,寬為

【目标檢測】SSD算法學習

,對于長寬比為1的預選框,邊長同樣有兩種:

【目标檢測】SSD算法學習

【目标檢測】SSD算法學習

個人了解,如有錯誤歡迎指正。

繼續閱讀