SSD: Single Shot MultiBox Detectorios
做者: Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berggit
引用: Liu, Wei, et al. "SSD: Single Shot MultiBox Detector." arXiv preprint arXiv:1512.02325 (2015).github
引用次數: 23(Google Scholar,by 2016/11/28).算法
項目地址: https://github.com/weiliu89/caffe/tree/ssd網絡
主流的目標檢測算法通常首先是一個region proposal的過程,即提出候選區域! SSD把這個過程取消了!!! 這是檢測的速度加快的重要緣由!框架
SSD網絡包含兩個部分,第一部分是基礎網絡(就是用於圖像分類的網絡,可是softmax分類層裁掉了); 第二部分是本文本身設計的網絡,主要實現下面的目的: 使用多尺度特徵maps進行檢測. 函數
創新點1: 使用多尺度特徵maps進行目標檢測spa
何凱明的多級pooling用的是conv5的特徵maps,在這些特徵maps來提取region proposals(bounding boxes從原圖上映射到特徵maps上),充分利用這些特徵maps; 如今好像論文漸漸有這種趨勢,開始使用多個特徵maps上的特徵,而不單單是使用最後一級的! 本文的SSD就是採用個特徵maps,稱之爲多尺度特徵maps.設計
創新點2: 使用卷積預測器進行目標檢測blog
創新點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,這些卷積層從大到小逐級遞減,這樣的話就是多尺度檢測.
圖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)的機率值.
原理歸納: 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
用於檢測的多尺度特徵圖: 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的損失函數, 累加獲得最後的損失函數.
使用圖像在各個只讀下的各個位置的特徵進行迴歸, 既保證了速度, 也保證了準確度.