RefineDet 論文解析
來自專欄視覺隨筆46 人贊了文章
我們實現的MXNet版本的RefineDet:https://github.com/MTCloudVision/RefineDet-Mxnet
論文目標:
通過實現對ssd default box的二次精修提高檢測效果。
1.核心思想:
one stage的網路結構,位置框和物體的類是在同一個特徵提取層來做回歸和分類預測的,這種的網路運算速度雖然快但是準確度不夠高,準確度不夠高的一個重要原因是因為框的正負樣本數目比例失衡嚴重,two stage 的網路由於引入了Region Proposal Networks使得框的回歸任務精度變高,該網路篩出了大量的負樣本框(正負樣本比例控制在1:3)解決了正負樣本不平衡的問題。Refinedet是基於ssd的改進演算法,該演算法主要是bottom up(網路結構圖上半部分)的網路結構來回歸粗略位置參數來調整anchor的位置以及框的二分類(是否是物體的位置)任務,用top down(網路結構圖下半部分)的網路結構相對於調整的anchor的參數來回歸精細物體位置和框內物體的分類任務。可以看出bottom up的運算就是來解決正負樣本框數目不平衡問題的。
2.網路結構設計
2.1 總體結構
網路總體來說就是把ssd這個one stage模型,通過加入top down的方法變成two stage模型。
bottom up階段(論文稱之為ARM,anchor refinement module)為常規ssd多尺度預測階段,做預測所提取的特徵圖分別為:conv4_3,conv5_3,fc7,conv6_2。每一個特徵圖都會有兩個子網路分支,為別為預測anchor位置的子網路mbox_loc(3組w, h, x, y,子網路卷積層的channel為12)和預測是否為anchor類別的子網路mbox_conf(3組0,1,子網路卷積層的channel為6),篩選出的負例樣本置信度高於0.99的就不會傳入到top down階段(論文稱之為obm,object detection module)以此來控制正負樣本的比例不均衡問題。
將ARM階段預測出來的結果調整anchor參數(conf:0/1,w,h,x,y圖中標記為refined anchors),將特徵圖conv4_3,conv5_3,fc7,conv6_2輸入給TCB單元(transfer connection block)得到P3, P4, P5, P6傳入給obm階段。TCB單元實質上就是top down結構,作用就是使得多尺度特徵圖的信道融合以此來豐富特徵。最後生成的特徵圖為:P3, P4, P5, P6(其中P3, P4, P5, P6的生成分別對應ARM中的conv4_3,conv5_3,fc7,conv6_2相對應。有一個細節就是當conv4_3,conv5_3層在做anchor 的預測亦或者是做top down的TCB操作的時候為了防止反向傳播的剃度過大導致loss輸出nan,這兩層會經過一個L2normlization操作然後分別擴大常量倍數,scale的值分別為10和3 ,以網路結構如下:
在top down階段做框精細調整的回歸和物體分類任務。每一個特徵圖都會有兩個子網路分支,為別為精細調整anchor位置的子網路mbox_loc(3組w, h, x, y,子網路卷積層的channel為12)和預測是否為物體類別的子網路mbox_conf(3組81類樣本,因為是分類coco數據集,子網路卷積層的channel為243)。
2.2 loss函數的設計。
網路訓練過程是端到端的訓練方法,loss函數也是常規的分類softmax和目標檢測的框回歸smoothL1。損失函數公式如下所示:
其中[ ] 的含義為在框回歸的時候只計算正樣本的loss。
2.3 訓練方式和推理過程
在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個預測樣本作為最終的輸出結果。
2.3 在演算法復現時關於ODM的初始框的疑問。
我們根據論文描述復現了refinedet 的mxnet的版本。在復現的過程中產生了一個疑問。即:ODM的prior box的初始值為ARM的輸出,然後對ARM每個框的輸出坐標結果計算前景和背景,之後進行進一步的精修。那麼在網路訓練的初始階段,網路還沒有收斂時,會不會存在一定幾率ARM階段本來在背景區域的default box回歸後隨機到了正樣本框的區域,同時在ODM階段框IoU排序的時候排在了前面成為了正樣本框(雖然這個概率極小)?因為我們在訓練模型的時候發現ODM階段的正樣本個數經常會多於ARM階段的正樣本個數,且增多的數量難以找到規律,也許是這個原因造成的這個問題。
演算法效果:
以上效果為在VOC 和 COCO 數據集上的mAP對比。
論文鏈接:https://arxiv.org/abs/1711.06897
作者代碼:https://github.com/sfzhang15/RefineDet caffe版本
推薦閱讀:
※tensorflow separable_conv2d
※如何對比 PyTorch 和 Gluon 的煉丹體驗?
※MXNet/Gluon第五課:Gluon高級和優化演算法基礎筆記
※MXNet/Gluon第四課:BatchNorm,更深的卷積神經網路,圖像增強筆記
※MXNet 視頻I/O讀取速度優化