RCNN,Fast RCNN,Faster RCNN 總結

轉載自:https://shartoo.github.io/RCNN-series/

物體檢測需要定位出物體的bounding box,就像下面的圖片一樣,我們不僅要定位出車輛的bounding box 我們還要識別出bounding box 裏面的物體就是車輛。對於bounding box的定位精度,有一個很重要的概念,因爲我們算法不可能百分百跟人工標註的數據完全匹配,因此就存在一個定位精度評價公式:IOU。

iou1

IOU定義了兩個bounding box的重疊度,如下圖所示:

iou1

矩形框A、B的一個重合度IOU計算公式爲:

IOU=(A∩B)/(A∪B)

就是矩形框A、B的重疊面積佔A、B並集的面積比例:

IOU=SI/(SA+SB-SI)

RCNN算法,會從一張圖片中找出n多個可能是物體的矩形框,然後爲每個矩形框爲做類別分類概率:

iou1

就像上面的圖片一樣,定位一個車輛,最後算法就找出了一堆的方框,我們需要判別哪些矩形框是沒用的。非極大值抑制:先假設有6個矩形框,根據分類器類別分類概率做排序,從小到大分別屬於車輛的概率分別爲A、B、C、D、E、F。

  1. 從最大概率矩形框F開始,分別判斷A~E與F的重疊度IOU是否大於某個設定的閾值;

  2. 假設B、D與F的重疊度超過閾值,那麼就扔掉B、D;並標記第一個矩形框F,是我們保留下來的。

  3. 從剩下的矩形框A、C、E中,選擇概率最大的E,然後判斷E與A、C的重疊度,重疊度大於一定的閾值,那麼就扔掉;並標記E是我們保留下來的第二個矩形框。

就這樣一直重複,找到所有被保留下來的矩形框。

RCNN相關方法對比

算法概要:首先輸入一張圖片,我們先定位出2000個物體候選框,然後採用CNN提取每個候選框中圖片的特徵向量,特徵向量的維度爲4096維,接着採用svm算法對各個候選框中的物體進行分類識別。也就是總個過程分爲三個程序:a、找出候選框;b、利用CNN提取特徵向量;c、利用SVM進行特徵向量分類。具體的流程如下圖片所示:

iou1

下面分別講解各個步驟。

當我們輸入一張圖片時,我們要搜索出所有可能是物體的區域,這個採用的方法是傳統文獻的算法selective search (github上有源碼),通過這個算法我們搜索出2000個候選框。然後從上面的總流程圖中可以看到,搜出的候選框是矩形的,而且是大小各不相同。然而CNN對輸入圖片的大小是有固定的,如果把搜索到的矩形選框不做處理,就扔進CNN中,肯定不行。因此對於每個輸入的候選框都需要縮放到固定的大小。下面我們講解要怎麼進行縮放處理,爲了簡單起見我們假設下一階段CNN所需要的輸入圖片大小是個正方形圖片227*227。因爲我們經過selective search 得到的是矩形框,paper試驗了兩種不同的處理方法:

(1)各向異性縮放

這種方法很簡單,就是不管圖片的長寬比例,管它是否扭曲,進行縮放就是了,全部縮放到CNN輸入的大小227*227,如下圖(D)所示;

(2)各向同性縮放

因爲圖片扭曲後,估計會對後續CNN的訓練精度有影響,於是作者也測試了“各向同性縮放”方案。這個有兩種辦法

A. 直接在原始圖片中,把bounding box的邊界進行擴展延伸成正方形,然後再進行裁剪;如果已經延伸到了原始圖片的外邊界,那麼就用bounding box中的顏色均值填充;如下圖(B)所示;

B. 先把bounding box圖片裁剪出來,然後用固定的背景顏色填充成正方形圖片(背景顏色也是採用bounding box的像素顏色均值),如下圖(C)所示;

iou1

對於上面的異性、同性縮放,文獻還有個padding處理,上面的示意圖中第1、3行就是結合了padding=0,第2、4行結果圖採用padding=16的結果。經過最後的試驗,作者發現採用各向異性縮放、padding=16的精度最高。

