SSD: Single Shot MultiBox Detector
作者: Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg
引用: Liu, Wei, et al. "SSD: Single Shot MultiBox Detector." arXiv preprint arXiv:1512.02325 (2015).
引用次數: 23(Google Scholar,by 2016/11/28).
項目地址: https://github.com/weiliu89/caffe/tree/ssd
主流的目標檢測算法一般首先是一個region proposal的過程,即提出候選區域! SSD把這個過程取消了!!! 這是檢測的速度加快的重要原因!
SSD網絡包含兩個部分,第一部分是基礎網絡(就是用於圖像分類的網絡,但是softmax分類層裁掉了); 第二部分是本文自己設計的網絡,主要實現下面的目的: 使用多尺度特征maps進行檢測.
創新點1: 使用多尺度特征maps進行目標檢測
何凱明的多級pooling用的是conv5的特征maps,在這些特征maps來提取region proposals(bounding boxes從原圖上映射到特征maps上),充分利用這些特征maps; 現在好像論文漸漸有這種趨勢,開始使用多個特征maps上的特征,而不僅僅是使用最后一級的! 本文的SSD就是采用個特征maps,稱之為多尺度特征maps.
創新點2: 使用卷積預測器進行目標檢測
創新點3: 默認的boxes以及aspect ratios
這里將一些默認的bounding boxes和每個特征圖cell相關聯!
1. 圖像經過CNN,得到圖像的特征maps: A
2. 對這些特征maps進行多級提取特征maps: B
3. 在每個特征map中各個位置location,每個location對應多個default boxes
4. 計算每個default boxes的loc offset以及class score
5. 根據default box以及loc offset計算區域位置P,在根據class score計算每個default box的損失函數,累加得到最終的損失函數.
使用了圖像的各個尺度下各個位置的特征進行了回歸,既保證了速度,也保證了准確度
計算使用了多個尺度的特征maps,那就來看看到底有哪些尺度的特征maps: 輸入圖像的大小為:input:3*300*300, 使用的各級卷積層為: conv4_3:512*38*38, conv7:1024*19*19, conv8_2:512*10*10, conv9_2:256*5*5, conv10_2:256*3*3, Avg Pooling:256*1*1,這些卷積層從大到小逐級遞減,這樣的話就是多尺度檢測.
2 The Single Shot Detector (SSD)
圖1. SSD框架. GT是Ground Truth的縮寫. (a) 訓練的時候SSD僅僅需要一張輸入圖像以及每個待識別目標的GT矩形框. 使用卷積的方式, 我們構造一個具有不同aspect ratios的默認矩形框小集合(如: 4個小矩形框), 用這幾個boxes在幾個特征maps(這幾個特征maps尺度不同, 如8x8(圖b), 4x4(圖c))的每個位置進行估計. 對於每個默認的box, 我們預測兩個指標: 1) 形狀偏移; 2) 對box所覆蓋區域判定為每個類別(c1,c2,...,cp)的概率值.
2.1 Model
原理概括: SSD基於一個前向傳播CNN, 可以產生一系列固定大小的bounding boxes, 以及每個box包含每個目標(c1,c2,...,cp)的可能性(score); 然后進行一個非極大值抑制, 得到最終的predictions. SSD主要由兩部分組成: 基礎網絡(用於圖像分類的標准網絡,去掉了后面用於分類的層, VGG-16, 將fc6和fc7去掉) + 輔助的網絡結構(見圖2中的Extra Feature Layers, 加了5層卷積層, 用作多尺度采樣).
多尺度特征 maps for detection
SSD在基礎的網絡結構(VGG-16)后面添加了額外的卷積層(見圖2中的Extra Feature Layers), 這些卷積層的大小逐級遞減(看圖2中的: 19x19, 10x10, 5x5, 3x3, 1x1), 這樣的話, 可以在多尺度下面進行預測.
卷積 predictors for detection
對於每個添加的特征層, 可以使用一組卷積濾波器(如圖2中對19x19x1024的卷積maps使用3x3x1024的卷積核, 產生的predictions就是歸屬類別的一個得分)
Default boxes and aspect ratios
2.2 Training
用於檢測的多尺度特征圖: 300x300(輸入圖像大小), 38x38, 19x19, 10x10, 5x5, 3x3, 1x1.
Convolutional predictors for detection: 對於每個添加的特征層, 我們使用一組卷積濾波器, 可以得到一組固定數目的目標檢測的預測, 對於一個尺寸為mxn的p通道特征層, 我們使用一個3x3xp的小核作為一個基礎元素來預測一個坑的檢測的信息(類別信息, 位置信息)
圖像經過卷積網絡, 得到圖像的base特征A; 再對這個特征進行多層級的提取特征圖B; 在每個特征圖中的各個位置, 每個location對應多個default box; 計算每個默認box的loc offset以及class score. 根據默認box以及loc offset計算區域位置P, 再根據class score, 計算每個默認box的損失函數, 累加得到最后的損失函數.
使用圖像在各個只讀下的各個位置的特征進行回歸, 既保證了速度, 也保證了准確度.