詳細解讀Faster-RCNN說課材料_第1頁
詳細解讀Faster-RCNN說課材料_第2頁
詳細解讀Faster-RCNN說課材料_第3頁
詳細解讀Faster-RCNN說課材料_第4頁
詳細解讀Faster-RCNN說課材料_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

解讀(jiědú)FasterRCNN2018.12.26第一頁,共26頁。FasterRCNN簡介(jiǎnjiè)經過RCNN和FastRCNN的積淀,RossB.Girshick在2016年提出了新的FasterRCNN,在結構上,F(xiàn)asterRCN已經將特征抽取(featureextraction),proposal提取,boundingboxregression(rectrefine),classification都整合在了一個網絡中,使得綜合性能有較大提高,在檢測速度(sùdù)方面尤為明顯。第二頁,共26頁。論文作者看來FasterRCNN可以分為(fēnwéi)4個部分1、Convlayers。作為一種CNN網絡目標(mùbiāo)檢測方法,F(xiàn)asterRCNN首先使用一組基礎的conv+relu+pooling層提取image的featuremaps。該featuremaps被共享用于后續(xù)RPN層和全連接層。2、RegionProposalNetworks。RPN網絡用于生成regionproposals。該層通過softmax判斷anchors屬于foreground或者background,再利用boundingboxregression修正anchors獲得精確的proposals。3、RoiPooling。該層收集輸入的featuremaps和proposals,綜合這些信息后提取proposal

featuremaps,送入后續(xù)全連接層判定目標(mùbiāo)類別。4、Classification。利用proposal