上面處理完後,可以得到指定大小的圖片,因爲我們後面還要繼續用這2000個候選框圖片,繼續訓練CNN、SVM。然而人工標註的數據一張圖片中就只標註了正確的bounding box,我們搜索出來的2000個矩形框也不可能會出現一個與人工標註完全匹配的候選框。因此我們需要用IOU爲2000個bounding box打標籤,以便下一步CNN訓練使用。在CNN階段,如果用selective search挑選出來的候選框與物體的人工標註矩形框的重疊區域IoU大於0.5,那麼我們就把這個候選框標註成物體類別,否則我們就把它當做背景類別。

網絡架構我們有兩個可選方案:第一選擇經典的Alexnet;第二選擇VGG16。經過測試Alexnet精度爲58.5%,VGG16精度爲66%。VGG這個模型的特點是選擇比較小的卷積核、選擇較小的跨步,這個網絡的精度高,不過計算量是Alexnet的7倍。後面爲了簡單起見,我們就直接選用Alexnet,並進行講解;Alexnet特徵提取部分包含了5個卷積層、2個全連接層,在Alexnet中p5層神經元個數爲9216、 f6、f7的神經元個數都是4096,通過這個網絡訓練完畢後,最後提取特徵每個輸入候選框圖片都能得到一個4096維的特徵向量。

2.2.1 網絡初始化

直接用Alexnet的網絡,然後連參數也是直接採用它的參數,作爲初始的參數值,然後再fine-tuning訓練。

網絡優化求解:採用隨機梯度下降法,學習速率大小爲0.001;

2.2.2 fine-tuning階段

我們接着採用selective search 搜索出來的候選框,然後處理到指定大小圖片,繼續對上面預訓練的cnn模型進行fine-tuning訓練。假設要檢測的物體類別有N類,那麼我們就需要把上面預訓練階段的CNN模型的最後一層給替換掉,替換成N+1個輸出的神經元(加1,表示還有一個背景),然後這一層直接採用參數隨機初始化的方法,其它網絡層的參數不變;接着就可以開始繼續SGD訓練了。開始的時候,SGD學習率選擇0.001,在每次訓練的時候,我們batch size大小選擇128,其中32個正樣本、96個負樣本。

FRCNN針對RCNN在訓練時是multi-stage pipeline和訓練的過程中很耗費時間空間的問題進行改進。它主要是將深度網絡和後面的SVM分類兩個階段整合到一起,使用一個新的網絡直接做分類和迴歸。主要做以下改進:

  1. 最後一個卷積層後加了一個ROI pooling layer。ROI pooling layer首先可以將image中的ROI定位到feature map,然後是用一個單層的SPP layer將這個feature map patch池化爲固定大小的feature之後再傳入全連接層。

  2. 損失函數使用了多任務損失函數(multi-task loss),將邊框迴歸直接加入到CNN網絡中訓練。

fast rcnn 的結構如下

fast rcnn結構

圖中省略了通過ss獲得proposal的過程,第一張圖中紅框裏的內容即爲通過ss提取到的proposal,中間的一塊是經過深度卷積之後得到的conv feature map,圖中灰色的部分就是我們紅框中的proposal對應於conv feature map中的位置,之後對這個特徵經過ROI pooling layer處理,之後進行全連接。在這裏得到的ROI feature vector最終被分享,一個進行全連接之後用來做softmax迴歸,用來進行分類,另一個經過全連接之後用來做bbox迴歸。

注意: 對中間的Conv feature map進行特徵提取。每一個區域經過RoI pooling layer和FC layers得到一個 固定長度 的feature vector(這裏需要注意的是,輸入到後面RoI pooling layer的feature map是在Conv feature map上提取的,故整個特徵提取過程,只計算了一次卷積。雖然在最開始也提取出了大量的RoI,但他們還是作爲整體輸入進卷積網絡的,最開始提取出的RoI區域只是爲了最後的Bounding box 迴歸時使用,用來輸出原圖中的位置)。

何愷明研究員於14年撰寫的論文,主要是把經典的Spatial Pyramid Pooling結構引入CNN中,從而使CNN可以處理任意size和scale的圖片;這中方法不僅提升了分類的準確率,而且還非常適合Detection,比經典的RNN快速準確。

本文不打算詳細解釋SPP網絡,只介紹其中的SPP-layer,由於fast rcnn會使用到SPP-layer。

SPP layer

根據pooling規則,每個pooling bin(window)對應一個輸出,所以最終pooling後特徵輸出由bin的個數來決定。本文就是分級固定bin的個數,調整bin的尺寸來實現多級pooling固定輸出。

