目標檢測論文閱讀:R-FCN: Object Detection via Region-based Fully Convolutional Networks
R-FCN: Object Detection via Region-based Fully Convolutional Networks
論文鏈接:https://arxiv.org/abs/1605.06409
代碼鏈接:https://github.com/daijifeng001/r-fcnCVPR2016的文章,和上周的FPN一樣是非常經典的文章。友情提醒下,FCN最早是用在分割上的,只搜FCN很容易出現分割方面的論文,如果想要搜檢測方面的應用,最好搜R-FCN。那麼,下面開始本次的內容。1. 問題介紹
如圖所示,我們都知道,Faster RCNN在RPN階段通過共享特徵的方式節省了大量的計算量,但是到第二個階段,通過RoI pooling後獲得的每個RoI的特徵又要經過一個含有fc的子網路來對其進行分類和回歸。fc層本身其實就有參數多計算量大的特點,RoI後的每個feature map要經過兩個fc層一個class softmax(也是fc),無形中加大了計算量、浪費了時間。因此,一個自然而然的想法就產生了,能不能想辦法消除這種浪費,進一步提高檢測速度?

那麼,原因是什麼呢?一方面,分類任務是有translation invariance特點的,就是說圖像中物體的移動並沒有太大的差別;但是另一方面,檢測任務卻是translation variant的,例如預測出的box就必須對它是否較好地覆蓋了object做出反饋,否則位置偏差就沒辦法修正。 ResNet文章就探討過這個問題,並通過強行在卷積層之間插入了RoI這種位置敏感層的方法來破壞分類的transalation invariance。
作者在本文中提出了另一種更為自然的思路來解決這種差異性,關鍵就是作者稱之為position-sensitive score maps的東西。具體來說,就是對RoI劃分網格,每個網格分別來預測物體的種類,並通過所有網格的結果來確定物體的種類。因為引入了網格位置的原因,物體的位移將使得每個網格的結果產生較大的不同,所以分類任務就會開始對位移敏感。這裡有一個比較清晰的對比圖:
這裡每個RoI用的是3x3的網格。可以看到,隨著RoI位置的變化,每個網格在position-sensitive score maps中覆蓋的內容將會產生較大的變化,例如右上的網格就從原來正好覆蓋強響應區域(全白)的情況變成覆蓋沒有響應區域(全黑)的情況,因此3網格內的值完全不同,直接影響了最終分類結果,這就是大致的思路。下面來看怎麼得到這個score maps和具體的網路。
2. 實現
關鍵思路
position-sensitive scores maps的關鍵思路如下圖所示:

具體細節
- BackBone:作者選用的是ResNet,為了實現fully convolutional的效果,做了一些改變,移除了平均池化層和fc層,添加了一個1x1的卷積層用於減少通道數量和一個用於生成k^2(C+1)通道數的卷積層
- positive-sensitive roi pooling:這個主要解決的是如何從k^2(C+1)個通道中的一個獲取roi的區域,來pooling成kxk中對應的網格值的問題。具體公式可以到論文中計算,主要用的還是平均值池化
- 從position-sensitive scores maps到類別預測:在得到每個類別的kxk的scores maps後,求它們的平均值,得到的數作為該類別的分數,這樣可以得到C+1個類別的C+1個分數,然後用softmax就可以求出置信度
- 如何進行邊框回歸:和類別預測非常相似,在生產k^2(C+1)個類別通道的同時,也生產4k^2個通道,然後用類似的思路進行邊框回歸。注意到這裡是沒有類別信息的,因此預測出來的框是class-agnostic的。
按照上面的思路,我們可以發現,這個網路實際上在RoI層之後就沒有需要學習的層了,這也體現出了R-FCN要精簡網路、加快運行的思路。最後放一個整體網路圖:

其它
除了上述細節外,還需要提的有兩點,一個是作者訓練時採用了改變的OHEM策略(online hard example mining),即會對所有的RoI按照Loss排序,選擇其中loss最大的若干個進行訓練。
另一個就是作者除了改變ResNet-101的網路結構,似乎也改變了一些細節,比如conv5 block的stride。3. 實驗結果
作者做的對比實驗比較多,來看其中比較關鍵的幾個。先是之前提到的naive faster rcnn,結果如下:



4. 總結
R-FCN感覺受FCN啟發還是挺大的。雖然作者提到了提高檢測速度的因素,但是我認為這篇文章最大的亮點還是在對分類位置變化不敏感性和檢測位置變化敏感性的分析,有點深入剖析任務本質的味道。
推薦閱讀:
※論文應該怎麼去寫?一篇假文章,看看就好
※在社交媒體上曬論文,會帶來更高的引用嗎?
※論文數據哪裡找?這些網站不能少!
※●關於職稱論文發表時間的要求(部分)
※如何選擇SCI論文翻譯平台?
TAG:深度學習DeepLearning | 論文 | 目標檢測 |