featuremaps計算proposal的類別,同時再次boundingboxregression獲得檢測框最終的精確位置。第三頁,共26頁。Convlayers部分共有13個conv層,13個relu層,4個pooling層。在Convlayers中:所有的conv層都是:kernel_size=3,pad=1,所有的pooling層都是:kernel_size=2,stride=2。最終一張MxN的圖像經過Convlayers之后(zhīhòu)固定變?yōu)?M/16)x(N/16)下圖展示了RPN網絡的具體結構??梢钥吹絉PN網絡實際分為2條線,上面一條通過softmax分類anchors獲得foreground和background(檢測目標(mùbiāo)是foreground),下面一條用于計算對于anchors的boundingboxregression偏移量,以獲得精確的proposal。而最后的Proposal層則負責綜合foregroundanchors和boundingboxregression偏移量獲取proposals,同時剔除太小和超出邊界的proposals。其實整個網絡到了ProposalLayer這里,就完成了相當于目標(mùbiāo)定位的功能。第四頁,共26頁。1、在論文中使用的是ZFmodel中,其ConvLayers中最后的conv5層num_output=256,對應生成256張?zhí)卣鲌D,所以相當于featuremap每個點都是256-d2、在conv5之后,做了rpn_conv/3x3卷積且num_output=256,相當于每個點又融合了周圍(zhōuwéi)3x3的空間信息,同時256-d不變3、假設在conv5featuremap中每個點上有k個anchor(默認k=9),而每個anhcor要分foreground和background,所以每個點由256dfeature轉化為cls=2kscores;而每個anchor都有[x,y,w,h]對應4個偏移量,所以reg=4kcoordinates4、全部anchors拿去訓練太多了,訓練程序會在合適的anchors中隨機選取128個postiveanchors+128個negativeanchors進行訓練第五頁,共26頁。一副MxN大小的矩陣送入FasterRCNN網絡后,到RPN網絡變?yōu)?M/16)x(N/16),不妨設W=M/16,H=N/16。在進入reshape與softmax之前,先做了1x1卷積,可以看到其num_output=18,也就是經過該卷積的輸出圖像為WxHx18大小。這也就剛好對應了featuremaps每一個點都有9個anchors,同時每個anchors又有可能是foreground和background,所有(suǒyǒu)這些信息都保存WxHx(9x2)大小的矩陣。后面接softmax分類獲得foregroundanchors,也就相當于初步提取了檢測目標候選區(qū)域box(一般認為目標在foregroundanchors中)。那么為何要在softmax前后都接一個reshapelayer?其實只是為了便于softmax分類,至于具體原因這就要從caffe的實現(xiàn)形式說起了在caffe基本數(shù)據(jù)結構blob中以如下形式保存數(shù)據(jù):blob=[batch_size,channel,height,width]對應至上面的保存bg/fganchors的矩陣,其在caffeblob中的存儲形式為[1,2*9,H,W]。而在softmax分類時需要進行fg/bg二分類,所以reshapelayer會將其變?yōu)閇1,2,9*H,W]大小,即單獨“騰空”出來一個維度以便softmax分類,之后再reshape回復原狀。第六頁,共26頁。boundingboxregression原理(yuánlǐ)如圖所示綠色框為飛機的GroundTruth(GT),紅色為提取的foregroundanchors,那么即便紅色的框被分類器識別為飛機,但是由于紅色的框定位不準,這張圖相當于沒有正確的檢測出飛機。所以我們希望采用一種方法對紅色的框進行微調,使得(shǐde)foregroundanchors和GT更加接近。對于窗口一般(yībān)使用四維向量(x,y,w,h)表示,分別表示窗口的中心點坐標和寬高。對于上圖,紅色的框A代表原始的ForegroundAnchors,綠色的框G代表目標的GT,我們的目標是尋找一種關系,使得輸入原始的anchorA經過映射得到一個跟真實窗口G更接近的回歸窗口G',即:給定anchorA=(Ax,Ay,Aw,Ah),GT=[Gx,Gy,Gw,Gh],尋找一種變換F:使得F(Ax,Ay,Aw,Ah)=(G'x,G'y,G'w,G'h),其中(G'x,G'y,G'w,G'h)≈(Gx,Gy,Gw,Gh)。第七頁,共26頁。第八頁,共26頁。ProposalLayer負責綜合所有[dx(A),dy(A),dw(A),dh(A)]變換量和foregroundanchors,計算出精準的proposal,送入后續(xù)RoIPoolingLayer。ProposalLayer有3個輸入:fg/bganchors分類器結果rpn_cls_prob_reshape,對應的bboxreg的[dx(A),dy(A),dw(A),dh(A)]變換量rpn_bbox_pred,以及im_info;另外還有參數(shù)feat_stride=16。首先(shǒuxiān)解釋im_info。對于一副任意大小PxQ圖像,傳入FasterRCNN前首先(shǒuxiān)reshape到固定MxN,im_info=[M,N,scale_factor]則保存了此次縮放的所有信息。然后經過ConvLayers,經過4次pooling變?yōu)閃xH=(M/16)x(N/16)大小,其中feature_stride=16則保存了該信息,用于計算anchor偏移量進ProposalLayerforward(caffelayer的前傳函數(shù))按照以下(yǐxià)順序依次處理:1、生成anchors,利用[dx(A),dy(A),dw(A),dh(A)]對所有的anchors做bboxregression回歸(這里的anchors生成和訓練時完全一致)2、按照輸入的foregroundsoftmaxscores由大到小排序anchors,提取前pre_nms_topN(e.g.6000)個anchors,即提取修正位置后的foregroundanchors。3、利用im_info將fganchors從MxN尺度映射回PxQ原圖,判斷fganchors是否大范圍超過邊界,剔除嚴重超出邊界fganchors。4、進行nms(nonmaximumsuppression,非極大值抑制)5、再次按照nms后的foregroundsoftmaxscores由大到小排序fganchors,提取post_nms_topN(e.g.300)結果作為proposal輸出。第九頁,共26頁。之后輸出proposal=[x1,y1,x2,y2],注意,由于在第三步中將anchors映射回原圖判斷是否超出邊界,所以這里輸出的proposal是對應MxN輸入圖像尺度的RPN網絡結構就介紹到這里,總結起來就是:生成(shēnɡchénɡ)anchors->softmax分類器提取fganchors

