SSD: Single Shot MultiBox Detector 論文筆記

SSD: Single Shot MultiBox Detector 論文筆記

該論文提出了一種只需使用單個神經網絡就可以實現目標檢測的模型。該模型使用多個不同層的feature maps來使得該模型能夠處理多種不同尺度的目標。該模型省略了proposals generation、subsequent pixel和feature重採樣這些過程,並將所有的計算全部封裝到一個網絡中,因此整個模型的結構看起來要簡單很多。同時該模型將原本VGG中的fc6和fc7用astrous算法代替,使得網絡的參數量和計算量大大減少。對於300*300的輸入圖像,該模型的速度可以達到59FPS在VOC2007測試集上(用Titan X GPU),72.1%的mAP。

模型細節

這裏寫圖片描述

這裏寫圖片描述
SSD是一種基於前向反饋的卷積神經網絡模型,它能夠生成bboxes集合以及在每個bbox中一個目標類別出現的分數,然後再使用nms算法得到最終檢測的結果。該模型的前面的網絡層使用的是高質量的圖像分類網絡,通過這些網絡層先來實現對圖像的特徵提取,然後再在網絡的後面添加以下輔助結構來實現檢測的任務:
多尺度feature maps:在基網絡的卷積層conv4_3後面,還有用astrous算法得到的fc6和fc7網絡層,然後再新添加了3個卷積層和一個average pooling層。通過conv4_3,fc7,conv8_2,conv9_2,conv10_2,conv11_2層的feature maps,實現多尺度目標檢測。
用卷積去完成檢測的任務:對於新添加的卷積層得到的feature maps,SSD使用的是卷積層去生成對檢測目標的分數和偏移量的。
Default boxes和aspect ratios:每個feature map cell會相應的得到一個default box集,並且每個default box的相對於cell的位置是固定的。對於每個feature map cell,我們可以預測得到每個default box的offset,以及在每個default box中每個類可能出現的score。假設大小爲m*n的feature map中的每個cell可以生成k個default boxes,對於每個default box需要計算得到c個類的scores和4個offsets,則對於每個feature map cell此時需要有(c+4)*k個濾波器,可以得到(c+4)*k*m*n個輸出。
這裏寫圖片描述

訓練

正負樣本選擇:需要從多個不同的位置,aspect ratio和尺度中選擇與gt boxes相匹配的default boxes。具體策略:首先從生成的default boxes中選擇與gt boxes的Jaccard overlap最大的box作爲正樣本,然後從剩餘的default boxes中選擇與gt boxes的Jaccard overlap高於0.5的boxes作爲正樣本。這樣每個gt box可能對應有多個default boxes。
訓練目標函數:SSD的目標函數也是一個和faster rcnn類似的多任務損失函數:
這裏寫圖片描述
α 是一個平衡位置損失和置信度損失的超參數,設置爲1。

Default boxes的生成:在CNN中,低層的網絡層更能捕獲輸入目標細節性的特徵,而高層的網絡層則具有更大的感受野,能獲取圖像中更大的區域信息。SSD通過利用幾個不同網絡層的feature maps可以實現目標的多尺度的特點,而這相比於在訓練或者測試的時候,直接將圖像處理成不同的尺度,再進行檢測的方法,要方便很多。每個feature map的default boxes對應的在尺度計算如下:
這裏寫圖片描述
其中smin 是0.2,smax 是0.9,這意味着對於低層次的feature map對應的是0.2的尺度,最高層的feature map對應的是0.9的尺度。default boxes的aspect ratio設置爲ar{1,2,3,12,13} 。由此我們可以計算得到每個default box的寬(wak=skak )和高(hak=skak )。對於aspect ratio爲1的時候,再添加一個尺度爲sk=sksk+1 的default box。這樣每個feature map的位置就可以得到6個default box。同時設置每個default box的中心座標爲(i+0.5|fk|,j+0.5|fk| ),|fk| 爲feature map的大小,i,j[0,|fk|)
Hard Negative Mining:由於用於預測的每個feature map的位置會生成6個default boxes,在經過正負樣本策略選擇之後,正樣本只佔有一小部分,而剩餘的絕大多數default boxes是負樣本,這就造成了在訓練SSD 模型的時候,正負樣本不平衡的問題。因此在訓練過程中,採用了hard negative mining策略(根據置信度損失對所有的default boxes 進行排序,然後進行選擇使得正負樣本比例保持在3:1)來平衡正負樣本比率。
Data Augmentation:爲了提高SSD模型的魯棒性,對每個訓練圖像,還做了一下隨機採樣操作:
——直接使用原始圖像
——隨機採樣一個patch,使得patch與目標的最小Jaccard overlap爲0.1,0.3,0.5,0.7,0.9。
——隨機採樣一個patch
隨機採樣的patch大小在原始圖像的大小的[0.1,1]之間,aspect ratio在[1/2,2]之間。當gt box的中心在採樣patch中時,保留重疊部分。在採樣之後,每個patchresize到固定的大小,再以0.5的概率進行水平翻轉。

一些實驗結果

這裏寫圖片描述

這裏寫圖片描述

參考文獻

[1].Liu W, Anguelov D, Erhan D, et al. SSD: Single Shot MultiBox Detector[C]// European Conference on Computer Vision. Springer, Cham, 2016:21-37.
[2].Ren S, He K, Girshick R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[C]// International Conference on Neural Information Processing Systems. MIT Press, 2015:91-99.
[3].https://zhuanlan.zhihu.com/p/24954433

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章