參考其他文章,在此表示感謝,文章僅用于學(xué)習(xí),侵權(quán)請(qǐng)聯(lián)系,感謝
https://arxiv.org/pdf/1506.01497.pdf
https://blog.csdn.net/quincuntial/article/details/79132243
主要貢獻(xiàn):提出RPN網(wǎng)絡(luò)
論文翻譯

Abstract
最先進(jìn)的目標(biāo)檢測(cè)網(wǎng)絡(luò)依靠區(qū)域提出算法來(lái)假設(shè)目標(biāo)的位置。SPPnet[1]和Fast R-CNN[2]等研究已經(jīng)減少了這些檢測(cè)網(wǎng)絡(luò)的運(yùn)行時(shí)間,使得區(qū)域提出計(jì)算成為一個(gè)瓶頸。在這項(xiàng)工作中,我們引入了一個(gè)區(qū)域提出網(wǎng)絡(luò)(RPN),該網(wǎng)絡(luò)與檢測(cè)網(wǎng)絡(luò)共享全圖像的卷積特征,從而使近乎零成本的區(qū)域提出成為可能。RPN是一個(gè)全卷積網(wǎng)絡(luò),可以同時(shí)在每個(gè)位置預(yù)測(cè)目標(biāo)邊界和目標(biāo)分?jǐn)?shù)。RPN經(jīng)過(guò)端到端的訓(xùn)練,可以生成高質(zhì)量的區(qū)域提出,由Fast R-CNN用于檢測(cè)。我們將RPN和Fast R-CNN通過(guò)共享卷積特征進(jìn)一步合并為一個(gè)單一的網(wǎng)絡(luò)——使用最近流行的具有“注意力”機(jī)制的神經(jīng)網(wǎng)絡(luò)術(shù)語(yǔ),RPN組件告訴統(tǒng)一網(wǎng)絡(luò)在哪里尋找。對(duì)于非常深的VGG-16模型[3],我們的檢測(cè)系統(tǒng)在GPU上的幀率為5fps(包括所有步驟),同時(shí)在PASCAL VOC 2007,2012和MS COCO數(shù)據(jù)集上實(shí)現(xiàn)了最新的目標(biāo)檢測(cè)精度,每個(gè)圖像只有300個(gè)提出。在ILSVRC和COCO 2015競(jìng)賽中,F(xiàn)aster R-CNN和RPN是多個(gè)比賽中獲得第一名輸入的基礎(chǔ)。代碼可公開(kāi)獲得。
1.introduction
目標(biāo)檢測(cè)的最新進(jìn)展是由區(qū)域提出方法(例如[4])和基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)[5]的成功驅(qū)動(dòng)的。盡管在[5]中最初開(kāi)發(fā)的基于區(qū)域的CNN計(jì)算成本很高,但是由于在各種提議中共享卷積,所以其成本已經(jīng)大大降低了[1],[2]。忽略花費(fèi)在區(qū)域提議上的時(shí)間,最新版本Fast R-CNN[2]利用非常深的網(wǎng)絡(luò)[3]實(shí)現(xiàn)了接近實(shí)時(shí)的速率。現(xiàn)在,proposals是最新的檢測(cè)系統(tǒng)中測(cè)試時(shí)間的計(jì)算瓶頸。
區(qū)域提議方法通常依賴廉價(jià)的特征和簡(jiǎn)練的推斷方案。選擇性搜索[4]是最流行的方法之一,它貪婪地合并基于設(shè)計(jì)的低級(jí)特征的超級(jí)像素。然而,與有效的檢測(cè)網(wǎng)絡(luò)[2]相比,選擇性搜索速度慢了一個(gè)數(shù)量級(jí),在CPU實(shí)現(xiàn)中每張圖像的時(shí)間為2秒。EdgeBoxes[6]目前提供了在提議質(zhì)量和速度之間的最佳權(quán)衡,每張圖像0.2秒。盡管如此,區(qū)域提議步驟仍然像檢測(cè)網(wǎng)絡(luò)那樣消耗同樣多的運(yùn)行時(shí)間。
有人可能會(huì)注意到,基于區(qū)域的快速CNN利用GPU,而在研究中使用的區(qū)域提議方法在CPU上實(shí)現(xiàn),使得運(yùn)行時(shí)間比較不公平。加速區(qū)域提議計(jì)算的一個(gè)顯而易見(jiàn)的方法是將其在GPU上重新實(shí)現(xiàn)。這可能是一個(gè)有效的工程解決方案,但重新實(shí)現(xiàn)忽略了下游檢測(cè)網(wǎng)絡(luò),因此錯(cuò)過(guò)了共享計(jì)算的重要機(jī)會(huì)。
在本文中,我們展示了算法的變化——用深度卷積神經(jīng)網(wǎng)絡(luò)計(jì)算區(qū)域提議——導(dǎo)致了一個(gè)優(yōu)雅和有效的解決方案,其中在給定檢測(cè)網(wǎng)絡(luò)計(jì)算的情況下區(qū)域提議計(jì)算接近領(lǐng)成本。為此,我們引入了新的區(qū)域提議網(wǎng)絡(luò)(RPN),它們共享最先進(jìn)目標(biāo)檢測(cè)網(wǎng)絡(luò)的卷積層[1],[2]。通過(guò)在測(cè)試時(shí)共享卷積,計(jì)算區(qū)域提議的邊際成本很?。ɡ?,每張圖像10ms)。
我們的觀察是,基于區(qū)域的檢測(cè)器所使用的卷積特征映射,如Fast R-CNN,也可以用于生成區(qū)域提議。在這些卷積特征之上,我們通過(guò)添加一些額外的卷積層來(lái)構(gòu)建RPN,這些卷積層同時(shí)在規(guī)則網(wǎng)格上的每個(gè)位置上回歸區(qū)域邊界和目標(biāo)分?jǐn)?shù)。因此RPN是一種全卷積網(wǎng)絡(luò)(FCN)[7],可以針對(duì)生成檢測(cè)區(qū)域建議的任務(wù)進(jìn)行端到端的訓(xùn)練。

