Fast R-CNN

Ross Girshick Microsoft Research


摘要

????????本文提出了一種基于快速區(qū)域的卷積網(wǎng)絡(luò)方法(Fast R-CNN)用于物體檢測。 Fast R-CNN建立在以前的工作基礎(chǔ)上,使用深度卷積網(wǎng)絡(luò)有效地對對象提議進(jìn)行分類。 與之前的工作相比,F(xiàn)ast R-CNN采用了多種創(chuàng)新技術(shù)來提高訓(xùn)練和測試速度,同時提高了檢測精度。 快速R-CNN訓(xùn)練深度的VGG16網(wǎng)絡(luò)比R-CNN快9倍,在測試時間快213倍,并在PASCAL VOC 2012上實現(xiàn)更高的mAP。與SPPnet相比,F(xiàn)ast R-CNN訓(xùn)練VGG16 3倍速更快 ,測試速度快10倍,并且更準(zhǔn)確。 快速R-CNN在Python和C ++中實現(xiàn)(使用Caffe),可通過https://github.com/rbgirshick/fast-rcnn的開源MIT許可證獲得。

1.簡介

? ? ? ? 最近,深度ConvNets [14,16]顯著改善了圖像分類[14]和物體檢測[9,19]的準(zhǔn)確性。與圖像分類相比,對象檢測是一項更具挑戰(zhàn)性的任務(wù),需要更復(fù)雜的方法來解決。由于這種復(fù)雜性,當(dāng)前的方法(例如,[9,11,19,25])在多級管道中訓(xùn)練模型,這些模型是緩慢且不優(yōu)雅的。

? ? ? ? 復(fù)雜性的產(chǎn)生是因為檢測需要物體的精確定位,從而產(chǎn)生兩個主要挑戰(zhàn)。首先,必須處理許多候選對象位置(通常稱為“提議”)。其次,這些候選人只提供粗略的本地化,必須對其進(jìn)行細(xì)化以實現(xiàn)精確定位。解決這些問題往往會影響速度,準(zhǔn)確性或簡單性。

????????在本文中,我們簡化了最先進(jìn)的基于ConvNet的物體探測器的訓(xùn)練過程[9,11]。我們提出了一個單階段訓(xùn)練算法,該算法共同學(xué)習(xí)對對象提議進(jìn)行分類并改進(jìn)其空間位置。

????????由此產(chǎn)生的方法可以訓(xùn)練一個非常深的檢測網(wǎng)絡(luò)(VGG16 [20])比R-CNN [9]快9倍,比SPPnet [11]快3倍。在運行時,檢測網(wǎng)絡(luò)以0.3s處理圖像(不包括對象建議時間)

????????同時實現(xiàn)PASCAL VOC 2012 [7]的最高精度,mAP為66%(R-CNN為62%)

1.1 ?R-CNN和SPPnet

????????基于區(qū)域的卷積網(wǎng)絡(luò)方法(R-CNN)[9]通過使用深度ConvNet對對象提議進(jìn)行分類,實現(xiàn)了出色的對象檢測精度。 然而,R-CNN有明顯的缺點:

????????1.訓(xùn)練是一個多階段的管道。 R-CNN首先使用對數(shù)丟失對對象提議進(jìn)行ConvNet微調(diào)。 然后,它適應(yīng)SVM到ConvNet特征。 這些SVM充當(dāng)對象檢測器,取代了通過微調(diào)學(xué)習(xí)的softmax分類器。 在第三個訓(xùn)練階段,學(xué)習(xí)邊界框回歸量。

????????2.訓(xùn)練在空間和時間上都很昂貴。 對于SVM和邊界框回歸訓(xùn)練,從每個圖像中的每個對象提議中提取特征并將其寫入磁盤。 對于深度網(wǎng)絡(luò),例如VGG16,這個過程需要2.5個GPU天才能獲得VOC07 trainval set的5k圖像。 這些功能需要數(shù)百GB的存儲空間。

????????3.物體檢測很慢。 在測試時,從每個測試圖像中的每個對象提議中提取特征。 使用VGG16進(jìn)行檢測需要47秒/圖像(在GPU上)。

????????R-CNN很慢,因為它為每個對象提議執(zhí)行ConvNet前向傳遞,而不共享計算。 空間金字塔匯集網(wǎng)絡(luò)(SPPnets)[11]被提議通過共享計算來加速R-CNN。 SPPnet方法計算整個輸入圖像的卷積特征映射,然后使用從共享特征映射中提取的特征向量對每個對象提議進(jìn)行分類。 通過將提議內(nèi)的特征地圖的部分最大化為固定大小的輸出(例如,6×6)來提取特征以用于提議。 匯總多個輸出大小,然后在空間金字塔池中連接[15]。 SPPnet在測試時將R-CNN加速10到100倍。 由于更快的特征提取,訓(xùn)練時間也減少了3倍。

