Faster R CNN
Faster R CNN
3 FASTER R-CNN
我們的Faster R CNN 由兩個模塊組成,第一個模塊是 proposes regions 的全卷積網(wǎng)絡(luò),第二個是使用 proposed regions 的 Faster R CNN 檢測器。
3.1 Region Proposal Networks
RPN以一個圖像作為輸入,并輸出一組矩形object proposal 每個提案都有 客觀的score,我們用一個完全卷積的我網(wǎng)絡(luò)對這個過程進(jìn)行建模。由于我們的最終目標(biāo)是與faster r cnn 目標(biāo)檢測網(wǎng)絡(luò)共享計算,我們假設(shè)這兩個網(wǎng)絡(luò)共享一組公共的卷積層。
為了產(chǎn)生proposal region 我們在最后一個共享卷積層輸出的卷積特征圖上滑動了一個小網(wǎng)絡(luò)。該小網(wǎng)絡(luò)采用輸入卷積特征的 nxn 空間窗口作為輸入。每個滑動窗口映射到一個低維特征。這個特征被輸入到兩個完全連接的同級層:一個boxes回歸層, 一個box分類層。本文使用n=3,輸入圖像上的有效感受野很大。由于迷你網(wǎng)絡(luò)以滑動的方式工作,全連接層是在所有空間位置共享的。該體系結(jié)構(gòu)自然由nxn卷積層和兩個1x1卷積層(分別用于reg和cls)實現(xiàn)。
3.1.1 Anchors
在每個滑動窗口位置,我們同時預(yù)測多個region proposal,其中每個位置最大可能方案數(shù)為k,因此reg層有4k輸出編碼k個框的坐標(biāo),cls輸出2k分?jǐn)?shù),估計每個proposal region的的對象概率和非對象概率。
anchor位于滑動窗口的中心,默認(rèn)情況下,我們使用3個尺度和3個縱橫比,一共9個anchor,對于W×H的feature map 來說,一共有WHk個anchor。
Translation-Invariant Anchors
我們的方法保證了平移不變性。我們的方法有(4 + 2)× 9 維卷積輸出層,因此我們的proposal 層的參數(shù)很少。
Multi-Scale Anchors as Regression References
我們的anchor解決了多尺度的挑戰(zhàn)。對于多尺度,第一種,圖像/特征金字塔的方法非常費時,如DPM,第二種,在feature map上使用多尺度的滑動窗口,使用不同的filter尺寸來訓(xùn)練不同長徑比的模型。基于anchor的方法,依賴單一尺度的圖像和feature map,并且使用單一大小的filter。可以很好的解決多尺度和大小問題。
3.1.2 Loss Function
我們給兩種anchors指定正標(biāo)簽(1)與ground truth的IoU最高的anchor(2)IoU大于0.7的anchor,一個單一的ground truth 可以為多個anchor指定正標(biāo)簽。利用這些定義,我們對圖像的loss函數(shù)定義為:
其中,pi時anchor作為一個對象的預(yù)測概率,如果anchor is positive,即IoU滿足以上兩個條件之一,那么ground truth 的標(biāo)簽值pi為1。ti是表示預(yù)測bounding boxes的4個坐標(biāo)的參數(shù),ti是與positive anchor 相關(guān)聯(lián)的ground truth的向量。分類損失是兩個類上的log loss,我們使用
R是robust loss function(smooth L1)。前面乘了p*i表示回歸loss只對positive anchors激活,否則為0。
對于bounding box regression,我們采用以下4個坐標(biāo)的參數(shù)化:
其中帶* *號的是用于groud truth的坐標(biāo),不帶 *號的是是anchor和predicted boxes,然而,我們實現(xiàn)bounding box 的方法不同于以往RoI的方法。在我們的公式中,用于回歸的feature在feature map 上有相同的空間大小(3x3)。
為了解釋不同的尺寸,學(xué)習(xí)了k個bounding box regressors,每個regressor負(fù)責(zé)一個尺度和縱橫比,他們互相不共享權(quán)值。
3.1.3 Training RPNs
每一個mini-batch都是由一張圖像產(chǎn)生的,它包含很多positive的anchor和negative的anchor,可以對所有anchor的loss函數(shù)進(jìn)行優(yōu)化,但這將偏向負(fù)樣本,因為它們的量遠(yuǎn)大于正樣本,所以,我們在圖像中隨機(jī)抽樣256個anchor,其中采樣的正樣本和負(fù)樣本比例為1:1,如果正樣本不足128,則用負(fù)樣本填充。
3.2 Sharing Features for RPN and Fast R-CNN
4-Step Alternating Training.
我們采用了一種使用的四步訓(xùn)練算法,通過交替優(yōu)化學(xué)習(xí)共享特征,第一步,我們訓(xùn)練RPN,使用ImageNet預(yù)訓(xùn)練。第二步, 我們使用RPN產(chǎn)生的proposal region,通過快速R-CNN來訓(xùn)練一個單獨的檢測器網(wǎng)絡(luò),該網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,此時,這兩個網(wǎng)絡(luò)不共享卷積層。第三步,我們使用檢測器網(wǎng)絡(luò)來初始化RPN訓(xùn)練,但是我們fix共享卷積層,只對unique layer of RPN進(jìn)行微調(diào),此時,這兩個網(wǎng)絡(luò)共享卷積層。第四步,保持共享卷積層的固定,我們微調(diào)unique layers of fast R-CNN。
還有一個更為簡單的方法,就是end-to-end的訓(xùn)練方法,將RPN和Fast R-CNN結(jié)合起來一起訓(xùn)練。
補充RoI pooling
ROI pooling具體操作如下:
(1)根據(jù)輸入image,將ROI映射到feature map對應(yīng)位置;
(2)將映射后的區(qū)域劃分為相同大小的sections(sections數(shù)量與輸出的維度相同);
(3)對每個sections進(jìn)行max pooling操作;
這樣我們就可以從不同大小的方框得到固定大小的相應(yīng) 的feature maps。值得一提的是,輸出的feature maps的大小不取決于ROI和卷積feature maps大小。ROI pooling 最大的好處就在于極大地提高了處理速度。
參考:https://blog.csdn.net/AUTO1993/article/details/78514071
有一些實現(xiàn)細(xì)節(jié),比如RPN網(wǎng)絡(luò)得到的大約2萬個anchor不是都直接給Fast-RCNN,因為有很多重疊的框。文章通過非極大值抑制的方法,設(shè)定IoU為0.7的閾值,即僅保留覆蓋率不超過0.7的局部最大分?jǐn)?shù)的box(粗篩)。最后留下大約2000個anchor,然后再取前N個box(比如300個)給Fast-RCNN。Fast-RCNN將輸出300個判定類別及其box,對類別分?jǐn)?shù)采用閾值為0.3的非極大值抑制(精篩),并僅取分?jǐn)?shù)大于某個分?jǐn)?shù)的目標(biāo)結(jié)果(比如,只取分?jǐn)?shù)60分以上的結(jié)果)
關(guān)于RPN:
https://blog.csdn.net/qq_36269513/article/details/80421990
關(guān)于nms:
https://www.cnblogs.com/makefile/p/nms.html
總結(jié)
以上是生活随笔為你收集整理的Faster R CNN的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 100万补贴!东湖高新区知识产权运营服务
- 下一篇: 移动端 Retina屏 各大主流网站1p