1. 程式人生 > >深度學習系列之R-FCN個人總結

深度學習系列之R-FCN個人總結

關於R-FCN,其實我一開始是完全懵逼的,完全理解不了究竟是什麼樣的流程。今天我不知道自己理解的對不對,但還是把自己理解的做個記錄吧。

1. Introduction

在Faster R-CNN中,RPN生成的region proposal經過RoI pooling layer處理,變成固定尺寸的特徵向量,這是都能理解的。

這裡的問題是,RoI pooling layer後面的FC層不是共享的,每個Roi都需要單獨連線FC層,然後求置信度,這樣效率肯定沒有共享高。

所以為了可以做到共享網路層,有了R-FCN。R-FCN將原來FC層的計算替換成了卷積層的共享計算,使得最後的RoI直接輸出結果。

2. Key idea

這裡寫圖片描述
這裡寫圖片描述
首先是在RPN和本文主要網路的共享卷積層最後一個feature map處,一方面,利用RPN生成region proposals。另一方面,用1x1的卷積核對feature map進行卷積,生成k*k*(C+1)深度的所謂的score map。(注意:整個深度是k*k*(c+1),深度!)

這個k*k表示要把region proposal劃分為幾塊。

我們將region proposal對映到這個score map上,這樣所有region proposal(或者叫RoI)在score map上的深度就是k*k*(C+1)。RoI上每個grid cell都會佔據一中顏色的通道(如圖)。

我們對RoI進行池化,RoI的top-left這個grid,是由土黃色那個channel上對應的k*k的區域top-left區域裡的畫素進行pool的結果。
這樣得到RoI左上角的第一個值。剩下k*k-1個值方法一樣。

score map上所有的RoI的池化操作都是共享進行的,只是所需的區域不同。

這樣,我們就可以得到池化後的RoI,shape為k x k x C+1。

然後,再進行vote操作,利用的是average pooling,得到一個C+1的向量。

然後,用softmax來進行分類。

迴歸操作類似,只不過score map是k*k*4的。

從這整段解釋可以看出,R-FCN真正做到了完全共享

,大大提高了效率。

3.總結

一句話總結R-FCN,就是:原先Faster R-CNN是單獨對每個proposal進行RoI pooling再分類,R-FCN則是在最後一層feature map上對所有的proposal同時進行RoI pooling,然後直接投入softmax進行分類,實現了所有層都共享。

4. References: