【CV論文筆記】SSD: Single Shot MultiBox Detector(SSD理解)

本文主要用于介紹Wei Liu等于2016年提出的SSD目標(biāo)檢測網(wǎng)絡(luò),該網(wǎng)絡(luò)結(jié)合了YOLO和Faster R-CNN的優(yōu)勢。本筆記主要為方便初學(xué)者快速入門,以及自我回顧。

論文鏈接:https://arxiv.org/pdf/1512.02325.pdf
tf源碼地址:https://github.com/balancap/SSD-Tensorflow
caffe源碼地址:https://github.com/weiliu89/caffe/tree/ssd .

為更好的理解該論文,建議先行閱讀YOLO網(wǎng)絡(luò)的相關(guān)論文,這里也附上本菇之前寫的1篇論文筆記供大家參考~
YOLO理解

基本目錄如下:

  1. 摘要
  2. 核心思想
  3. 總結(jié)

------------------第一菇 - 摘要------------------

1.1 論文摘要

本文提出了一種使用單一深度神經(jīng)網(wǎng)絡(luò)實現(xiàn)目標(biāo)檢測的方法。我們將其命名為:SSD。該網(wǎng)絡(luò)在特征圖上會離散化生成多個不同尺度大小的默認(rèn)邊界框,在預(yù)測的時候,網(wǎng)絡(luò)會對每一個默認(rèn)框進(jìn)行類別的打分,并且調(diào)整其位置使其更貼合真實目標(biāo)的形狀。另外,該網(wǎng)絡(luò)還結(jié)合了不同分辨率下提取的特征,從而應(yīng)對不同大小的目標(biāo)。SSD相比于那些需要區(qū)域候選的網(wǎng)絡(luò)(R-CNN系)來講,要更簡單,因為其僅用了一個網(wǎng)絡(luò)就把整套事情都做完了。因此,SSD是非常易于訓(xùn)練的,并且容易被集成進(jìn)一個大的系統(tǒng)中。實驗表明,在PASCAL, VOC, COCO和ILSVRC這些數(shù)據(jù)集上,相比于R-CNN系列,SSD都表現(xiàn)出了相當(dāng)強(qiáng)的競爭力,并且其在訓(xùn)練和預(yù)測速度上都很快。而對標(biāo)同樣是單階段的方法,SSD在輸入圖片更小的情況下,依然有更高的準(zhǔn)確率。

1.2 論文主要貢獻(xiàn)

原文作者將本論文的貢獻(xiàn)總結(jié)如下:

1)在目標(biāo)檢測領(lǐng)域的,單階段(one-stage/single-shot)算法分支上,本文提出的SSD網(wǎng)絡(luò)架構(gòu)模型比當(dāng)紅炸子雞YOLO模型準(zhǔn)確率要更高,且更快。而事實上,在準(zhǔn)確率上,SSD甚至也不輸那些多階段的大模型(比如:Faster R-CNN)

2)SSD的核心其實就是利用一些小的卷積層直接在不同尺度的特征圖上去預(yù)測固定個數(shù)默認(rèn)邊界框(default bounding box)的類別分類和相對位置坐標(biāo)。

3)SSD高準(zhǔn)確率的原因在于我們對不同尺度的特征圖,分別預(yù)測了多個不同尺度和大小的邊界框。

4)整一套架構(gòu)都是端到端(end-to-end)訓(xùn)練的,并且有很高的準(zhǔn)確率,即使也一些低分辨率圖像上,也有好的預(yù)期表現(xiàn)。

5)本文提出的SSD在多個數(shù)據(jù)集上(PASCAL VOC, COCO, ILSVRC),與其他的目標(biāo)檢測模型做了詳實的對比實驗,效果好壞,高下立見。

------------------第二菇 - 核心思想------------------

2.1 網(wǎng)絡(luò)架構(gòu)梳理

因為SSD和YOLO都是單階段模型的代表,故而將兩者放在一起分析更易讓人理解。本質(zhì)上來說,兩個架構(gòu)都是采用了一個CNN網(wǎng)絡(luò)來進(jìn)行檢測,只不過SSD采用了多尺度的特征圖,這里直接上一張原論文中的對比圖,

YOLO和SSD對比圖.jpg

這里重點理解如下3個不同點即可對整個SSD有比較深刻的認(rèn)識。

2.2.1 SSD利用了多尺度特征圖用于檢測

本論文采用的是VGG16的基礎(chǔ)網(wǎng)絡(luò)架構(gòu),只不過只使用了前5層,后面2個全連接層都用2個卷積層代替了(圖中所示Conv6, Conv7),然后再額外增加了3個卷積層(Conv8, Conv9, Conv10)和1個全局平均池化層。

每一個增加的卷積層,都在改變特征圖的大小,因此從圖中可以看出(特征圖趨勢是變小),低層的特征圖,感受野較小,高層的特征圖,感受野較大。而每一個卷積層提出的特征圖,又都直接參與后面的檢測(包括定位與分類)。因此SSD能夠利用多尺度的特征圖用于檢測,從而能夠檢測出不同尺度下的物體。

而與之對比的YOLO只利用了最后一層卷積提出的特征圖。

這里再貼一張很棒的示意圖(將SSD平鋪展開表述)【1】用以說明其多尺度特征圖用于檢測的原理,

多尺度特征圖用于檢測示意圖.jpg
2.2.2 SSD的先驗框設(shè)置

不同于YOLO的預(yù)選框設(shè)置方式,SSD的先驗預(yù)選框參考了Faster R-CNN系列的Anchors機(jī)制,根據(jù)每一個feature map大小的不同,按照固定的Scale和Ratio生成預(yù)選框,每一個框也同樣的需要輸出相對網(wǎng)格的位置坐標(biāo)及屬于每一個類別的概率(假設(shè)一共有c類),如原論文的附圖所示,虛線即表示候選框,

SSD示意架構(gòu)圖.jpg
2.2.3 SSD直接采用卷積進(jìn)行檢測

與Yolo最后采用全連接層不同,SSD直接采用卷積對不同的特征圖來進(jìn)行提取檢測結(jié)果。假設(shè)feature map的大小為m*n*p,則使用的基礎(chǔ)卷積核的大小為3*3*p(注:應(yīng)該是通過加padding來保證卷積操作后大小保持不變),對于m*n每一個位置,都會輸出一個分類的概率和位置的偏移量。假設(shè)候選框個數(shù)為k,則最后的輸出為m*n*k*(c+4)

這里簡單梳理一下,參數(shù)的關(guān)系,我們以上圖紅框為例,該層的特征圖大小為5*5*256,假設(shè)每一個點生成的默認(rèn)候選框個數(shù)為3,則最后的輸出如下圖所示【1】,

輸出示意圖.jpg

其中,12的意思就是用于定位的,每個點3個框,定位需要4個變量(x_c, y_c, w, h),因此12 = 3*4

而對應(yīng)的,63的意思就是用于分類的,每個點3個框,分類一共21(含背景),因此63 = 3 * 21

如果還是有一點疑惑,那再看另一張圖,剖析的更為詳細(xì)【1】,

輸出示意圖2.jpg

雖然是俄文(沒找到英文的),但圖畫的真的很清晰了~所以要重點強(qiáng)調(diào)的可能還是要理解到,有多少個默認(rèn)框,就需要有多少個倍數(shù)(與分類和定位數(shù)量有關(guān))卷積核~

至此整一套與網(wǎng)絡(luò)架構(gòu)相關(guān)的關(guān)鍵點已經(jīng)梳理完畢了~

2.2 訓(xùn)練策略
2.2.1 損失函數(shù)

損失函數(shù)倒沒什么特殊的,跟其他的目標(biāo)檢測算法相似,也是分2部分組成的,分別是位置回歸的誤差損失,分類的損失。

其中分類損失用的是softmax,公式截圖如下,

分類損失.jpg

而位置損失用的是Smooth L1 損失,其實跟Faster R-CNN差不多的,具體公式截圖如下,

回歸誤差損失.jpg

而總的損失函數(shù)就是,

L(x, c, l, g) = \frac{1}{N}(L_{conf}(x,c) + \alpha L_{loc}(x,l,g))

其中,N就是與GT BOX相匹配的Default Box(默認(rèn)候選框)的個數(shù)。\alpha就是調(diào)權(quán)值的超參數(shù)。

這里強(qiáng)調(diào)一下,上面這句“相匹配”的定義。對于每一個真實的目標(biāo)框,我們都會選擇多個不同大小不同尺度的候選框,我們用jaccard \ \ overlap來衡量【3】,但是不同于MultiBox中只要最大的邏輯,作者這里認(rèn)為閾值超過0.5的都能被視為是正樣本。

2.2.2 候選框的設(shè)計

候選框的設(shè)計好壞,直接決定了最終的檢測質(zhì)量,這里作者也特地強(qiáng)調(diào)了一些注意點。

沒什么特別難以理解的,這里不具體說了,直接盜一張圖吧【4】

候選框選擇說明.jpg

其他一些數(shù)據(jù)的預(yù)處理方法,正負(fù)樣本的處理等這里就不具體說了,都比較簡單好理解,原論文也說的很清楚~

至此,整一套跟SSD相關(guān)的理論部分算是講明白了,其他的實驗對比部分,這邊就不展開了,總之,是個很不錯的模型??~

------------------第三菇 - 總結(jié)------------------

3.1 總結(jié)

到這里,整篇論文的核心思想已經(jīng)說清楚了。本論文主要是提出了一種單階段的SSD網(wǎng)絡(luò)用于目標(biāo)檢測,效果和時效性上都要優(yōu)于同一戰(zhàn)線之前提出的YOLO模型,讓眾多工業(yè)界人士看到了其在工業(yè)界巨大的發(fā)揮空間,作者也在文中通過一系列實驗證明其可行性,為后續(xù)發(fā)展奠定了基礎(chǔ)。

簡單總結(jié)一下本文就是先羅列了一下該論文的摘要,再具體介紹了一下本文作者的思路,也簡單表述了一下,自己對SSD網(wǎng)絡(luò)架構(gòu)的理解。希望大家讀完本文后能進(jìn)一步加深對該論文的理解。有說的不對的地方也請大家指出,多多交流,大家一起進(jìn)步~??

參考文獻(xiàn):
【1】https://docs.google.com/presentation/d/1rtfeV_VmdGdZD5ObVVpPDPIODSDxKnFSU0bsN_rgZXc/pub?start=false&loop=false&delayms=3000&slide=id.g17938598f9_0_1965
【2】https://zhuanlan.zhihu.com/p/33544892
【3】https://arxiv.org/abs/1312.2249

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容