RPN旨在有效預(yù)測(cè)具有廣泛尺度和長(zhǎng)寬比的區(qū)域提議。與使用圖像金字塔(圖1,a)或?yàn)V波器金字塔(圖1,b)的流行方法[8],[9],[1]相比,我們引入新的“錨(anchor)”盒作為多種尺度和長(zhǎng)寬比的參考。我們的方案可以被認(rèn)為是回歸參考金字塔(圖1,c),它避免了枚舉多種比例或長(zhǎng)寬比的圖像或?yàn)V波器。這個(gè)模型在使用單尺度圖像進(jìn)行訓(xùn)練和測(cè)試時(shí)運(yùn)行良好,從而有利于運(yùn)行速度。
為了將RPN與Fast R-CNN 目標(biāo)檢測(cè)網(wǎng)絡(luò)相結(jié)合,我們提出了一種訓(xùn)練方案,在微調(diào)區(qū)域提議任務(wù)和微調(diào)目標(biāo)檢測(cè)之間進(jìn)行交替,同時(shí)保持區(qū)域提議的固定。該方案快速收斂,并產(chǎn)生兩個(gè)任務(wù)之間共享的具有卷積特征的統(tǒng)一網(wǎng)絡(luò)。
我們?cè)赑ASCAL VOC檢測(cè)基準(zhǔn)數(shù)據(jù)集上[11]綜合評(píng)估了我們的方法,其中具有Fast R-CNN的RPN產(chǎn)生的檢測(cè)精度優(yōu)于使用選擇性搜索的Fast R-CNN的強(qiáng)基準(zhǔn)。同時(shí),我們的方法在測(cè)試時(shí)幾乎免除了選擇性搜索的所有計(jì)算負(fù)擔(dān)——區(qū)域提議的有效運(yùn)行時(shí)間僅為10毫秒。使用[3]的昂貴的非常深的模型,我們的檢測(cè)方法在GPU上仍然具有5fps的幀率(包括所有步驟),因此在速度和準(zhǔn)確性方面是實(shí)用的目標(biāo)檢測(cè)系統(tǒng)。我們還報(bào)告了在MS COCO數(shù)據(jù)集上[12]的結(jié)果,并使用COCO數(shù)據(jù)研究了在PASCAL VOC上的改進(jìn)。代碼可公開(kāi)獲得https://github.com/shaoqingren/faster_rcnn(在MATLAB中)和https://github.com/rbgirshick/py-faster-rcnn(在Python中)。
這個(gè)手稿的初步版本是以前發(fā)表的[10]。從那時(shí)起,RPN和Faster R-CNN的框架已經(jīng)被采用并推廣到其他方法,如3D目標(biāo)檢測(cè)[13],基于部件的檢測(cè)[14],實(shí)例分割[15]和圖像標(biāo)題[16]。我們快速和有效的目標(biāo)檢測(cè)系統(tǒng)也已經(jīng)在Pinterest[17]的商業(yè)系統(tǒng)中建立了,并報(bào)告了用戶參與度的提高。
在ILSVRC和COCO 2015競(jìng)賽中,F(xiàn)aster R-CNN和RPN是ImageNet檢測(cè),ImageNet定位,COCO檢測(cè)和COCO分割中幾個(gè)第一名參賽者[18]的基礎(chǔ)。RPN完全從數(shù)據(jù)中學(xué)習(xí)提議區(qū)域,因此可以從更深入和更具表達(dá)性的特征(例如[18]中采用的101層殘差網(wǎng)絡(luò))中輕松獲益。Faster R-CNN和RPN也被這些比賽中的其他幾個(gè)主要參賽者所使用。這些結(jié)果表明,我們的方法不僅是一個(gè)實(shí)用合算的解決方案,而且是一個(gè)提高目標(biāo)檢測(cè)精度的有效方法。
2.related work
目標(biāo)提議。目標(biāo)提議方法方面有大量的文獻(xiàn)。目標(biāo)提議方法的綜合調(diào)查和比較可以在[19],[20],[21]中找到。廣泛使用的目標(biāo)提議方法包括基于超像素分組(例如,選擇性搜索[4],CPMC[22],MCG[23])和那些基于滑動(dòng)窗口的方法(例如窗口中的目標(biāo)[24],EdgeBoxes[6])。目標(biāo)提議方法被采用為獨(dú)立于檢測(cè)器(例如,選擇性搜索[4]目標(biāo)檢測(cè)器,R-CNN[5]和Fast R-CNN[2])的外部模塊。
用于目標(biāo)檢測(cè)的深度網(wǎng)絡(luò)。R-CNN方法[5]端到端地對(duì)CNN進(jìn)行訓(xùn)練,將提議區(qū)域分類為目標(biāo)類別或背景。R-CNN主要作為分類器,并不能預(yù)測(cè)目標(biāo)邊界(除了通過(guò)邊界框回歸進(jìn)行細(xì)化)。其準(zhǔn)確度取決于區(qū)域提議模塊的性能(參見(jiàn)[20]中的比較)。一些論文提出了使用深度網(wǎng)絡(luò)來(lái)預(yù)測(cè)目標(biāo)邊界框的方法[25],[9],[26],[27]。在OverFeat方法[9]中,訓(xùn)練一個(gè)全連接層來(lái)預(yù)測(cè)假定單個(gè)目標(biāo)定位任務(wù)的邊界框坐標(biāo)。然后將全連接層變成卷積層,用于檢測(cè)多個(gè)類別的目標(biāo)。MultiBox方法[26],[27]從網(wǎng)絡(luò)中生成區(qū)域提議,網(wǎng)絡(luò)最后的全連接層同時(shí)預(yù)測(cè)多個(gè)類別不相關(guān)的邊界框,并推廣到OverFeat的“單邊界框”方式。這些類別不可知的邊界框框被用作R-CNN的提議區(qū)域[5]。與我們的全卷積方案相比,MultiBox提議網(wǎng)絡(luò)適用于單張裁剪圖像或多張大型裁剪圖像(例如224×224)。MultiBox在提議區(qū)域和檢測(cè)網(wǎng)絡(luò)之間不共享特征。稍后在我們的方法上下文中會(huì)討論OverFeat和MultiBox。與我們的工作同時(shí)進(jìn)行的,DeepMask方法[28]是為學(xué)習(xí)分割提議區(qū)域而開(kāi)發(fā)的。
卷積[9],[1],[29],[7],[2]的共享計(jì)算已經(jīng)越來(lái)越受到人們的關(guān)注,因?yàn)樗梢杂行Ф鴾?zhǔn)確地進(jìn)行視覺(jué)識(shí)別。OverFeat論文[9]計(jì)算圖像金字塔的卷積特征用于分類,定位和檢測(cè)。共享卷積特征映射的自適應(yīng)大小池化(SPP)[1]被開(kāi)發(fā)用于有效的基于區(qū)域的目標(biāo)檢測(cè)[1],[30]和語(yǔ)義分割[29]。Fast R-CNN[2]能夠?qū)蚕砭矸e特征進(jìn)行端到端的檢測(cè)器訓(xùn)練,并顯示出令人信服的準(zhǔn)確性和速度。
3.faster R-CNN