????????SPPnet也有明顯的缺點。 與R-CNN一樣,訓(xùn)練是一個多階段管道,涉及提取特征,微調(diào)網(wǎng)絡(luò)損失,訓(xùn)練SVM,最后擬合邊界框回歸量。 特征也寫入磁盤。 但與R-CNN不同,[11]中提出的微調(diào)算法無法更新空間金字塔匯集之前的卷積層。 不出所料,這種限制(固定卷積層)限制了深度網(wǎng)絡(luò)的準(zhǔn)確性。

1.2 ?改進(jìn)

????????我們提出了一種新的訓(xùn)練算法,可以修復(fù)R-CNN和SPPnet的缺點,同時提高它們的速度和準(zhǔn)確性。 我們稱這種方法為快速R-CNN,因為它訓(xùn)練和測試相對較快。 快速R-CNN方法有幾個優(yōu)點:

????????1.比R-CNN,SPPnet更高的檢測質(zhì)量(mAP)

????????2.訓(xùn)練是單階段的,使用多任務(wù)損失

????????3.訓(xùn)練可以更新所有網(wǎng)絡(luò)層

????????4.特征緩存不需要磁盤存儲

????????快速R-CNN是用Python和C ++編寫的(Caffe [13]),可以在開源MIT Li-cense下獲得,網(wǎng)址是https://github.com/rbgirshick/fast-rcnn。

2.Fast R-CNN架構(gòu)和訓(xùn)練

????????圖1說明了Fast R-CNN架構(gòu)。 Fast R-CNN網(wǎng)絡(luò)將整個圖像和一組對象提議作為輸入。 網(wǎng)絡(luò)首先使用幾個卷積(conv)和最大池化層處理整個圖像,以產(chǎn)生轉(zhuǎn)換特征圖。 然后,對于每個對象提議,感興趣區(qū)域(RoI)池化層從特征圖中提取固定長度的特征向量。 每個特征向量被饋送到一系列完全連接的(fc)層,最終分支成兩個兄弟輸出層:一個產(chǎn)生在K個對象類上的softmax概率估計加上一個全能的“背景”類和另一個輸出的層 每個K對象類的四個實數(shù)值。 每組4個值對K類之一的精細(xì)邊界框位置進(jìn)行編碼。

圖1.Fast R-CNN架構(gòu)。 輸入圖像和多個感興趣區(qū)域(RoI)被輸入到完全卷積網(wǎng)絡(luò)中。 每個RoI匯集到固定大小的特征映射中,然后通過完全連接的層(FC)映射到特征向量。 網(wǎng)絡(luò)每個RoI有兩個輸出向量:softmax概率和每類邊界框回歸偏移。 該架構(gòu)采用端到端的多任務(wù)丟失進(jìn)行訓(xùn)練。

2.1 RoI池層

????????RoI池化層使用最大池化將任何有效感興趣區(qū)域內(nèi)的特征轉(zhuǎn)換為具有固定空間范圍H×W(例如,7×7)的小特征映射,其中H和W是層超參數(shù) 這與任何特定的RoI無關(guān)。 在本文中,RoI是一個轉(zhuǎn)換為轉(zhuǎn)換特征映射的矩形窗口。 每個RoI由四元組(r,c,h,w)定義,指定其左上角(r,c)及其高度和寬度(h,w)。

????????RoI最大池化層通過將h×w RoI窗口劃分為大約h / H×w / W的子窗口的H×W網(wǎng)格,然后將每個子窗口中的值最大匯集到相應(yīng)的輸出網(wǎng)格單元中來工作。 池化獨立應(yīng)用于每個要素圖通道,如標(biāo)準(zhǔn)最大池化所示。 RoI層只是SPPnets [11]中使用的空間金字塔池層的特例,其中只有一個金字塔層。 我們使用[11]中給出的池化子窗口計算。

2.2 ?從預(yù)先訓(xùn)練的網(wǎng)絡(luò)初始化

????????我們試驗了三個經(jīng)過預(yù)先訓(xùn)練的ImageNet [4]網(wǎng)絡(luò),每個網(wǎng)絡(luò)有五個最大池化層和五到十三個卷積層(有關(guān)網(wǎng)絡(luò)細(xì)節(jié),請參見第4.1節(jié))。 當(dāng)預(yù)訓(xùn)練的網(wǎng)絡(luò)初始化Fast R-CNN網(wǎng)絡(luò)時,它經(jīng)歷三次轉(zhuǎn)換。首先,最后的最大池化層由RoI池化層替換,該池化層通過將H和W設(shè)置為與網(wǎng)絡(luò)的第一完全連接層(例如,H = W = 7forVGG16)兼容來配置。

????????其次,網(wǎng)絡(luò)的最后一個全連接層和soft-max(經(jīng)過1000路ImageNet分類培訓(xùn))被前面描述的兩個兄弟層替換(完全連接層和softmax,超過K + 1類別和類別) - 特定的邊界框回歸量)。

????????第三,修改網(wǎng)絡(luò)以獲取兩個數(shù)據(jù)輸入:圖像列表和那些圖像中的RoI列表。

2.3 ?檢測微調(diào)

????????使用反向傳播訓(xùn)練所有網(wǎng)絡(luò)權(quán)重是Fast R-CNN的重要功能。首先,讓我們闡明為什么SPPnet無法更新空間金字塔池池下的權(quán)重。

????????根本原因是當(dāng)每個訓(xùn)練樣本(即RoI)來自不同的圖像時,通過SPP層的反向傳播非常低效,這正是R-CNN和SPPnet網(wǎng)絡(luò)的訓(xùn)練方式。效率低下源于這樣一個事實,即每個RoI可能具有非常大的感受野,通常跨越整個輸入圖像。由于前向傳播必須處理整個感受野,因此訓(xùn)練輸入很大(通常是整個圖像)。

????????我們提出了一種更有效的訓(xùn)練方法,利用訓(xùn)練期間的特征共享。在Fast R-CNN訓(xùn)練中,隨機梯度下降(SGD)小批量分層采樣,首先采樣N個圖像,然后從每個圖像中采樣R / N RoI。重要的是,來自相同圖像的RoI在前向和后向傳遞中共享計算和存儲器。使N小減少小批量計算。例如,當(dāng)使用N = 2且R = 128時,所提出的訓(xùn)練方案比從128個不同圖像采樣一個RoI(即,R-CNN和SPPnet策略)快大約64倍。

????????對此策略的一個擔(dān)憂是它可能導(dǎo)致慢速訓(xùn)練收斂,因為來自同一圖像的RoI是相關(guān)的。這個問題似乎不是一個實際問題,我們使用比R-CNN更少的SGD迭代,使用N = 2和R = 128獲得了良好的結(jié)果。

????????除了分層采樣,F(xiàn)ast R-CNN使用簡化的訓(xùn)練過程和一個微調(diào)階段,共同優(yōu)化softmax分類器和邊界框緩解器,而不是在三個單獨的階段訓(xùn)練softmax分類器,SVM和回歸器[9,11]。該程序的組成部分(損失,小批量采樣策略,通過RoI匯集層的反向傳播和SGD超參數(shù))如下所述。

多任務(wù)損失。Fast R-CNN網(wǎng)絡(luò)具有兩個同級輸出層。 第一個輸出在個類別上的離散概率分布(每個RoI),。 通常,通過全連接層的個輸出上的Softmax來計算。第二個輸出層輸出檢測框回歸偏移,,對于由k索引的K個類別中的每一個。 我們使用3中給出的的參數(shù)化,其中指定相對于候選框的尺度不變轉(zhuǎn)換和對數(shù)空間高度/寬度移位。????????每個訓(xùn)練RoI都標(biāo)有真實分類類u和真實邊界框回歸目標(biāo)v。我們在每個標(biāo)記的RoI上使用多任務(wù)損失L來聯(lián)合訓(xùn)練分類和邊界框回歸:

其中Lcls(p,u)= - log pu是真實類u的對數(shù)損失。

????????第二個任務(wù)損失Lloc是針對類u,v =(vx,vy,vw,vh)的真實邊界框回歸目標(biāo)的元組定義的,并且預(yù)測的元組tu =(tux,tuy,tuw,tuh) ,再次對u分類。 當(dāng)u≥1時,艾弗森支架指示器函數(shù)[u≥1]評估為1,否則為0。 按照慣例,背景類被標(biāo)記為u = 0.對于背景RoI,沒有前景概念的邊界框,因此Lloc被忽略。 對于邊界框回歸,我們使用其中的損失是一種強大的L1損失,對R-CNN和SPPnet中使用的L2損耗的異常值不太敏感。 當(dāng)回歸目標(biāo)無限制時,L2損失訓(xùn)練可能需要仔細(xì)調(diào)整學(xué)習(xí)速率以防止爆炸梯度。式3消除了這種敏感性。


????????等式中的超參數(shù)λ1控制兩個任務(wù)損失之間的平衡。 我們將前景回歸目標(biāo)vi標(biāo)準(zhǔn)化為零均值和單位方差。 所有實驗都使用λ= 1。

????????我們注意到[6]使用相關(guān)的損失來訓(xùn)練一個與類無關(guān)的對象提議網(wǎng)絡(luò)。 與我們的方法不同,[6]提倡雙網(wǎng)絡(luò)系統(tǒng),將本地化和分類分開。 OverFeat [19],R-CNN [9]和SPPnet [11]也訓(xùn)練分類器和邊界框定位器,但是這些方法使用階段式訓(xùn)練,我們表明它對于快速R-CNN來說是次優(yōu)的(第5.1節(jié))。

小批量采樣。在微調(diào)期間,每個SGD的小批量由個圖像構(gòu)成,均勻地隨機選擇(如通常的做法,我們實際上迭代數(shù)據(jù)集的排列)。 我們使用大小為的小批量,從每個圖像采樣64個RoI。 如在3中,我們從候選框中獲取25%的RoI,這些候選框與檢測框真值的IoU至少為0.5。 這些RoI只包括用前景對象類標(biāo)記的樣本,即。 剩余的RoI從候選框中采樣,該候選框與檢測框真值的最大IoU在區(qū)間上5。 這些是背景樣本,并用標(biāo)記。0.1的閾值下限似乎充當(dāng)難負(fù)樣本重訓(xùn)練的啟發(fā)式算法11。 在訓(xùn)練期間,圖像以概率0.5水平翻轉(zhuǎn)。不使用其他數(shù)據(jù)增強。

通過RoI池化層的反向傳播。反向傳播通過RoI池化層。為了清楚起見,我們假設(shè)每個小批量()只有一個圖像,擴展到是顯而易見的,因為前向傳播獨立地處理所有圖像。

????????令xi∈R為進(jìn)入RoI池層的第i個激活輸入,并讓yrj為第r個RoI的層的第j個輸出。 RoI池化層計算yrj = xi *(r,j),其中i *(r,j)=argmaxi'∈R(r,j)xi'。 R(r,j)是指數(shù)輸出單元yrj max匯總的子窗口中的輸入集。 單個xi可以分配給幾個不同的輸出yrj。

????????RoI池化層反向傳播函數(shù)通過遵循argmax switches來計算關(guān)于每個輸入變量的損失函數(shù)的偏導(dǎo)數(shù):換句話說,對于每個小批量RoI?和對于每個池化輸出單元,如果是通過最大池化選擇的argmax,則將這個偏導(dǎo)數(shù)積累下來。在反向傳播中,偏導(dǎo)數(shù)已經(jīng)由RoI池化層頂部的層的反向傳播函數(shù)計算。


SGD超參數(shù)。用于Softmax分類和檢測框回歸的全連接層的權(quán)重分別使用具有方差0.01和0.001的零均值高斯分布初始化。偏置初始化為0。所有層的權(quán)重學(xué)習(xí)率為1倍的全局學(xué)習(xí)率,偏置為2倍的全局學(xué)習(xí)率,全局學(xué)習(xí)率為0.001。 當(dāng)對VOC07或VOC12 trainval訓(xùn)練時,我們運行SGD進(jìn)行30k次小批量迭代,然后將學(xué)習(xí)率降低到0.0001,再訓(xùn)練10k次迭代。當(dāng)我們訓(xùn)練更大的數(shù)據(jù)集,我們運行SGD更多的迭代,如下文所述。 使用0.9的動量和0.0005的參數(shù)衰減(權(quán)重和偏置)。

2.4 尺度不變性

????????我們探索兩種實現(xiàn)尺度不變對象檢測的方法:(1)通過“brute force”學(xué)習(xí)和(2)通過使用圖像金字塔。 這些策略遵循5中的兩種方法。 在“brute force”方法中,在訓(xùn)練和測試期間以預(yù)定義的像素大小處理每個圖像。網(wǎng)絡(luò)必須直接從訓(xùn)練數(shù)據(jù)學(xué)習(xí)尺度不變性目標(biāo)檢測。

????????相反,多尺度方法通過圖像金字塔向網(wǎng)絡(luò)提供近似尺度不變性。 在測試時,圖像金字塔用于大致縮放-規(guī)范化每個候選框。 在多尺度訓(xùn)練期間,我們在每次圖像采樣時隨機采樣金字塔尺度,遵循5,作為數(shù)據(jù)增強的形式。由于GPU內(nèi)存限制,我們只對較小的網(wǎng)絡(luò)進(jìn)行多尺度訓(xùn)練。

3?Fast R-CNN檢測

????????一旦Fast R-CNN網(wǎng)絡(luò)被微調(diào)完畢,檢測相當(dāng)于運行前向傳播(假設(shè)候選框是預(yù)先計算的)。網(wǎng)絡(luò)將圖像(或圖像金字塔,編碼為圖像列表)和待計算概率的個候選框的列表作為輸入。在測試的時候,通常在2000左右,雖然我們將考慮將它變大(約45k)的情況。當(dāng)使用圖像金字塔時,每個RoI被縮放,使其最接近5中的個像素。

????????對于每個測試的RoI?,正向傳播輸出類別后驗概率分布和相對于的預(yù)測的檢測框框偏移集合(個類別中的每一個獲得其自己的精細(xì)檢測框預(yù)測)。我們使用估計的概率為每個對象類別分配的檢測置信度。然后,我們使用R-CNN算法的設(shè)置和對每個類別獨立執(zhí)行非最大抑制3。

3.1?使用截斷的SVD來進(jìn)行更快的檢測

????????對于整體圖像分類,與卷積層相比,計算全連接層花費的時間較小。相反,為了檢測,要處理的RoI的數(shù)量很大,并且接近一半的正向傳遞時間用于計算全連接層(參見圖2)。大的全連接層容易通過用截短的SVD壓縮來加速12?13。

