目标检测学习笔记--DSSD算法
1. 論文筆記
1.1 YOLO網絡結構
論文鏈接:http://cn.arxiv.org/pdf/1506.02640
1.2 SSD網絡結構
論文鏈接:http://cn.arxiv.org/pdf/1512.02325v5
SSD具有如下主要特點:
(1)從YOLO中繼承了將detection轉化為regression的思路,同時一次即可完成網絡訓練
(2)基于Faster RCNN中的anchor,提出了相似的prior box
(3)加入基于特征金字塔(Pyramidal Feature Hierarchy)的檢測方式
? YOLO在卷積層后接全連接層,即檢測時只利用了最高層feature maps(包括Faster RCNN也是如此);而SSD采用了特征金字塔結構進行檢測,即檢測時利用了conv4-3,conv-7(FC7),conv6-2,conv7-2,conv8_2,conv9_2這些大小不同的feature maps,在多個feature maps上同時進行softmax分類和位置回歸。
? SSD使用低層feature map檢測小目標,使用高層feature map檢測大目標,這也應該是SSD的突出貢獻了。
1.3 DSSD網絡結構
論文鏈接:http://cn.arxiv.org/pdf/1701.06659v1
2. 模型理解
? DSSD在常用的目標檢測算法中加入了更好的特征提取網絡和上下文信息,相比于利用一層feature map的YOLO、Faster RCNN等,和利用多層feature map的SSD,DSSD充分利用了各層之間的信息結合。
? YOLO算法把檢測的圖片劃分為14*14的格子,每個格子都會提取出目標檢測框,但最初時,每個格子只會提取出一個目標框,當兩個目標落入一個格子中,會出現漏檢。SSD利用Faster RCNN中Anchor的思路,將圖片分成更小的格子(即在淺層上來更好地匹配小目標),再在這些格子中使用Anchor,即在格子中加上6到9個不同的檢測框,有效地降低了漏檢概率。但是SSD在淺層提取的feature map表征能力不夠強,即淺層的feature map中每個格子包含的類的置信度不夠高,同樣會出現誤檢和漏檢,因此SSD對小目標不夠魯棒。
? 由于SSD算法的淺層feature map的表征能力不夠導致對小目標不夠魯棒,因此,DSSD使用了ResNet-101基礎網絡和Deconvolution反卷積層,使淺層feature map具有更好的表征能力,更好地提高對小目標的檢測能力,而且ResNet比VGG的收斂速度快很多。
? DSSD將基礎網絡VGG換成ResNet,通過加深網絡來增強網絡的表征能力。但實驗結果顯示,圖片大小不夠時(321321),ResNet的SSD和VGG的SSD效果相當,整體稍差些,當輸入圖像為512512時,ResNet的優勢才明顯體現。
? SSD的直接從數個卷積層中分別引出預測函數,預測量多達7000多,梯度計算量也很大。MS-CNN方法指出,改進每個任務的子網可以提高準確性。根據這一思想,作者在每一個預測層后增加殘差模塊,并且對于多種方案進行了對比,如下圖所示。結果表明,增加殘差預測模塊后,高分辨率圖片的檢測精度比原始SSD提升明顯。
? 在反卷積模塊中,實驗結果顯示,使用prod點積的操作的效果更好。
? DSSD的訓練方式沿用了SSD的訓練方法,通過caffe實現。
總而言之,DSSD就是將ResNet、Prediction Module、Deconvolution Module結合起來構成的基于SSD的目標檢測算法。
3. 模型運行進展
? 在github上找到DSSD模型的caffe版程序代碼,雖然有SSD的keras版程序源碼,但是DSSD在SSD的基礎上所做的改變較大,基準網絡從VGG換成了Resnet-101,而且增加了反卷積層,如果在SSD的代碼上做出改變難度很大。而且目前對Caffe與Keras的使用不熟悉,很難完成Caffe到Keras的代碼轉換。
DSSD_Caffe:https://github.com/chengyangfu/caffe/tree/dssd
SSD_Keras:https://github.com/pierluigiferrari/ssd_keras#overview
4、其他知識點
RPN網絡:RPN網絡的作用是輸入一張圖像,輸出一批矩形候選區域,類似于以往目標檢測中的Selective Search一步。網絡結構是基于卷積神經網絡,但輸出包含二類softmax和bbox回歸的多任務模型。網絡結果如下(以ZF網絡為參考模型):
Anchor機制:anchor是rpn網絡的核心。剛剛說到,需要確定每個滑窗中心對應感受野內存在目標與否。由于目標大小和長寬比例不一,需要多個尺度的窗。Anchor即給出一個基準窗大小,按照倍數和長寬比例得到不同大小的窗。例如論文中基準窗大小為16,給了(8、16、32)三種倍數和(0.5、1、2)三種比例,這樣能夠得到一共9種尺度的anchor,如圖
? 因此,在對6040的map進行滑窗時,以中心像素為基點構造9種anchor映射到原來的1000600圖像中,映射比例為16倍。那么總共可以得到60409大約2萬個anchor。
總結
以上是生活随笔為你收集整理的目标检测学习笔记--DSSD算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卷积神经网络(CNN)
- 下一篇: 浅析Java内存模型--ClassLoa