基於深度學習的目標檢測演算法:SSD

SSD: Single Shot MultiBox Detector

問題引入:

目前,常見的目標檢測演算法,如Faster R-CNN,存在著速度慢的缺點。該論文提出的SSD方法,不僅提高了速度,而且提高了準確度。

SSD:

該論文的核心思想:

該論文的主要貢獻:

1. 提出了SSD目標檢測方法,在速度上,比之前最快的YOLO還要快,在檢測精度上,可以和Faster RCNN相媲美

2. SSD的核心是在特徵圖上採用卷積核來預測一系列default bounding boxes的類別分數、偏移量

3. 為了提高檢測準確率,在不同尺度的特徵圖上進行預測,此外,還得到具有不同aspect ratio的結果

4. 這些改進設計,實現了end-to-end訓練,並且,即使圖像的解析度比較低,也能保證檢測的精度

5. 在不同的數據集,如:PASCAL VOC、MS COCO、ILSVRC,對該方法的檢測速度、檢測精度進行了測試,並且與其他的方法進行了對比。

SSD模型結構:

剛開始的層使用圖像分類模型中的層,稱為base network,在此基礎上,添加一些輔助結構:

1. Mult-scale feature map for detection

在base network後,添加一些卷積層,這些層的大小逐漸減小,可以進行多尺度預測

2. Convolutional predictors for detection

每一個新添加的層,可以使用一系列的卷積核進行預測。對於一個大小為m*n、p通道的特徵層,使用3*3的卷積核進行預測,在某個位置上預測出一個值,該值可以是某一類別的得分,也可以是相對於default bounding boxes的偏移量,並且在圖像的每個位置都將產生一個值,如圖2所示。

3. Default boxes and aspect ratio

在特徵圖的每個位置預測K個box。對於每個box,預測C個類別得分,以及相對於default bounding box的4個偏移值,這樣需要(C+4)*k個預測器,在m*n的特徵圖上將產生(C+4)*k*m*n個預測值。這裡,default bounding box類似於FasterRCNN中anchors,如圖1所示。

個人感覺SSD模型與Faster RCNN中的RPN很類似。SSD中的dafault bounding box類似於RPN中的anchor,但是,SSD在不同的特徵層中考慮不同的尺度,RPN在一個特徵層考慮不同的尺度。

SSD模型訓練:

1. Matching strategy

將每個groundtruth box與具有最大jaccard overlap的defalult box進行匹配,這樣保證每個groundtruth都有對應的default box;並且,將每個defalut box與任意ground truth配對,只要兩者的jaccard overlap大於某一閾值,本文取0.5,這樣的話,一個groundtruth box可能對應多個default box。

jaccard overlap的計算:

2.Training objective

Let

be an indicator for matching thei-th default box to thej-th ground truth box of categoryp。

損失函數的計算類似於Fast RCNN中的損失函數,總的損失函數是localization loss (loc) 和 confidence loss (conf)的加權和,如下:

confidence loss:

localization loss (loc) :

其中,(gcx, gcy, gw, gh)表示groundtruth box,(dcx, dcy, dw, dh)表示default box,(lcx, lcy, lw, lh)表示預測的box相對於default box的偏移量。

3. Choosing scales and aspect ratios for default boxes

為了處理不同尺度的物體,一些文章,如:Overfeat,處理不同大小的圖像,然後將結果綜合。實際上,採用同一個網路,不同層上的feature map,也能達到同樣的效果。圖像分割演算法FCN表明,採用低層的特徵圖可以提高分割效果,因為低層保留的圖像細節信息比較多。因此,該論文採用lower feature map、upper feature map進行預測。

一般來說,CNN的不同層有著不同的感受野。然而,在SSD結構中,default box不需要和每一層的感受野相對應,特定的特徵圖負責處理圖像中特定尺度的物體。在每個特徵圖上,default box的尺度計算如下:

其中,smin = 0.2,smax = 0.9

default box的aspect ratios有:{1, 2, 3,1/2,1/3},對於aspect ratio = 1,額外增加一個default box,該box的尺度為

每一個default box,寬度、高度、中心點計算如下:

4. Hard negative mining

經過matching後,很多default box是負樣本,這將導致正樣本、負樣本不均衡,訓練難以收斂。因此,該論文將負樣本根據置信度進行排序,選取最高的那幾個,並且保證負樣本、正樣本的比例為3:1。

5. Data augmentation

為了使得模型對目標的尺度、大小更加魯棒,該論文對訓練圖像做了data augmentation。每一張訓練圖像,由以下方法隨機產生:

1)使用原始圖像

2)採樣一個path,與目標的最小jaccard overlap為0.1、0.3、0.5、0.7、0.9 (這個具體怎麼做呢???)

3)隨機採樣一個path

採樣得到的path,其大小為原始圖像的[0.1, 1],aspect ratio在1/2與2之間。當groundtruth box的中心在採樣的path中時,保留重疊部分。經過上述採樣之後,將每個採樣的pathresize到固定大小,並以0.5的概率對其水平翻轉。

參考博客:http://blog.csdn.NET/smf0504/article/details/52745070

推薦閱讀:

TensorFlow + Keras 實戰 YOLO v3 目標檢測圖文並茂教程
目標檢測論文閱讀:An Analysis of Scale Invariance in Object Detection – SNIP
目標檢測論文閱讀:Cascade R-CNN: Delving into High Quality Object Detection
讀論文系列:Object Detection ECCV2016 SSD
深度學習之——編譯、測試、訓練Faster-rcnn的時候遇到的一些問題

TAG:學習 | 演算法 | 目標 | 目標檢測 | 檢測 | 深度學習 | 深度 | 算法 |