【目標檢測】RefineDet :Single-Shot Refinement Neural Network for Object Detection

論文:《Single-Shot Refinement Neural Network for Object Detection》 CVPR2018

論文地址https://arxiv.org/pdf/1711.06897v1.pdf

代碼鏈接https://github.com/sfzhang15/RefineDet

參考文章https://blog.csdn.net/u014380165/article/details/79502308

                  https://blog.csdn.net/woduitaodong2698/article/details/85258458

                  https://www.cnblogs.com/hellcat/p/10357220.html

1、主要思想​​​​

  • 引入two stage類型的object detection算法中對box的由粗到細的迴歸思想(由粗到細迴歸其實就是先通過RPN網絡得到粗粒度的box信息,然後再通過常規的迴歸支路進行進一步迴歸從而得到更加精確的框信息,這也是two stage類型的object detection算法效果優於one stage類型的一個重要原因)。
  • 引入類似FPN網絡的特徵融合操作用於檢測網絡,可以有效提高對小目標的檢測效果,檢測網絡的框架還是SSD。

2、網絡結構

Figure1是RefineDet網絡的結構圖(直觀的特點就是two-step cascaded regression),主要包含三個部分:anchor refinement module (ARM) 、object detection module (ODM)、transfer connection block (TCB)
è¿éåå¾çæè¿°

整體來看該網絡和tow stage的結構很像(都可以概括爲two-step cascaded regression),一個子模塊做RPN的事,另一個子模塊做SSD的事。因此SSD是直接在default box的基礎上進行迴歸的,而在RefineDet中是先通過ARM部分生成refined anchor boxes(類似RPN網絡輸出的propsoal),然後在refined anchor boxes基礎上進行迴歸,所以能有更高的準確率,而且得益於特徵融合,該算法對於小目標物體的檢測更有效。

2.1、anchor refinement module (ARM)

anchor refinement module (ARM)部分類似Faster RCNN算法中的RPN網絡,主要用來得到bbox(類似Faster RCNN中的ROI或proposal)和去除一些負樣本(這是因爲負樣本數量遠大於正樣本)。因此基於4層特徵最後得到的還是兩條支路,一個bbox的座標迴歸支路,另一個是bbox的二分類支路。我們知道在Faster RCNN算法中RPN網絡存在的意義就是生成proposal(或者叫ROI),這些proposal會給後續檢測網絡提供較好的初始信息,這也是one stage的object detection算法和two stage的object detection算法的重要區別,這裏的anchor refinement module基本上扮演了RPN網絡的角色,如果一定要說不同點的話,那應該就是這裏的輸入利用了多層特徵,而RPN網絡的輸入是單層特徵。

2.2、transfer connection block (TCB)

該部分是做特徵的轉換操作,也就是將ARM部分的輸出feature map轉換成ODM部分的輸入,這部分其實和FPN算法的特徵融合很像,FPN也是這樣的upsample後融合的思想。

具體結構如Figure1所示:

è¿éåå¾çæè¿°

2.3、object detection module (ODM)

部分和就基本上是SSD了,也是融合不同層的特徵,然後做multi class classification和regression。主要的不同點一方面在於這部分的輸入anchors是ARM部分得到的refined anchors,類似RPN網絡輸出的proposal。另一方面和FPN算法類似,這裏的淺層feature map(size較大的藍色矩形塊)融合了高層feature map的信息,然後預測bbox是基於每層feature map(每個藍色矩形塊)進行,最後將各層結果再整合到一起。而在SSD中淺層的feature map是直接拿來用的(並沒有和高層的feature map融合),也就是對bbox的預測是在每一層上進行的,預測得到結果後再將各層結果整合在一起,這是非常重要的區別。這樣做的好處就是對小目標物體的檢測效果更好,這在FPN和RON等算法中已經證明過了。

3、loss函數的設計

網絡訓練過程是端到端的訓練方法,loss函數也是常規的分類softmax和目標檢測的框迴歸smoothL1。損失函數公式如下所示:

其中 的含義爲在框迴歸的時候只計算正樣本的loss。

4、訓練方式和推理過程

在coco的數據集上,選用vgg16的網絡結構,全部的圖片resize到512x512的條件下,batch size設置爲32,使用4張顯卡來訓練,0.9動量,0.0005的權重衰減率,前280k次的迭代使用的學習率爲10e-3,後80k和40k次的迭代使用的學習率分別爲10e-4、10e-5。

在推理階段ARM將置信度高於0.99的負樣本過濾掉,ODM只會輸出置信度前400個物體預測樣本,然後使用非極大值抑制(閾值爲0.45),只會留下置信度爲前200個預測樣本作爲最終的輸出結果。

5、實驗結果

preview

速度和SSD相近,精度明顯更高,精度更高沒什麼好說的,速度在多了下面一部分卷積層和反捲積層的情況下沒有明顯下降,作者分析有兩點原因,anchors較少以及基礎網絡後的附加網路層數少、特徵選取層更少(4個,我記得SSD有5個),作者原文:  

1. 我們使用了較少的anchor,如512尺度下,我們總共有1.6W個框,而SSD有2.5W個框。我們使用較少anchor也能達到高精度的原因是二階段迴歸。雖然我們總共預設了4個尺度(32,,64,128,256,)和3個比例(0.5,1,2),但是經過第一階段的迴歸後,預設的anchor被極大的豐富了,因此用於第二階段迴歸的anchor,具備着豐富的尺度和比例。    

2. 第2個原因是,由於顯存限制,我們只在基礎網絡的基礎上,新加了很少的卷積層,並只選了4個卷積層作爲檢測層。如果增加更多卷積層,並選擇更多檢測層,效果應該還能得到進一步提升。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章