如圖所示,layer-5的unpooled FM維數爲16*24,按照圖中所示分爲3級,

fast rcnn結構

第一級bin個數爲1,最終對應的window大小爲16*24;

第二級bin個數爲4個,最終對應的window大小爲4*8

第三級bin個數爲16個,最終對應的window大小爲1*1.5(小數需要舍入處理)

通過融合各級bin的輸出,最終每一個unpooled FM經過SPP處理後,得到了1+4+16維的SPPed FM輸出特徵,經過融合後輸入分類器。

這樣就可以在任意輸入size和scale下獲得固定的輸出;不同scale下網絡可以提取不同尺度的特徵,有利於分類。

每一個RoI都有一個四元組(r,c,h,w)表示,其中(r,c)表示左上角,而(h,w)則代表高度和寬度。這一層使用最大池化(max pooling)來將RoI區域轉化成固定大小的HW的特徵圖。假設一個RoI的窗口大小爲hw,則轉換成HW之後,每一個網格都是一個h/H * w/W大小的子網,利用最大池化將這個子網中的值映射到HW窗口即可。Pooling對每一個特徵圖通道都是獨立的,這是SPP layer的特例,即只有一層的空間金字塔。

有三種預訓練的網絡:CaffeNet,VGG_CNN_M_1024,VGG-16,他們都有5個最大池化層和5到13個不等的卷積層。用他們來初始化Fast R-CNN時,需要修改三處:

①最後一個池化層被RoI pooling layer取代

②最後一個全連接層和softmax被替換成之前介紹過的兩個兄弟並列層

③網絡輸入兩組數據:一組圖片和那些圖片的一組RoIs

使用BP算法訓練網絡是Fast R-CNN的重要能力,前面已經說過,SPP-net不能微調spp層之前的層,主要是因爲當每一個訓練樣本來自於不同的圖片時,經過SPP層的BP算法是很低效的(感受野太大). Fast R-CNN提出SGD mini_batch分層取樣的方法:首先隨機取樣N張圖片,然後每張圖片取樣R/N個RoIs e.g. N=2 and R=128 除了分層取樣,還有一個就是FRCN在一次微調中聯合優化softmax分類器和bbox迴歸,看似一步,實際包含了多任務損失(multi-task loss)、小批量取樣(mini-batch sampling)、RoI pooling層的反向傳播(backpropagation through RoI pooling layers)、SGD超參數(SGD hyperparameters)。

Faster R-CNN統一的網絡結構如下圖所示,可以簡單看作RPN網絡+Fast R-CNN網絡。

fast rcnn結構

原理步驟如下:

  1. 首先向CNN網絡【ZF或VGG-16】輸入任意大小圖片;

  2. 經過CNN網絡前向傳播至最後共享的卷積層,一方面得到供RPN網絡輸入的特徵圖,另一方面繼續前向傳播至特有卷積層,產生更高維特徵圖;

  3. 供RPN網絡輸入的特徵圖經過RPN網絡得到區域建議和區域得分,並對區域得分採用非極大值抑制【閾值爲0.7】,輸出其Top-N【文中爲300】得分的區域建議給RoI池化層;

  4. 第2步得到的高維特徵圖和第3步輸出的區域建議同時輸入RoI池化層,提取對應區域建議的特徵;

  5. 第4步得到的區域建議特徵通過全連接層後,輸出該區域的分類得分以及迴歸後的bounding-box。

單個RPN網絡結構如下:

fast rcnn結構

注意: 上圖中卷積層/全連接層表示卷積層或者全連接層,作者在論文中表示這兩層實際上是全連接層,但是網絡在所有滑窗位置共享全連接層,可以很自然地用n×n卷積核【論文中設計爲3×3】跟隨兩個並行的1×1卷積覈實現