我們的目標(biāo)檢測(cè)系統(tǒng),稱為Faster R-CNN,由兩個(gè)模塊組成。第一個(gè)模塊是提議區(qū)域的深度全卷積網(wǎng)絡(luò),第二個(gè)模塊是使用提議區(qū)域的Fast R-CNN檢測(cè)器[2]。整個(gè)系統(tǒng)是一個(gè)單個(gè)的,統(tǒng)一的目標(biāo)檢測(cè)網(wǎng)絡(luò)(圖2)。使用最近流行的“注意力”[31]機(jī)制的神經(jīng)網(wǎng)絡(luò)術(shù)語(yǔ),RPN模塊告訴Fast R-CNN模塊在哪里尋找。在第3.1節(jié)中,我們介紹了區(qū)域提議網(wǎng)絡(luò)的設(shè)計(jì)和屬性。在第3.2節(jié)中,我們開(kāi)發(fā)了用于訓(xùn)練具有共享特征模塊的算法。
3.1 RPN
區(qū)域提議網(wǎng)絡(luò)(RPN)以任意大小的圖像作為輸入,輸出一組矩形的目標(biāo)提議,每個(gè)提議都有一個(gè)目標(biāo)得分。我們用全卷積網(wǎng)絡(luò)[7]對(duì)這個(gè)過(guò)程進(jìn)行建模,我們將在本節(jié)進(jìn)行描述。因?yàn)槲覀兊淖罱K目標(biāo)是與Fast R-CNN目標(biāo)檢測(cè)網(wǎng)絡(luò)[2]共享計(jì)算,所以我們假設(shè)兩個(gè)網(wǎng)絡(luò)共享一組共同的卷積層。在我們的實(shí)驗(yàn)中,我們研究了具有5個(gè)共享卷積層的Zeiler和Fergus模型[32](ZF)和具有13個(gè)共享卷積層的Simonyan和Zisserman模型[3](VGG-16)。
為了生成區(qū)域提議,我們?cè)谧詈蟮墓蚕砭矸e層輸出的卷積特征映射上滑動(dòng)一個(gè)小網(wǎng)絡(luò)。這個(gè)小網(wǎng)絡(luò)將輸入卷積特征映射的n×n空間窗口作為輸入。每個(gè)滑動(dòng)窗口映射到一個(gè)低維特征(ZF為256維,VGG為512維,后面是ReLU[33])。這個(gè)特征被輸入到兩個(gè)子全連接層——一個(gè)邊界框回歸層(reg)和一個(gè)邊界框分類層(cls)。在本文中,我們使用n=3,注意輸入圖像上的有效感受野是大的(ZF和VGG分別為171和228個(gè)像素)。圖3(左)顯示了這個(gè)小型網(wǎng)絡(luò)的一個(gè)位置。請(qǐng)注意,因?yàn)樾【W(wǎng)絡(luò)以滑動(dòng)窗口方式運(yùn)行,所有空間位置共享全連接層。這種架構(gòu)通過(guò)一個(gè)n×n卷積層,后面是兩個(gè)子1×1卷積層(分別用于reg和cls)自然地實(shí)現(xiàn)。