->bboxreg回歸fganchors->ProposalLayer生成(shēnɡchénɡ)proposals而RoIPooling層則負責收集proposal,并計算出proposalfeaturemaps,送入后續(xù)網絡(wǎngluò)。從前面圖中可以看到Rolpooling層有2個輸入:1、原始的featuremaps2、RPN輸出的proposalboxes(大小各不相同)傳統(tǒng)的CNN(AlexNet,VGG等)對于輸入圖像尺寸不固定采用的方法一般為上圖兩種方式(fāngshì),可以看到無論采取那種辦法都不好,要么crop后破壞了圖像的完整結構,要么warp破壞了圖像原始形狀信息,所以FasterRCNN中提出了RoIPooling解決這個問題(RoIPooling是從SPP發(fā)展而來)第十頁,共26頁。RoIPoolinglayerforward過程:在之前有明確提到:proposal=[x1,y1,x2,y2]是對應MxN尺度的,所以首先使用spatial_scale參數(shù)將其映射回(M/16)x(N/16)大小的featuremaps尺度;之后將每個proposal水平和豎直都分為7份,對每一份都進行maxpooling處理。這樣處理后,即使大小不同(bùtónɡ)的proposal,輸出結果都是7x7大小,實現(xiàn)了fixed-lengthoutput(固定長度輸出)。第十一頁,共26頁。ClassificationClassification部分利用已經獲得的proposalfeaturemaps,通過FC層與softmax計算每個proposal具體屬于(shǔyú)那個類別(如人,車,電視等),輸出cls_prob概率向量;同時再次利用boundingboxregression獲得每個proposal的位置偏移量bbox_pred,用于回歸更加精確的目標檢測框。Classification部分網絡結構如圖從PoIPooling獲取到7x7=49大小的proposalfeaturemaps后,送入后續(xù)網絡,可以看到做了如下兩件事:1、通過全連接和softmax對proposals進行分類(fēnlèi)。2、再次對proposals進行boundingboxregression,獲取更高精度的rectbox第十二頁,共26頁。FasterRCNN訓練(xùnliàn)FasterCNN的訓練,是在已經訓練好的model(如VGG_CNN_M_1024,VGG,ZF)的基礎上繼續(xù)進行訓練。實際中訓練過程分為(fēnwéi)6個步驟:1、在已經訓練好的model上,訓練RPN網絡,對應stage1_rpn_train.pt2、利用步驟1中訓練好的RPN網絡,收集proposals,對應rpn_test.pt3、第一次訓練FastRCNN網絡,對應stage1_fast_rcnn_train.pt4、第二訓練RPN網絡,對應stage2_rpn_train.pt5、再次利用步驟4中訓練好的RPN網絡,收集proposals,對應rpn_test.pt6、第二次訓練FastRCNN網絡,對應stage2_fast_rcnn_train.ptZFNet第十三頁,共26頁。訓練(xùnliàn)RPN網絡在該步驟中,首先讀取RBG提供的預訓練好的model(這里(zhèlǐ)使用VGG),開始迭代訓練。來看看stage1_rpn_train.pt網絡結構,如圖第十四頁,共26頁。與檢測網絡類似的是,依然(yīrán)使用ConvLayers提取featuremaps。整個網絡使用的Loss如下:上述公式中,i表示anchorsindex,pi表示foregroundsoftmax

predict概率,pi*代表對應的GTpredict概率(即當?shù)趇個anchor與GT間IoU>0.7,認為是該anchor是foreground,pi*=1;反之IoU<0.3時,認為是該anchor是background,pi*=0;至于那些0.3<IoU<0.7的anchor則不參與訓練);t代表predictboundingbox,t*代表對應foregroundanchor對應的GTbox??梢钥吹?,整個Loss分為2部分:1、clsloss,即rpn_cls_loss層計算的softmaxloss,用于分類anchors為forground與background的網絡訓練2、regloss,即rpn_loss_bbox層計算的soomthL1loss,用于boundingboxregression網絡訓練。注意(zhùyì)在該loss中乘了pi*,相當于只關心foregroundanchors的回歸(其實在回歸中也完全沒必要去關心background)第十五頁,共26頁。由于在實際過程中,Ncls和Nreg差距過大,用參數(shù)λ平衡二者(如Ncls=256,Nreg=2400時設置(shèzhì)λ=10),使總的網絡Loss計算過程中能夠均勻考慮2種Loss。這里比較重要是Lreg使用的soomthL1loss,計算公式如下:1、在RPN訓練階段,rpn-data(pythonAnchorTargetLayer)層會按照和test階段Proposal層完全一樣(yīyàng)的方式生成Anchors用于訓練

2、對于rpn_loss_cls,輸入的rpn_cls_scors_reshape和rpn_labels分別對應p與p*,Ncls參數(shù)隱含在p與p*的caffeblob的大小中3、對于rpn_loss_bbox,輸入的rpn_bbox_pred和rpn_bbox_targets分別對應t于t*,rpn_bbox_inside_weigths對應p*,rpn_bbox_outside_weights對應λ,Nreg同樣隱含在caffeblob大小中第十六頁,共26頁。通過(tōngguò)訓練好的RPN網絡收集proposals利用之前的RPN網絡,獲取proposalrois,同時獲取foregroundsoftmaxprobability,如下圖,然后(ránhòu)將獲取的信息保存在pythonpickle文件中第十七頁,共26頁。訓練(xùnliàn)FastRCNN網絡讀取之前保存的pickle文件,獲取proposals與foreground

probability。從data層輸入網絡。然后:1、將提取的proposals作為rois傳入網絡,如下(rúxià)圖藍框2、將foreground

probability作為bb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論