RPN的作用:RPN在CNN卷積層後增加滑動窗口操作以及兩個卷積層完成區域建議功能,第一個卷積層將特徵圖每個滑窗位置編碼成一個特徵向量,第二個卷積層對應每個滑窗位置輸出k個區域得分和k個迴歸後的區域建議,並對得分區域進行非極大值抑制後輸出得分Top-N【文中爲300】區域,告訴檢測網絡應該注意哪些區域,本質上實現了Selective Search、EdgeBoxes等方法的功能。

  1. 首先套用ImageNet上常用的圖像分類網絡,本文中試驗了兩種網絡:ZF或VGG-16,利用這兩種網絡的部分卷積層產生原始圖像的特徵圖;

  2. 對於1中特徵圖,用n×n【論文中設計爲3×3,n=3看起來很小,但是要考慮到這是非常高層的feature map,其size本身也沒有多大,因此9個矩形中,每個矩形窗框都是可以感知到很大範圍的】的滑動窗口在特徵圖上滑動掃描【代替了從原始圖滑窗獲取特徵】,每個滑窗位置通過卷積層1映射到一個低維的特徵向量【ZF網絡:256維;VGG-16網絡:512維,低維是相對於特徵圖大小W×H,typically~60×40=2400】後採用ReLU,併爲每個滑窗位置考慮k種【論文中k=9】可能的參考窗口【論文中稱爲anchors,見下解釋】,這就意味着每個滑窗位置會同時預測最多9個區域建議【超出邊界的不考慮】,對於一個W×H的特徵圖,就會產生W×H×k個區域建議;

  3. 步驟2中的低維特徵向量輸入兩個並行連接的卷積層2:reg窗口迴歸層【位置精修】和cls窗口分類層,分別用於迴歸區域建議產生bounding-box【超出圖像邊界的裁剪到圖像邊緣位置】和對區域建議是否爲前景或背景打分,這裏由於每個滑窗位置產生k個區域建議,所以reg層有4k個輸出來編碼【平移縮放參數】k個區域建議的座標,cls層有2k個得分估計k個區域建議爲前景或者背景的概率。

Anchors是一組大小固定的參考窗口:三種尺度{ 1282256251221282,2562,5122 }×三種長寬比{1:1,1:2,2:1},如下圖所示,表示RPN網絡中對特徵圖滑窗時每個滑窗位置所對應的原圖區域中9種可能的大小,相當於模板,對任意圖像任意滑窗位置都是這9中模板。繼而根據圖像大小計算滑窗中心點對應原圖區域的中心點,通過中心點和size就可以得到滑窗位置和原圖位置的映射關係,由此原圖位置並根據與Ground Truth重複率貼上正負標籤,讓RPN學習該Anchors是否有物體即可。對於每個滑窗位置,產生k=9個anchor對於一個大小爲W*H的卷積feature map,總共會產生WHk個anchor。

fast rcnn結構

平移不變性

Anchors這種方法具有平移不變性,就是說在圖像中平移了物體,窗口建議也會跟着平移。同時這種方式也減少了整個模型的size,輸出層 512×(4+2)×9=2.8×104512×(4+2)×9=2.8×104 個參數【512是前一層特徵維度,(4+2)×9是9個Anchors的前景背景得分和平移縮放參數】,而MultiBox有 1536×4+1×800=6.1×1061536×(4+1)×800=6.1×106個 參數,而較小的參數可以在小數據集上減少過擬合風險。

當然,在RPN網絡中我們只需要找到大致的地方,無論是位置還是尺寸,後面的工作都可以完成,這樣的話採用小網絡進行簡單的學習【估計和猜差不多,反正有50%概率】,還不如用深度網絡【還可以實現卷積共享】,固定尺度變化,固定長寬比變化,固定採樣方式來大致判斷是否是物體以及所對應的位置並降低任務複雜度。

有兩種方法解決多尺度多長寬比問題:

  1. 圖像金字塔:對伸縮到不同size的輸入圖像進行特徵提取,雖然有效但是費時.

  2. feature map上使用多尺度(和/或長寬比)的滑窗:例如,DPM分別使用不同大小的filter來訓練不同長寬比的模型。若這種方法用來解決多尺度問題,可以認爲是“filter金字塔(pyramid of filters)”

4.5.1 RPN網絡訓練過程

RPN網絡被ImageNet網絡【ZF或VGG-16】進行了有監督預訓練,利用其訓練好的網絡參數初始化; 用標準差0.01均值爲0的高斯分佈對新增的層隨機初始化。

4.5.2 Fast R-CNN網絡預訓練

同樣使用mageNet網絡【ZF或VGG-16】進行了有監督預訓練,利用其訓練好的網絡參數初始化。

4.5.3 RPN網絡微調訓練

