region proposal network
rpn的實現方式:在conv5-3的卷積feature map上用乙個n*n的滑窗(**中作者選用了n=3,即3*3的滑窗)生成乙個長度為256(對應於zf網路)或512(對應於vgg網路)維長度的全連線特徵.然後在這個256維或512維的特徵後產生兩個分支的全連線層:
(1)reg-layer,用於**proposal的中心錨點對應的proposal的座標x,y和寬高w,h;
(2)cls-layer,用於判定該proposal是前景還是背景.sliding window的處理方式保證reg-layer和cls-layer關聯了conv5-3的全部特徵空間.事實上,作者用全連線層實現方式介紹rpn層實現容易幫助我們理解這一過程,但在實現時作者選用了卷積層實現全連線層的功能.
(3)個人理解:全連線層本來就是特殊的卷積層,如果產生256或512維的fc特徵,事實上可以用num_out=256或512, kernel_size=3*3, stride=1的卷積層實現conv5-3到第乙個全連線特徵的對映.然後再用兩個num_out分別為2*9=18和4*9=36,kernel_size=1*1,stride=1的卷積層實現上一層特徵到兩個分支cls層和reg層的特徵對映.
(4)注意:這裡2*9中的2指cls層的分類結果包括前後背景兩類,4*9的4表示乙個proposal的中心點座標x,y和寬高w,h四個引數.採用卷積的方式實現全連線處理並不會減少引數的數量,但是使得輸入影象的尺寸可以更加靈活.在rpn網路中,我們需要重點理解其中的anchors概念,loss fucntions計算方式和rpn層訓練資料生成的具體細節.
anchors:字面上可以理解為錨點,位於之前提到的n*n的sliding window的中心處.對於乙個sliding window,我們可以同時**多個proposal,假定有k個.k個proposal即k個reference boxes,每乙個reference box又可以用乙個scale,乙個aspect_ratio和sliding window中的錨點唯一確定.所以,我們在後面說乙個anchor,你就理解成乙個anchor box 或乙個reference box.作者在**中定義k=9,即3種scales和3種aspect_ratio確定出當前sliding window位置處對應的9個reference boxes, 4*k個reg-layer的輸出和2*k個cls-layer的score輸出.對於一幅w*h的feature map,對應w*h*k個錨點.所有的錨點都具有尺度不變性.
loss functions:
在計算loss值之前,作者設定了anchors的標定方法.正樣本標定規則:
1) 如果anchor對應的reference box與ground truth的iou值最大,標記為正樣本;
2) 如果anchor對應的reference box與ground truth的iou>0.7,標記為正樣本.事實上,採用第2個規則基本上可以找到足夠的正樣本,但是對於一些極端情況,例如所有的anchor對應的reference box與groud truth的iou不大於0.7,可以採用第一種規則生成.
3) 負樣本標定規則:如果anchor對應的reference box與ground truth的iou<0.3,標記為負樣本.
4) 剩下的既不是正樣本也不是負樣本,不用於最終訓練.
5) 訓練rpn的loss是有classification loss (即softmax loss)和regression loss (即l1 loss)按一定比重組成的.
計算softmax loss需要的是anchors對應的groundtruth標定結果和**結果,計算regression loss需要三組資訊:
i. **框,即rpn網路**出的proposal的中心位置座標x,y和寬高w,h;
ii. 錨點reference box:
之前的9個錨點對應9個不同scale和aspect_ratio的reference boxes,每乙個reference boxes都有乙個中心點位置座標x_a,y_a和寬高w_a,h_a;
iii. ground truth:標定的框也對應乙個中心點位置座標x*,y*和寬高w*,h*.因此計算regression loss和總loss方式如下:
rpn訓練設定:
(1)在訓練rpn時,乙個mini-batch是由一幅影象中任意選取的256個proposal組成的,其中正負樣本的比例為1:1.
(2)如果正樣本不足128,則多用一些負樣本以滿足有256個proposal可以用於訓練,反之亦然.
(3)訓練rpn時,與vgg共有的層引數可以直接拷貝經imagenet訓練得到的模型中的引數;剩下沒有的層引數用標準差=0.01的高斯分布初始化.
目標檢測中的RPN區域提取演算法
用已知尺寸的視窗遍歷整個影象,生成很多子影象,漫無目的的搜尋。selective search在rcnn和fast rcnn中用到,它的具體做法是將影象分割成很多小的區域,計算區域之間的相似度 顏色 紋理等等 結合各尺度結果,進行融合,形成大一些的region。具體參見 本文主要講解的是region...
RPN網路的anchor機制
anchors是一組大小固定的參考視窗 三種尺度 三種長寬比,如下圖所示,表示rpn網路中對特徵圖滑窗時每個滑窗位置所對應的原圖區域中9種可能的大小,相當於模板,對任意影象任意滑窗位置都是這9中模板。繼而根據影象大小計算滑窗中心點對應原圖區域的中心點,通過中心點和size就可以得到滑窗位置和原圖位置...
rpn網路結構再分析
這是rpn網路train階段的網路結構圖 rpn conv1之前的網路是特徵提取層,也是和fast rcnn共享的層。rpn conv1是一層1 1的卷積,這一層是單獨為rpn網路多提取一層特徵,這一層之後就接兩個輸出channel層不同的1 1的卷積 即分別進行score的 和座標補償值的 這樣保...