????????在這種技術(shù)中,層的權(quán)重矩陣通過SVD被近似分解為:在這種分解中,是一個的矩陣,包括的前個左奇異向量,是對角矩陣,其包含的前個奇異值,并且是矩陣,包括的前個右奇異向量。截斷SVD將參數(shù)計數(shù)從減少到個,如果遠(yuǎn)小于,則SVD可能是重要的。 為了壓縮網(wǎng)絡(luò),對應(yīng)于的單個全連接層由兩個全連接層替代,在它們之間沒有非線性。這些層中的第一層使用權(quán)重矩陣(沒有偏置),并且第二層使用(其中原始偏差與相關(guān)聯(lián))。當(dāng)RoI的數(shù)量大時,這種簡單的壓縮方法給出良好的加速。

4?主要結(jié)果

三個主要結(jié)果支持本文的貢獻(xiàn):

1. VOC07,2010和2012的最高的mAP。

2. 相比R-CNN,SPPnet,快速訓(xùn)練和測試。

3. 在VGG16中微調(diào)卷積層改善了mAP。

4.1.實驗配置

????????我們的實驗使用了三個經(jīng)過預(yù)訓(xùn)練的ImageNet網(wǎng)絡(luò)模型,這些模型可以在線獲得(https://github.com/BVLC/caffe/wiki/Model-Zoo)。第一個是來自R-CNN3的CaffeNet(實質(zhì)上是AlexNet1)。 我們將這個CaffeNet稱為模型S,即小模型。第二網(wǎng)絡(luò)是來自14的VGG_CNN_M_1024,其具有與S相同的深度,但是更寬。 我們把這個網(wǎng)絡(luò)模型稱為M,即中等模型。最后一個網(wǎng)絡(luò)是來自15的非常深的VGG16模型。由于這個模型是最大的,我們稱之為L。在本節(jié)中,所有實驗都使用單尺度訓(xùn)練和測試(,詳見尺度不變性:暴力或精細(xì)?)。

4.2?VOC 2010和2012數(shù)據(jù)集結(jié)果

????????如上表(表2,表3)所示,在這些數(shù)據(jù)集上,我們比較Fast R-CNN(簡稱FRCN)和公共排行榜中comp4(外部數(shù)據(jù))上的主流方法(http://host.robots.ox.ac.uk:8080/leaderboard?,訪問時間是2015.4.18)。對于NUS_NIN_c2000和BabyLearning方法,目前沒有其架構(gòu)的確切信息,它們是Network-in-Network的變體16。所有其他方法從相同的預(yù)訓(xùn)練VGG16網(wǎng)絡(luò)初始化。

????????Fast R-CNN在VOC12上獲得最高結(jié)果,mAP為65.7%(加上額外數(shù)據(jù)為68.4%)。它也比其他方法快兩個數(shù)量級,這些方法都基于比較“慢”的R-CNN網(wǎng)絡(luò)。在VOC10上,SegDeepM?6獲得了比Fast R-CNN更高的mAP(67.2%對比66.1%)。SegDeepM使用VOC12 trainval訓(xùn)練集訓(xùn)練并添加了分割的標(biāo)注,它被設(shè)計為通過使用馬爾可夫隨機場推理R-CNN檢測和來自17的語義分割方法的分割來提高R-CNN精度。Fast R-CNN可以替換SegDeepM中使用的R-CNN,這可以導(dǎo)致更好的結(jié)果。當(dāng)使用放大的07++12訓(xùn)練集(見表2標(biāo)題)時,F(xiàn)ast R-CNN的mAP增加到68.8%,超過SegDeepM。

4.3?VOC 2007數(shù)據(jù)集上的結(jié)果

????????在VOC07數(shù)據(jù)集上,我們比較Fast R-CNN與R-CNN和SPPnet的mAP。 所有方法從相同的預(yù)訓(xùn)練VGG16網(wǎng)絡(luò)開始,并使用邊界框回歸。 VGG16 SPPnet結(jié)果由5的作者提供。SPPnet在訓(xùn)練和測試期間使用五個尺度。Fast R-CNN對SPPnet的改進(jìn)說明,即使Fast R-CNN使用單個尺度訓(xùn)練和測試,卷積層微調(diào)在mAP中提供了大的改進(jìn)(從63.1%到66.9%)。R-CNN的mAP為66.0%。 作為次要點,SPPnet在PASCAL中沒有使用被標(biāo)記為“困難”的樣本進(jìn)行訓(xùn)練。 除去這些樣本,F(xiàn)ast R-CNN 的mAP為68.1%。 所有其他實驗都使用被標(biāo)記為“困難”的樣本。

4.4?訓(xùn)練和測試時間


表4. Fast RCNN,R-CNN和SPPnet中相同模型之間的運行時間比較。Fast R-CNN使用單尺度模式。SPPnet使用5中指定的五個尺度,由5的作者提供在Nvidia K40 GPU上的測量時間。

????????快速的訓(xùn)練和測試是我們的第二個主要成果。表4比較了Fast RCNN,R-CNN和SPPnet之間的訓(xùn)練時間(小時),測試速率(每秒圖像數(shù))和VOC07上的mAP。對于VGG16,沒有截斷SVD的Fast R-CNN處理圖像比R-CNN快146倍,有截斷SVD的R-CNN快213倍。訓(xùn)練時間減少9倍,從84小時減少到9.5小時。與SPPnet相比,沒有截斷SVD的Fast RCNN訓(xùn)練VGG16網(wǎng)絡(luò)比SPPnet快2.7倍(9.5小時對25.5小時),測試時間快7倍,有截斷SVD的Fast RCNN比的SPPnet快10倍。 Fast R-CNN還不需要數(shù)百GB的磁盤存儲,因為它不緩存特征。

截斷SVD。截斷的SVD可以將檢測時間減少30%以上,同時在mAP中只有很小(0.3個百分點)的下降,并且無需在模型壓縮后執(zhí)行額外的微調(diào)。

圖2. 截斷SVD之前和之后VGG16的時間分布。在SVD之前,完全連接的層fc6和fc7需要45%的時間。

????????圖2示出了如何使用來自VGG16的fc6層中的矩陣的頂部1024個奇異值和來自fc7層的矩陣的頂部256個奇異值減少運行時間,而在mAP中幾乎沒有損失。如果在壓縮之后再次微調(diào),則可以在mAP中具有更小的下降的情況下進(jìn)一步加速。

4.5?微調(diào)哪些層?

????????對于在SPPnet論文5中考慮的不太深的網(wǎng)絡(luò),僅微調(diào)全連接層似乎足以獲得良好的精度。我們假設(shè)這個結(jié)果不適用于非常深的網(wǎng)絡(luò)。為了驗證微調(diào)卷積層對于VGG16的重要性,我們使用Fast R-CNN微調(diào),但凍結(jié)十三個卷積層,以便只有全連接層學(xué)習(xí)。這種消融模擬單尺度SPPnet訓(xùn)練,將mAP從66.9%降低到61.4%(表5)。這個實驗驗證了我們的假設(shè):通過RoI池化層的訓(xùn)練對于非常深的網(wǎng)是重要的。 ? ??

表5. 限制哪些層對VGG16進(jìn)行微調(diào)產(chǎn)生的影響。微調(diào)fc6模擬單尺度SPPnet訓(xùn)練算法5。 SPPnet L是使用五個尺度,以顯著(7倍)的速度成本獲得的結(jié)果。

????????這是否意味著所有卷積層應(yīng)該微調(diào)?沒有。在較小的網(wǎng)絡(luò)(S和M)中,我們發(fā)現(xiàn)conv1(第一個卷積層)是通用的和任務(wù)獨立的(一個眾所周知的事實1)。允許conv1學(xué)習(xí)或不學(xué)習(xí),對mAP沒有很有意義的影響。對于VGG16,我們發(fā)現(xiàn)只需要更新conv3_1及以上(13個卷積層中的9個)的層。這種觀察是實用的:(1)從conv2_1更新使訓(xùn)練變慢1.3倍(12.5小時對比9.5小時)和(2)從conv1_1更新GPU內(nèi)存不夠用。當(dāng)從conv2_1學(xué)習(xí)時mAP僅為增加0.3個點(表5,最后一列)。 所有Fast R-CNN在本文中結(jié)果都使用VGG16微調(diào)層conv3_1及以上的層,所有實驗用模型S和M微調(diào)層conv2及以上的層。

5?設(shè)計評估

????????我們通過實驗來了解Fast RCNN與R-CNN和SPPnet的比較,以及評估設(shè)計決策。按照最佳實踐,我們在PASCAL VOC07數(shù)據(jù)集上進(jìn)行了這些實驗。

5.1?多任務(wù)訓(xùn)練有用嗎?

????????多任務(wù)訓(xùn)練是方便的,因為它避免管理順序訓(xùn)練任務(wù)的流水線。但它也有可能改善結(jié)果,因為任務(wù)通過共享的表示(ConvNet)18相互影響。多任務(wù)訓(xùn)練能提高Fast R-CNN中的目標(biāo)檢測精度嗎?

????????為了測試這個問題,我們訓(xùn)練僅使用公式中的分類損失(即設(shè)置)的基準(zhǔn)網(wǎng)絡(luò)。這些基線是表6中每組的第一列。請注意,這些模型沒有檢測框回歸。接下來(每組的第二列),是我們采用多任務(wù)損失(公式,)訓(xùn)練的網(wǎng)絡(luò),但是我們在測試時禁用檢測框回歸。這隔離了網(wǎng)絡(luò)的分類準(zhǔn)確性,并允許與基準(zhǔn)網(wǎng)絡(luò)的apple to apple的比較。

????????在所有三個網(wǎng)絡(luò)中,我們觀察到多任務(wù)訓(xùn)練相對于單獨的分類訓(xùn)練提高了純分類精度。改進(jìn)范圍從+0.8到+1.1 個mAP點,顯示了多任務(wù)學(xué)習(xí)的一致的積極效果。 ? ?????

????????最后,我們采用基線模型(僅使用分類損失進(jìn)行訓(xùn)練),加上檢測回歸層,并使用訓(xùn)練它們,同時保持所有其他網(wǎng)絡(luò)參數(shù)凍結(jié)。每組中的第三列顯示了這種逐級訓(xùn)練方案的結(jié)果:mAP相對于第一列改進(jìn),但逐級訓(xùn)練表現(xiàn)不如多任務(wù)訓(xùn)練(每組第四列)。 ? ?


表6. 多任務(wù)訓(xùn)練(每組第四列)改進(jìn)了分段訓(xùn)練(每組第三列)的mAP。

5.2?尺度不變性:暴力或精細(xì)?

????????我們比較兩個策略實現(xiàn)尺度不變物體檢測:暴力學(xué)習(xí)(單尺度)和圖像金字塔(多尺度)。在任一情況下,我們將圖像的尺度定義為其最短邊的長度。

????????所有單尺度實驗使用像素,對于一些圖像,可以小于600,因為我們保持橫縱比縮放圖像,并限制其最長邊為1000像素。選擇這些值使得VGG16在微調(diào)期間不至于GPU內(nèi)存不足。較小的模型占用顯存更少,所以可受益于較大的值。然而,每個模型的優(yōu)化不是我們的主要的關(guān)注點。我們注意到PASCAL圖像是384×473像素的,因此單尺度設(shè)置通常以1.6倍的倍數(shù)上采樣圖像。因此,RoI池化層的平均有效步進(jìn)為約10像素。

????????在多尺度設(shè)置中,我們使用5中指定的相同的五個尺度()以方便與SPPnet進(jìn)行比較。但是,我們以2000像素為上限,以避免GPU內(nèi)存不足。

????????表7顯示了當(dāng)使用一個或五個尺度進(jìn)行訓(xùn)練和測試時的模型S和M的結(jié)果。也許在5中最令人驚訝的結(jié)果是單尺度檢測幾乎與多尺度檢測一樣好。我們的研究結(jié)果能證明他們的結(jié)果:深度卷積網(wǎng)絡(luò)擅長直接學(xué)習(xí)尺度不變性。多尺度方法消耗大量的計算時間僅帶來了很小的mAP增加(表7)。在VGG16(模型L)的情況下,我們受限于實施細(xì)節(jié)僅能使用單個尺度。然而,它得到了66.9%的mAP,略高于R-CNN的66.0%19,盡管R-CNN在每個候選區(qū)域被縮放為規(guī)范大小,在意義上使用了“無限”尺度。

????????由于單尺度處理提供速度和精度之間的最佳折衷,特別是對于非常深的模型,本小節(jié)以外的所有實驗使用單尺度訓(xùn)練和測試,像素。

表7. 多尺度與單尺度。SPPnet ZF(類似于模型S)的結(jié)果來自5。 具有單尺度的較大網(wǎng)絡(luò)提供最佳的速度/精度平衡。(L在我們的實現(xiàn)中不能使用多尺度,因為GPU內(nèi)存限制。)

5.3?我們需要更多訓(xùn)練數(shù)據(jù)嗎?

????????當(dāng)提供更多的訓(xùn)練數(shù)據(jù)時,好的目標(biāo)檢測器應(yīng)該會得到改善。 Zhu等人20發(fā)現(xiàn)DPM11mAP在只有幾百到千個訓(xùn)練樣本的時候就飽和了。在這里我們增加VOC07 trainval訓(xùn)練集與VOC12 trainval訓(xùn)練集,大約增加到三倍的圖像,數(shù)量達(dá)到16.5k,以評估Fast R-CNN。擴大訓(xùn)練集提高了VOC07測試的mAP,從66.9%到70.0%(表1)。 當(dāng)對這個數(shù)據(jù)集進(jìn)行訓(xùn)練時,我們使用60k次小批量迭代而不是40k。

表1. VOC 2007測試檢測平均精度(%)。 所有方法都使用VGG16。 訓(xùn)練集:07:VOC07 trainval,07 \diff:07沒有“困難”的樣本,07 + 12:07和VOC12訓(xùn)練的聯(lián)合。 SPPnet結(jié)果由5的作者提供。

????????我們對VOC10和2012進(jìn)行類似的實驗,我們用VOC07 trainval,test和VOC12 trainval構(gòu)造了21.5k圖像的數(shù)據(jù)集。當(dāng)訓(xùn)練這個數(shù)據(jù)集時,我們使用100k次SGD迭代和每40k次迭代(而不是每30k次)降低學(xué)習(xí)率10倍。對于VOC10和2012,mAP分別從66.1%提高到68.8%和從65.7%提高到68.4%。

5.4?SVM分類是否優(yōu)于Softmax?

????????Fast R-CNN在微調(diào)期間使用softmax分類器學(xué)習(xí),而不是如在R-CNN和SPPnet中訓(xùn)練線性SVM。為了理解這種選擇的影響,我們在Fast R-CNN中實施了具有難負(fù)采樣重訓(xùn)練的SVM訓(xùn)練。我們使用與R-CNN中相同的訓(xùn)練算法和超參數(shù)。 ? ?

表8. 用Softmax的Fast R-CNN對比用SVM的Fast RCNN(VOC07 mAP)。

????????對于所有三個網(wǎng)絡(luò),Softmax略優(yōu)于SVM,mAP分別提高了0.1和0.8個點。這種效應(yīng)很小,但是它表明與先前的多級訓(xùn)練方法相比,“一次性”微調(diào)是足夠的。我們注意到,Softmax,不像SVM那樣,在分類RoI時引入類之間的競爭。

5.5?更多的候選區(qū)域更好嗎?

????????存在(廣義地)兩種類型的目標(biāo)檢測器:使用候選區(qū)域的稀疏集合(例如,選擇性搜索21)和使用密集集合(例如DPM11)。分類稀疏提議是級聯(lián)的一種類型22,其中提議機制首先拒絕大量候選者,讓分類器來評估留下的小集合。當(dāng)應(yīng)用于DPM檢測時,該級聯(lián)提高了檢測精度21。我們發(fā)現(xiàn)提案分類器級聯(lián)也提高了Fast R-CNN的精度。

????????使用選擇性搜索的質(zhì)量模式,我們掃描每個圖像1k到10k個候選框,每次重新訓(xùn)練和重新測試模型M.如果候選框純粹扮演計算的角色,增加每個圖像的候選框數(shù)量不應(yīng)該損害mAP。

圖3. 各種候選區(qū)域方案的VOC07測試mAP和AR。

????????我們發(fā)現(xiàn)mAP上升,然后隨著候選區(qū)域計數(shù)增加而略微下降(圖3,實線藍(lán)線)。這個實驗表明,用更多的候選區(qū)域沒有幫助,甚至稍微有點傷害準(zhǔn)確性。

????????如果不實際運行實驗,這個結(jié)果很難預(yù)測。用于測量候選區(qū)域質(zhì)量的最先進(jìn)的技術(shù)是平均召回率(AR)23。當(dāng)對每個圖像使用固定數(shù)量的候選區(qū)域時,AR與使用R-CNN的幾種候選區(qū)域方法良好地相關(guān)。圖3示出了AR(實線紅線)與mAP不相關(guān),因為每個圖像的候選區(qū)域數(shù)量是變化的。AR必須小心使用,由于更多的候選區(qū)域更高的AR并不意味著mAP會增加。幸運的是,使用模型M的訓(xùn)練和測試需要不到2.5小時。因此,F(xiàn)ast R-CNN能夠高效地,直接地評估目標(biāo)候選區(qū)域mAP,這優(yōu)于代理度量。

????????我們還調(diào)查Fast R-CNN當(dāng)使用密集生成框(在縮放,位置和寬高比上),大約45k個框/圖像。這個密集集足夠豐富,當(dāng)每個選擇性搜索框被其最近(IoU)密集框替換時,mAP只降低1個點(到57.7%,圖3,藍(lán)色三角形)。

????????密集框的統(tǒng)計數(shù)據(jù)與選擇性搜索框的統(tǒng)計數(shù)據(jù)不同。從2k個選擇性搜索框開始,我們在添加的隨機樣本密集框時測試mAP。對于每個實驗,我們重新訓(xùn)練和重新測試模型M。當(dāng)添加這些密集框時,mAP比添加更多選擇性搜索框時下降得更強,最終達(dá)到53.0%。

????????我們還訓(xùn)練和測試Fast R-CNN只使用密集框(45k/圖像)。此設(shè)置的mAP為52.9%(藍(lán)色菱形)。最后,我們檢查是否需要使用難樣本重訓(xùn)練的SVM來處理密集框分布。 SVM做得更糟:49.3%(藍(lán)色圓圈)。

5.6?MS COCO初步結(jié)果

????????我們將fast R-CNN(使用VGG16)應(yīng)用于MS COCO數(shù)據(jù)集24,以建立初步基線。我們對80k圖像訓(xùn)練集進(jìn)行了240k次迭代訓(xùn)練,并使用評估服務(wù)器對“test-dev”集進(jìn)行評估。 PASCAL標(biāo)準(zhǔn)下的mAP為35.9%;。新的COCO標(biāo)準(zhǔn)下的AP(也平均)為19.7%。

6?結(jié)論

????????本文提出Fast R-CNN,一個對R-CNN和SPPnet干凈,快速的更新。 除了報告目前的檢測結(jié)果之外,我們還提供了詳細(xì)的實驗,希望提供新的見解。 特別值得注意的是,稀疏目標(biāo)候選區(qū)域似乎提高了檢測器的質(zhì)量。 過去探索這個問題過于昂貴(在時間上),但Fast R-CNN使其變得可能。當(dāng)然,可能存在允許密集盒執(zhí)行以及稀疏候選框的尚未發(fā)現(xiàn)的技術(shù)。這樣的方法如果被開發(fā),可以幫助進(jìn)一步加速目標(biāo)檢測。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容