PASCAL VOC 數據集中既有物體類別標籤,也有物體位置標籤; 正樣本僅表示前景,負樣本僅表示背景; 迴歸操作僅針對正樣本進行; 訓練時棄用所有超出圖像邊界的anchors,否則在訓練過程中會產生較大難以處理的修正誤差項,導致訓練過程無法收斂; 對去掉超出邊界後的anchors集採用非極大值抑制,最終一張圖有2000個anchors用於訓練【詳細見下】; 對於ZF網絡微調所有層,對VGG-16網絡僅微調conv3_1及conv3_1以上的層,以便節省內存。

SGD mini-batch採樣方式: 同Fast R-CNN網絡,採取 image-centric 方式採樣,即採用層次採樣,先對圖像取樣,再對anchors取樣,同一圖像的anchors共享計算和內存。每個mini-batch包含從一張圖中隨機提取的256個anchors,正負樣本比例爲1:1【當然可以對一張圖所有anchors進行優化,但由於負樣本過多最終模型會對正樣本預測準確率很低】來計算一個mini-batch的損失函數,如果一張圖中不夠128個正樣本,拿負樣本補湊齊。

訓練超參數選擇: 在PASCAL VOC數據集上前60k次迭代學習率爲0.001,後20k次迭代學習率爲0.0001;動量設置爲0.9,權重衰減設置爲0.0005。

多任務目標函數【分類損失+迴歸損失】具體如下:

L({pi},{ti})=1NclsiLcls(pi,pi)+λ1NregipiLreg(ti,ti)L({pi},{ti})=1Ncls∑iLcls(pi,pi∗)+λ1Nreg∑ipi∗Lreg(ti,ti∗)
  • i 爲一個anchor在一個mini-batch中的下標

  • pipi 是anchor i爲一個object的預測可能性

  • pipi⋆ 爲ground-truth標籤。如果這個anchor是positive的,則ground-truth標籤 pipi⋆ 爲1,否則爲0。

  • titi 表示表示正樣本anchor到預測區域bounding box的4個參數化座標,【以anchor爲基準的變換

  • titi⋆ 是這個positive anchor對應的ground-truth box。【以anchor爲基準的變換

  • LclsLcls 分類的損失(classification loss),是一個二值分類器(是object或者不是)的softmax loss。其公式爲 Lcls(pi,pi)=log[pipi+(1pi)(1pi)]Lcls(pi,pi⋆)=−log[pi∗pi⋆+(1−pi⋆)(1−pi)]

  • LregLreg 迴歸損失(regression loss),Lreg(ti,ti)=R(titi)Lreg(ti,ti⋆)=R(ti−ti⋆) 【兩種變換之差越小越好】,其中R是Fast R-CNN中定義的robust ross function (smooth L1)。piLregpi⋆Lreg 表示迴歸損失只有在positive anchor( pi=1pi⋆=1 )的時候纔會被激活。cls與reg層的輸出分別包含{pipi}和{ titi }。R函數的定義爲: smoothL1(x)=0.5x2ifx<1otherwisex0.5smoothL1(x)=0.5x2if∣x∣<1otherwise∣x∣−0.5

  • λ參數用來權衡分類損失 LclsLcls 和迴歸損失 LregLreg ,默認值λ=10【文中實驗表明 λ從1變化到100對mAP影響不超過1%】;

  • NclsNcls 和 NregNreg 分別用來標準化分類損失項 LclsLcls 和迴歸損失項 LregLreg,默認用mini-batch size=256設置 NclsNcls,用anchor位置數目~2400初始化 NregNreg,文中也說明標準化操作並不是必須的,可以簡化省略。

4.5.4 RPN網絡、Fast R-CNN網絡聯合訓練

訓練網絡結構示意圖如下所示:

fast rcnn結構

如上圖所示,RPN網絡、Fast R-CNN網絡聯合訓練是爲了讓兩個網絡共享卷積層,降低計算量

文中通過4步訓練算法,交替優化學習至共享特徵:

  1. 進行上面RPN網絡預訓練,和以區域建議爲目的的RPN網絡end-to-end微調訓練。

  2. 進行上面Fast R-CNN網絡預訓練,用第①步中得到的區域建議進行以檢測爲目的的Fast R-CNN網絡end-to-end微調訓練【此時無共享卷積層】。

  3. 使用第2步中微調後的Fast R-CNN網絡重新初始化RPN網絡,固定共享卷積層【即設置學習率爲0,不更新】,僅微調RPN網絡獨有的層【此時共享卷積層】。

  4. 固定第3步中共享卷積層,利用第③步中得到的區域建議,僅微調Fast R-CNN獨有的層,至此形成統一網絡如上圖所示。