3.1.1 anchors
在每個(gè)滑動(dòng)窗口位置,我們同時(shí)預(yù)測(cè)多個(gè)區(qū)域提議,其中每個(gè)位置可能提議的最大數(shù)目表示為k。因此,reg層具有4k個(gè)輸出,編碼k個(gè)邊界框的坐標(biāo),cls層輸出2k個(gè)分?jǐn)?shù),估計(jì)每個(gè)提議是目標(biāo)或不是目標(biāo)的概率。相對(duì)于我們稱之為錨點(diǎn)的k個(gè)參考邊界框,k個(gè)提議是參數(shù)化的。錨點(diǎn)位于所討論的滑動(dòng)窗口的中心,并與一個(gè)尺度和長(zhǎng)寬比相關(guān)(圖3左)。默認(rèn)情況下,我們使用3個(gè)尺度和3個(gè)長(zhǎng)寬比,在每個(gè)滑動(dòng)位置產(chǎn)生k=9個(gè)錨點(diǎn)。對(duì)于大小為W×H(通常約為2400)的卷積特征映射,總共有WHk個(gè)錨點(diǎn)。
feature map上的anchor是原圖上的一個(gè)區(qū)域
平移不變的錨點(diǎn)
我們的方法的一個(gè)重要特性是它是平移不變的,無(wú)論是在錨點(diǎn)還是計(jì)算相對(duì)于錨點(diǎn)的區(qū)域提議的函數(shù)。如果在圖像中平移目標(biāo),提議應(yīng)該平移,并且同樣的函數(shù)應(yīng)該能夠在任一位置預(yù)測(cè)提議。平移不變特性是由我們的方法保證的。作為比較,MultiBox方法[27]使用k-means生成800個(gè)錨點(diǎn),這不是平移不變的。所以如果平移目標(biāo),MultiBox不保證會(huì)生成相同的提議。
平移不變特性也減小了模型的大小。MultiBox有(4+1)×800(4+1)×800維的全連接輸出層,而我們的方法在k=9k=9個(gè)錨點(diǎn)的情況下有(4+2)×9(4+2)×9維的卷積輸出層。因此,對(duì)于VGG-16,我們的輸出層具有2.8×1042.8×104個(gè)參數(shù)(對(duì)于VGG-16為512×(4+2)×9512×(4+2)×9),比MultiBox輸出層的6.1×1066.1×106個(gè)參數(shù)少了兩個(gè)數(shù)量級(jí)(對(duì)于MultiBox [27]中的GoogleNet[34]為1536×(4+1)×8001536×(4+1)×800)。如果考慮到特征投影層,我們的提議層仍然比MultiBox少一個(gè)數(shù)量級(jí)。我們期望我們的方法在PASCAL VOC等小數(shù)據(jù)集上有更小的過(guò)擬合風(fēng)險(xiǎn)。
(4+2)是cls和loc編碼后的維度
多尺度錨點(diǎn)作為回歸參考
我們的錨點(diǎn)設(shè)計(jì)提出了一個(gè)新的方案來(lái)解決多尺度(和長(zhǎng)寬比)。如圖1所示,多尺度預(yù)測(cè)有兩種流行的方法。第一種方法是基于圖像/特征金字塔,例如DPM[8]和基于CNN的方法[9],[1],[2]中。圖像在多個(gè)尺度上進(jìn)行縮放,并且針對(duì)每個(gè)尺度(圖1(a))計(jì)算特征映射(HOG[8]或深卷積特征[9],[1],[2])。這種方法通常是有用的,但是非常耗時(shí)。第二種方法是在特征映射上使用多尺度(和/或長(zhǎng)寬比)的滑動(dòng)窗口。例如,在DPM[8]中,使用不同的濾波器大?。ɡ?×7和7×5)分別對(duì)不同長(zhǎng)寬比的模型進(jìn)行訓(xùn)練。如果用這種方法來(lái)解決多尺度問(wèn)題,可以把它看作是一個(gè)“濾波器金字塔”(圖1(b))。第二種方法通常與第一種方法聯(lián)合采用[8]。
3.1.2 損失函數(shù)
為了訓(xùn)練RPN,我們?yōu)槊總€(gè)錨點(diǎn)分配一個(gè)二值類別標(biāo)簽(是目標(biāo)或不是目標(biāo))。我們給兩種錨點(diǎn)分配一個(gè)正標(biāo)簽:(i)具有與實(shí)際邊界框的重疊最高交并比(IoU)的錨點(diǎn),或者(ii)具有與實(shí)際邊界框的重疊超過(guò)0.7 IoU的錨點(diǎn)。注意,單個(gè)真實(shí)邊界框可以為多個(gè)錨點(diǎn)分配正標(biāo)簽。通常第二個(gè)條件足以確定正樣本;但我們?nèi)匀徊捎玫谝粋€(gè)條件,因?yàn)樵谝恍O少數(shù)情況下,第二個(gè)條件可能找不到正樣本。對(duì)于所有的真實(shí)邊界框,如果一個(gè)錨點(diǎn)的IoU比率低于0.3,我們給非正面的錨點(diǎn)分配一個(gè)負(fù)標(biāo)簽。既不正面也不負(fù)面的錨點(diǎn)不會(huì)有助于訓(xùn)練目標(biāo)函數(shù)。
根據(jù)這些定義,我們對(duì)目標(biāo)函數(shù)Fast R-CNN[2]中的多任務(wù)損失進(jìn)行最小化。我們對(duì)圖像的損失函數(shù)定義為:


這兩個(gè)項(xiàng)用Ncls和Nreg進(jìn)行標(biāo)準(zhǔn)化,并由一個(gè)平衡參數(shù)λ加權(quán)。在我們目前的實(shí)現(xiàn)中(如在發(fā)布的代碼中),方程(1)中的cls項(xiàng)通過(guò)小批量數(shù)據(jù)的大?。碞cls=256)進(jìn)行歸一化,regreg項(xiàng)根據(jù)錨點(diǎn)位置的數(shù)量(即,Nreg~24000)進(jìn)行歸一化。默認(rèn)情況下,我們?cè)O(shè)置λ=10,因此cls和reg項(xiàng)的權(quán)重大致相等。我們通過(guò)實(shí)驗(yàn)顯示,結(jié)果對(duì)寬范圍的λλ值不敏感(表9)。我們還注意到,上面的歸一化不是必需的,可以簡(jiǎn)化。

對(duì)于邊界框回歸,我們采用[5]中的4個(gè)坐標(biāo)參數(shù)化:

其中,x,y,w和h表示邊界框的中心坐標(biāo)及其寬和高。變量x,xa和x\*分別表示預(yù)測(cè)邊界框,錨盒和實(shí)際邊界框(類似于y,w,h)。這可以被認(rèn)為是從錨盒到鄰近的實(shí)際邊界框的回歸。
然而,我們的方法通過(guò)與之前的基于RoI(感興趣區(qū)域)方法[1],[2]不同的方式來(lái)實(shí)現(xiàn)邊界框回歸。在[1],[2]中,對(duì)任意大小的RoI池化的特征執(zhí)行邊界框回歸,并且回歸權(quán)重由所有區(qū)域大小共享。在我們的公式中,用于回歸的特征在特征映射上具有相同的空間大小(3×3)。為了說(shuō)明不同的大小,學(xué)習(xí)一組k個(gè)邊界框回歸器。每個(gè)回歸器負(fù)責(zé)一個(gè)尺度和一個(gè)長(zhǎng)寬比,而k個(gè)回歸器不共享權(quán)重。因此,由于錨點(diǎn)的設(shè)計(jì),即使特征具有固定的尺度/比例,仍然可以預(yù)測(cè)各種尺寸的邊界框。
3.1.3 訓(xùn)練RPN
RPN可以通過(guò)反向傳播和隨機(jī)梯度下降(SGD)進(jìn)行端對(duì)端訓(xùn)練[35]。我們遵循[2]的“以圖像為中心”的采樣策略來(lái)訓(xùn)練這個(gè)網(wǎng)絡(luò)。每個(gè)小批量數(shù)據(jù)都從包含許多正面和負(fù)面示例錨點(diǎn)的單張圖像中產(chǎn)生。對(duì)所有錨點(diǎn)的損失函數(shù)進(jìn)行優(yōu)化是可能的,但是這樣會(huì)偏向于負(fù)樣本,因?yàn)樗鼈兪钦贾鲗?dǎo)地位的。取而代之的是,我們?cè)趫D像中隨機(jī)采樣256個(gè)錨點(diǎn),計(jì)算一個(gè)小批量數(shù)據(jù)的損失函數(shù),其中采樣的正錨點(diǎn)和負(fù)錨點(diǎn)的比率可達(dá)1:1。如果圖像中的正樣本少于128個(gè),我們使用負(fù)樣本填充小批量數(shù)據(jù)。
我們通過(guò)從標(biāo)準(zhǔn)方差為0.01的零均值高斯分布中提取權(quán)重來(lái)隨機(jī)初始化所有新層。所有其他層(即共享卷積層)通過(guò)預(yù)訓(xùn)練的ImageNet分類模型[36]來(lái)初始化,如同標(biāo)準(zhǔn)實(shí)踐[5]。我們調(diào)整ZF網(wǎng)絡(luò)的所有層,以及VGG網(wǎng)絡(luò)的conv3_1及其之上的層以節(jié)省內(nèi)存[2]。對(duì)于60k的小批量數(shù)據(jù),我們使用0.001的學(xué)習(xí)率,對(duì)于PASCAL VOC數(shù)據(jù)集中的下一個(gè)20k小批量數(shù)據(jù),使用0.0001。我們使用0.9的動(dòng)量和0.0005的重量衰減[37]。我們的實(shí)現(xiàn)使用Caffe[38]。
3.2 RPN和Fast R-CNN共享特征
到目前為止,我們已經(jīng)描述了如何訓(xùn)練用于區(qū)域提議生成的網(wǎng)絡(luò),沒(méi)有考慮將利用這些提議的基于區(qū)域的目標(biāo)檢測(cè)CNN。對(duì)于檢測(cè)網(wǎng)絡(luò),我們采用Fast R-CNN[2]。接下來(lái)我們介紹一些算法,學(xué)習(xí)由RPN和Fast R-CNN組成的具有共享卷積層的統(tǒng)一網(wǎng)絡(luò)(圖2)。
獨(dú)立訓(xùn)練的RPN和Fast R-CNN將以不同的方式修改卷積層。因此,我們需要開(kāi)發(fā)一種允許在兩個(gè)網(wǎng)絡(luò)之間共享卷積層的技術(shù),而不是學(xué)習(xí)兩個(gè)獨(dú)立的網(wǎng)絡(luò)。我們討論三個(gè)方法來(lái)訓(xùn)練具有共享特征的網(wǎng)絡(luò):
(一)交替訓(xùn)練。在這個(gè)解決方案中,我們首先訓(xùn)練RPN,并使用這些提議來(lái)訓(xùn)練Fast R-CNN。由Fast R-CNN微調(diào)的網(wǎng)絡(luò)然后被用于初始化RPN,并且重復(fù)這個(gè)過(guò)程。這是本文所有實(shí)驗(yàn)中使用的解決方案。
(二)近似聯(lián)合訓(xùn)練。在這個(gè)解決方案中,RPN和Fast R-CNN網(wǎng)絡(luò)在訓(xùn)練期間合并成一個(gè)網(wǎng)絡(luò),如圖2所示。在每次SGD迭代中,前向傳遞生成區(qū)域提議,在訓(xùn)練Fast R-CNN檢測(cè)器將這看作是固定的、預(yù)計(jì)算的提議。反向傳播像往常一樣進(jìn)行,其中對(duì)于共享層,組合來(lái)自RPN損失和Fast R-CNN損失的反向傳播信號(hào)。這個(gè)解決方案很容易實(shí)現(xiàn)。但是這個(gè)解決方案忽略了關(guān)于提議邊界框的坐標(biāo)(也是網(wǎng)絡(luò)響應(yīng))的導(dǎo)數(shù),因此是近似的。在我們的實(shí)驗(yàn)中,我們實(shí)驗(yàn)發(fā)現(xiàn)這個(gè)求解器產(chǎn)生了相當(dāng)?shù)慕Y(jié)果,與交替訓(xùn)練相比,訓(xùn)練時(shí)間減少了大約25?50%25?50%。這個(gè)求解器包含在我們發(fā)布的Python代碼中。
(三)非近似的聯(lián)合訓(xùn)練。如上所述,由RPN預(yù)測(cè)的邊界框也是輸入的函數(shù)。Fast R-CNN中的RoI池化層[2]接受卷積特征以及預(yù)測(cè)的邊界框作為輸入,所以理論上有效的反向傳播求解器也應(yīng)該包括關(guān)于邊界框坐標(biāo)的梯度。在上述近似聯(lián)合訓(xùn)練中,這些梯度被忽略。在一個(gè)非近似的聯(lián)合訓(xùn)練解決方案中,我們需要一個(gè)關(guān)于邊界框坐標(biāo)可微分的RoI池化層。這是一個(gè)重要的問(wèn)題,可以通過(guò)[15]中提出的“RoI扭曲”層給出解決方案,這超出了本文的范圍。
四步交替訓(xùn)練。在本文中,我們采用實(shí)用的四步訓(xùn)練算法,通過(guò)交替優(yōu)化學(xué)習(xí)共享特征。在第一步中,我們按照3.1.3節(jié)的描述訓(xùn)練RPN。該網(wǎng)絡(luò)使用ImageNet的預(yù)訓(xùn)練模型進(jìn)行初始化,并針對(duì)區(qū)域提議任務(wù)進(jìn)行了端到端的微調(diào)。在第二步中,我們使用由第一步RPN生成的提議,由Fast R-CNN訓(xùn)練單獨(dú)的檢測(cè)網(wǎng)絡(luò)。該檢測(cè)網(wǎng)絡(luò)也由ImageNet的預(yù)訓(xùn)練模型進(jìn)行初始化。此時(shí)兩個(gè)網(wǎng)絡(luò)不共享卷積層。在第三步中,我們使用檢測(cè)器網(wǎng)絡(luò)來(lái)初始化RPN訓(xùn)練,但是我們修正共享的卷積層,并且只對(duì)RPN特有的層進(jìn)行微調(diào)?,F(xiàn)在這兩個(gè)網(wǎng)絡(luò)共享卷積層。最后,保持共享卷積層的固定,我們對(duì)Fast R-CNN的獨(dú)有層進(jìn)行微調(diào)。因此,兩個(gè)網(wǎng)絡(luò)共享相同的卷積層并形成統(tǒng)一的網(wǎng)絡(luò)。類似的交替訓(xùn)練可以運(yùn)行更多的迭代,但是我們只觀察到可以忽略的改進(jìn)。