anchors是一組大小固定的參考視窗:三種尺度×三種長寬比,如下圖所示,表示rpn網路中對特徵圖滑窗時每個滑窗位置所對應的原圖區域中9種可能的大小,相當於模板,對任意影象任意滑窗位置都是這9中模板。
繼而根據影象大小計算滑窗中心點對應原圖區域的中心點,通過中心點和size就可以得到滑窗位置和原圖位置的對映關係,由此原圖位置並根據與ground truth重複率貼上正負標籤,讓rpn學習該anchors是否有物體即可。
2、rpn網路
rpn網路前面的5層借用的是zf網路,這個網路的結構圖我截個圖放在下面,並分析下為什麼是這樣子的;
1、首先,輸入大小是 2242243(這個3是三個通道,也就是rgb三種)
2、然後第一層的卷積核維度是 773*96 (所以大家要認識到卷積核都是4維的,在caffe的矩陣計算中都是這麼實現的);
3、所以conv1得到的結果是11011096 (這個110來自於 (224-7+pad)/2 +1 ,這個pad是我們常說的填充,也就是在的周圍補充畫素,這樣做的目的是為了能夠整除,除以2是因為2是圖中的stride, 這個計算方法在上面建議的文件中有說明與推導的);
4、然後就是做一次池化,得到pool1, 池化的核的大小是33,所以池化後的維度是5555*96 ( (110-3+pad)/2 +1 =55 );
5、然後接著就是再一次卷積,這次的卷積核的維度是5596256 ,得到conv2:2626*256;
6、後面就是類似的過程了,我就不詳細一步步算了,要注意有些地方除法除不盡,作者是做了填充了,在caffe的prototxt檔案中,可以看到每一層的pad的大小;
7、最後作者取的是conv5的輸出,也就是1313256送給rpn網路的;
我們看看rpn部分的結構:
1、前面我們指出,這個conv feature map的維度是1313256的;
2、作者在文章中指出,sliding window的大小是33的,那麼如何得到這個256-d的向量呢? 這個很簡單了,我們只需要乙個33256256這樣的乙個4維的卷積核,就可以將每乙個3*3的sliding window 卷積成乙個256維的向量;
這裡讀者要注意啊,作者這裡畫的示意圖 僅僅是 針對乙個sliding window的;在實際實現中,我們有很多個sliding window,所以得到的並不是一維的256-d向量,實際上還是乙個3維的矩陣資料結構;可能寫成for迴圈做sliding window大家會比較清楚,當用矩陣運算的時候,會稍微繞些;
3、然後就是k=9,所以cls layer就是18個輸出節點了,那麼在256-d和cls layer之間使用乙個1125618的卷積核,就可以得到cls layer,當然這個1125618的卷積核就是大家平常理解的全連線;所以全連線只是卷積操作的一種特殊情況(當卷積核的大小是1*1的時候);
4、reg layer也是一樣了,reg layer的輸出是36個,所以對應的卷積核是11256*36,這樣就可以得到reg layer的輸出了;
5、然後cls layer 和reg layer後面都會接到自己的損失函式上,給出損失函式的值,同時會根據求導的結果,給出反向傳播的資料
區域推薦網路RPN
region proposal network rpn的實現方式 在conv5 3的卷積feature map上用乙個n n的滑窗 中作者選用了n 3,即3 3的滑窗 生成乙個長度為256 對應於zf網路 或512 對應於vgg網路 維長度的全連線特徵.然後在這個256維或512維的特徵後產生兩個分...
rpn網路結構再分析
這是rpn網路train階段的網路結構圖 rpn conv1之前的網路是特徵提取層,也是和fast rcnn共享的層。rpn conv1是一層1 1的卷積,這一層是單獨為rpn網路多提取一層特徵,這一層之後就接兩個輸出channel層不同的1 1的卷積 即分別進行score的 和座標補償值的 這樣保...
RPN網路的錨是如何生成的
anchor這個問題,我最初也沒弄懂。剛剛看完rbg大神的原始碼,終於明白了,來回答一發,如果有不對的地方請大家指出。以vgg 16改造的faster r cnn為例。py faster r cnn的 model pascal voc vgg16 faster rcnn alt opt faster...