**RPN網絡中bounding-box迴歸怎麼理解?同Fast R-CNN中的bounding-box迴歸相比有什麼區別? **

對於bounding-box迴歸,採用以下公式:

  • t
tx=(xxa)waty=(yya)hatw=logwwath=loghhatx=(x−xa)waty=(y−ya)hatw=logwwath=loghha
  • tt∗
tx=(xxa)waty=(yya)hatw=logwwath=loghhatx∗=(x∗−xa)waty∗=(y∗−ya)hatw∗=logw∗wath∗=logh∗ha

其中,x,y,w,h表示窗口中心座標和窗口的寬度和高度,變量x,xaxa 和 xx∗ 分別表示預測窗口、anchor窗口和Ground Truth的座標【y,w,h同理】,因此這可以被認爲是一個從anchor窗口到附近Ground Truth的bounding-box 迴歸;

RPN網絡中bounding-box迴歸的實質其實就是計算出預測窗口。這裏以anchor窗口爲基準,計算Ground Truth對其的平移縮放變化參數,以及預測窗口【可能第一次迭代就是anchor】對其的平移縮放參數,因爲是以anchor窗口爲基準,所以只要使這兩組參數越接近,以此構建目標函數求最小值,那預測窗口就越接近Ground Truth,達到迴歸的目的;

文中提到, Fast R-CNN中基於RoI的bounding-box迴歸所輸入的特徵是在特徵圖上對任意size的RoIs進行Pool操作提取的,所有size RoI共享迴歸參數,而在Faster R-CNN中,用來bounding-box迴歸所輸入的特徵是在特徵圖上相同的空間size【3×3】上提取的,爲了解決不同尺度變化的問題,同時訓練和學習了k個不同的迴歸器,依次對應爲上述9種anchors,這k個迴歸量並不分享權重。因此儘管特徵提取上空間是固定的【3×3】,但由於anchors的設計,仍能夠預測不同size的窗口。

文中提到了三種共享特徵網絡的訓練方式?

  1. 交替訓練,訓練RPN,得到的區域建議來訓練Fast R-CNN網絡進行微調;此時網絡用來初始化RPN網絡,迭代此過程【文中所有實驗採用】;

  2. 近似聯合訓練: 如上圖所示,合併兩個網絡進行訓練,前向計算產生的區域建議被固定以訓練Fast R-CNN;反向計算到共享卷積層時RPN網絡損失和Fast R-CNN網絡損失疊加進行優化,但此時把區域建議【Fast R-CNN輸入,需要計算梯度並更新】當成固定值看待,忽視了Fast R-CNN一個輸入:區域建議的導數,則無法更新訓練,所以稱之爲近似聯合訓練。實驗發現,這種方法得到和交替訓練相近的結果,還能減少20%~25%的訓練時間,公開的python代碼中使用這種方法;

  3. 聯合訓練 需要RoI池化層對區域建議可微,需要RoI變形層實現,具體請參考這片paper:Instance-aware Semantic Segmentation via Multi-task Network Cascades。

圖像Scale細節問題?

文中提到訓練和檢測RPN、Fast R-CNN都使用單一尺度,統一縮放圖像短邊至600像素; 在縮放的圖像上,對於ZF網絡和VGG-16網絡的最後卷積層總共的步長是16像素,因此在縮放前典型的PASCAL圖像上大約是10像素【~500×375;600/16=375/10】。

Faster R-CNN中三種尺度怎麼解釋:

  • 原始尺度:原始輸入的大小,不受任何限制,不影響性能;

  • 歸一化尺度:輸入特徵提取網絡的大小,在測試時設置,源碼中opts.test_scale=600。anchor在這個尺度上設定,這個參數和anchor的相對大小決定了想要檢測的目標範圍;

  • 網絡輸入尺度:輸入特徵檢測網絡的大小,在訓練時設置,源碼中爲224×224。

理清文中anchors的數目

文中提到對於1000×600的一張圖像,大約有20000(~60×40×9)個anchors,忽略超出邊界的anchors剩下6000個anchors,利用非極大值抑制去掉重疊區域,剩2000個區域建議用於訓練; 測試時在2000個區域建議中選擇Top-N【文中爲300】個區域建議用於Fast R-CNN檢測。


發佈了15 篇原創文章 · 獲贊 41 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章