fast-rcnn論文翻譯
由於本人英語能力有限,翻譯得不恰當的地方請各位指教。謝謝!
摘要
本文提出了一種快速的基於區域的卷積網路方法(fast R-CNN)用於目標檢測。Fast R-CNN建立在以前使用的深卷積網路有效地分類目標的成果上。相比於之前的成果,Fast R-CNN採用了多項創新提高訓練和測試速度來提高檢測精度。Fast R-CNN訓練非常深的VGG16網路比R-CNN快9倍,測試時間快213倍,並在PASCAL VOC上得到更高的精度。與SPPnet相比,fast R-CNN訓練VGG16網路比他快3倍,測試速度快10倍,並且更準確。
Introduction
最近,深度卷積網路[14,16]已經顯著提高了影象分類 [14]和目標檢測[9,19]的準確性。與影象分類相比,目標檢測是一個更具挑戰性的任務,需要更復雜的方法來解決。由於這種複雜性,當前的方法(例如,[9,11,19,25])在多層網路中訓練模型,這些模型是很慢和精度不高的。
複雜性的產生是因為檢測需要目標的精確定位,這就導致兩個主要的難點。首先,必須處理大量候選目標位置(通常稱為“建議”)。 第二,這些候選框僅提供粗略定位,其必須被精細化以實現精確定位。 這些問題的解決方案經常會影響速度,準確性或簡單性。
在本文中,我們簡化了最先進的基於卷積網路的目標檢測器的訓練過程[9,11]。我們提出一個單階段訓練演算法,共同學習分類候選框和改進他們的空間位置。
所得到的方法用來訓練非常深的檢測網路(例如VGG16) 比R-CNN快9倍,比SPPnet快3倍。在執行時,檢測網路在PASCAL VOC 2012資料集上實現最高準確度,其中mAP為66%(R-CNN為62%),每張影象處理時間為0.3秒,不包括候選框的生成。
1.1 R-CNN and SPPnet
基於區域的卷積網路方法(RCNN)通過使用深度卷積網路來分類目標候選框,獲得了很高的目標檢測精度。然而,R-CNN具有顯著的缺點:
1.訓練的模型是多級管道(pipeline)。R-CNN首先使用目標候選框對卷積神經網路進行微調。然後,它將卷積神經網路得到的特徵送入SVM。 這些SVM作為目標檢測器,替代通過微調學習的softmax分類器。 在第三個訓練階段,學習bbox(邊界)迴歸。
2.訓練在時間和空間上是很大代價的。對於SVM和bbox迴歸訓練,從每個影象中的每個目標候選框提取特徵,並寫入磁碟。對於非常深的網路,如VGG16,這個過程需要2.5 GPU-天在VOC07訓練集上的5k影象。這些特徵需要數百GB的儲存空間。
3.目標檢測速度很慢。在測試時,從每個測試影象中的每個目標候選框提取特徵。用VGG16網路檢測目標需要47s /影象(在GPU上)。
R-CNN很慢是因為它為每個目標候選框進行卷積神經網路正向傳遞,而不共享計算。SPP網路[11]通過共享計算加速R-CNN。SPP網路計算整個輸入影象的卷積特徵對映,然後使用從共享特徵對映提取的特徵向量來對每個候選框(object proposals)進行分類。通過將候選框內的特徵圖的一部分最大化為固定大小的輸出(例如,6X6)來提取針對候選框的特徵。多個輸出被池化,然後連線成空間金字塔池[15]。SPPnet在測試時將R-CNN加速10到100倍。由於更快的候選框特徵提取訓練時間也減少3倍。
SPP網路也有顯著的缺點。像R-CNN一樣訓練網路是一個多階段的涉及提取特徵的網路,和對網路進行微調有損失,訓練SVM分類器,最後擬合邊界迴歸(bbox)。特徵也寫入磁碟。但與R-CNN不同,在[11]中提出的微調演算法不能更新在空間金字塔池之前的卷積層。不出所料,這種限制(固定的卷積層)限制了深度網路的精度。
1.2 Contributions
我們提出一種新的訓練演算法,修正R-CNN和SPPnet的缺點,同時提高其速度和準確性。我們稱之為fast R-CNN,因為它能比較快地進行訓練和測試。Fast RCNN方法有幾個優點:
1.比R-CNN和SPP網路具有更高精度(mAP)的目標檢測;
2.訓練是使用多工損失(loss)的單階段訓練;
3.訓練可以更新所有網路層引數;
4.特徵快取不需要磁碟空間
Fast R-CNN使用Python和C++語言編寫,在
2 fast R-CNN 結構和訓練
圖1給出了fast R-CNN架構。Fast R-CNN網路將整個影象和一組候選框作為輸入。網路首先使用幾個卷積層(conv)和最大池層來處理整個影象,以產生轉換特徵圖。然後,對於每個候選框,感興趣區域(RoI)池化層從特徵圖中提取固定長度的特徵向量。每個特徵向量被送到完全連線(fc)層的中,其最終分支成兩個同級輸出層 :對K個物件類產生softmax概率估計加上全部捕獲的“背景”類的一層以及為K個物件類中的每一個類別輸出四個實數值的另一層。每組4個值編碼重新修正K個類中的一個的精確邊界位置。
圖1.快速R-CNN架構。輸入影象和多個感興趣區域(RoI)被輸入到完全卷積網路中。每個RoI被合併到固定大小的特徵圖中,然後通過完全連線的層(FC)對映到特徵向量。網路對於每個RoI具有兩個輸出向量:softmax概率和每類邊界迴歸偏移。該架構是端到端訓練的,帶有多工丟失。
2.1 ROI pooling layer
RoI池化層使用最大池化將任何有效的感興趣區域內的特徵轉換成具有H × W(例如,7×7)的固定空間範圍的小特徵地圖,其中H和W是層超引數,獨立於任何特定的RoI層。在本文中,RoI是一個矩形視窗,成為一個特徵對映。 每個RoI由指定其左上角(r; c)及其高度和寬度(h; w)的四元組(r; c; h; w)定義。
RoI最大池化工作通過除以h × w RoI視窗變成H × W網格,子視窗大小約為h/H ×w/ W,然後將每個子視窗中的最大值合併到相應的輸出網格單元中。池化操作獨立應用於每個特徵圖通道,比如在標準最大池中。RoI層只是SPPnets [11]中使用的空間金字塔池層的特殊情況,其中只有一個金字塔層。 我們使用[11]中給出的池化子視窗計算方法。
2.2 從預訓練網路得到的初始化(Initializing from pretrained
networks)
我們實驗了三個預訓練的ImageNet [4]網路,每個網路有五個最大池層和五到十三個卷積層(網路詳細資訊,請參見第4.1節)。當預訓練網路初始化fast R-CNN網路時,其經歷三個變換。
首先,最後的最大池化層由RoI池層代替,其通過將H和W設定為與網路的第一完全連線層相容來配置(例如,對於VGG16,H = W = 7)。
其次,網路的最後完全連線層和softmax(其被訓練用於1000類ImageNet分類)被替換為前面描述的兩個同級層(完全連線的層和softmax在K + 1類別和類別特定的邊界迴歸)。
第三,網路被修改為採用兩個資料輸入:影象的列表和這些影象中的RoI的列表。
2.3 微調
用反向傳播訓練所有網路權重是fast R-CNN的重要能力。首先,讓我們闡明為什麼SPPnet無法更新低於空間金字塔池層的權重。
根本原因是當每個訓練樣本(即RoI)來自不同的影象時,通過SPP層的反向傳播是非常低效的,這正是如何訓練R-CNN和SPPnet網路的方法。低效的部分是因為每個RoI可能具有非常大的接受場,通常跨越整個輸入影象。由於正向傳遞必須處理整個接受場,訓練輸入是大的(通常是整個影象)。
我們提出了一種更有效的訓練方法,利用訓練期間的特徵共享。在fast RCNN網路訓練中,隨機梯度下降(SGD)minibatches被分級取樣,首先通過取樣N個影象,然後通過從每個影象取樣R/N個 RoIs。關鍵的是,來自同一影象的RoI在向前和向後傳播中共享計算和儲存器。減小N,減少了minibatches計算。例如,當N = 2和R = 128時,得到的訓練方案比從128幅不同的圖取樣一個RoI快64倍。
這個策略的一個關注是它可能導致慢訓練收斂,因為來自相同影象的RoI 是相關的。這個問題似乎不是一個實際問題,我們使用比R-CNN更少的SGD迭代,獲得N = 2和R = 128的良好結果。
除了分層取樣,fast R-CNN使用一個精細的訓練過程,一個微調階段聯合優化softmax分類器和邊界框迴歸,而不是在三個獨立的階段訓練softmax分類器,SVM和迴歸因子[9 ,11]。 下面描述該過程的元件(loss,小批量取樣策略,通過RoI池層的反向傳播和SGD超引數)。
多工損失。 Fast R-CNN網路具有兩個同級輸出層。 第一個輸出在K + 1個類別上的離散概率分佈(每個RoI),p =(p0,...pK)。 通常,通過完全連線層的K + 1個輸出上的softmax來計算p。第二個輸出層輸出邊界框迴歸偏移,tk =(tkx,tky,tkw,tkh),對於由k索引的K個物件類中的每一個。 我們使用[9]中給出的tk的引數化,其中tk指定相對於候選框的尺度不變轉換和對數空間高度/寬度移位。
每個訓練的RoI用ground truth類u和ground truth邊界框迴歸目標v標記。我們對每個標記的RoI使用多工損失L以聯合訓練分類和邊界框迴歸:
公式中, 是真正的u類的損失。
第二個損失Lloc是在u,v =(vx; vy; vw; vh)和預測元組tu =(tux; tuy; tuw; tuh)的真正邊界框迴歸目標的元組 ,再次分類為類u。 Iverson括號指示函式[u≥1]當u≥1的時候為值1,否則為0。按照慣例,catch-all背景類標記為u = 0。對於背景RoI,沒有ground truth邊界框的概念,因此Lloc被忽略。對於邊界框迴歸,我們使用損失
其中:
smooth是魯棒的L1損失,對於異常值比在R-CNN和SPPnet中使用的L2損失更不敏感。當迴歸目標無界時,具有L2損失的訓練可能需要仔細調整學習速率,以防止爆炸梯度。等式 3消除了這種靈敏度。
公式1中的超引數λ控制兩個任務損失之間的平衡。我們將groundtruth迴歸目標vi歸一化為具有零均值和單位方差。所有實驗都使用λ = 1。
我們注意到[6]使用相關損失來訓練一個診斷候選框網路。 與我們的方法不同的是[6]倡導一個分離本地化和分類的雙網路系統。 OverFeat [19],R-CNN [9]和SPPnet [11]也訓練分類器和邊界定位器,但是這些方法使用逐級訓練,這對於fast RCNN來說是次優的。
小批量取樣。 在微調期間,每個SGD小塊由N = 2個影象構成,均勻地隨機選擇(如通常的做法,我們實際上迭代資料集的排列)。 我們使用大小為R = 128的小塊,從每個影象取樣64個RoI。 如在[9]中,我們從候選框中獲取25%的RoI,這些候選框具有至少為0.5的groundtruth邊界框與交集的聯合(IoU)重疊。 這些RoI包括用前景物件類標記的示例,即u≥1。 剩餘的RoI從候選框中取樣,該候選框具有在區間[0.1; 0.5)上最大的IoU,[11]。 這些是背景示例,並用u = 0標記。0.1的下限閾值似乎充當硬示例挖掘的啟發式演算法[8](The lower threshold of 0.1 appears to act as a heuristic for hard example mining)。 在訓練期間,影象以概率0.5水平翻轉。不使用其他資料擴充。
通過RoI池層的反向傳播。 反向傳播通過RoI匯聚層。為了清楚起見,我們假設每個小批量(mini-batch)(N = 1)只有一個影象,雖然N> 1的擴充套件是直接的,因為前向傳播獨立地處理所有影象。
令xi∈ R是到RoI池化層的第i個啟用輸入,並且令yrj是來自第r個RoI的層的第j個輸出。RoI池化層計算yrj = xi*(r; j),其中i*(r; j)= argmaxi’∈R(r; j)xi’。 R(r; j)是輸出單元yrj 最大池化的子視窗中的輸入的索引集合。單個xi可以被分配給幾個不同的輸出yrj。
RoI池化層後向傳播函式通過遵循argmaxs witches來計算關於每個輸入變數xi的損失函式的偏導數:
換句話說,對於每個小批量(mini-batch)RoI r和對於每個池化輸出單元yrj,如果i是yrj通過最大池化選擇的argmax(一個函式),則將這個偏導數αL/αyrj積累下來。在反向傳播中,偏導數αL/αyrj已經由RoI池層頂部的層的向後函式(backwards function)計算。
SGD超引數。 用於softmax分類和邊界框迴歸的完全連線層分別從具有方差0.01和0.001的零均值高斯分佈中初始化。偏差初始化為0.所有層都使用每層的學習率為1,權重為2,偏差為0,全域性學習率為0.001。 當對VOC07或VOC12 trainval訓練時,我們執行SGD進行30k次小批量迭代,然後將學習率降低到0.0001,再訓練10k次迭代。當我們訓練更大的資料集,我們執行SGD更多的迭代,如下所述。 使用0.9的動量和0.0005的引數衰減(基於權重和偏差)。
2.4 尺度不變性
我們探索兩種實現尺度不變物件檢測的方法:(1)通過“強力”學習和(2)通過使用影象金字塔。 這些策略遵循[11]中的兩種方法。 在強力方法中,在訓練和測試期間以預定義的畫素大小處理每個影象。 網路必須直接從訓練資料學習尺度不變性目標檢測。
相反,多尺度方法通過影象金字塔向網路提供近似尺度不變性。 在測試時,影象金字塔用於大致縮放 - 規範化每個候選框。 在多尺度訓練期間,我們在每次影象取樣時隨機取樣金字塔尺度,遵循[11],作為資料增加的形式。由於GPU記憶體限制,我們只對較小的網路進行多尺度訓練。
3,fast R-CNN 檢測
一旦fast R-CNN網路被微調完畢,檢測相當於執行前向傳遞(假設候選框是預先計算的)。網路將影象(或影象金字塔,編碼為影象列表)和待計算概率的R個候選框的列表作為輸入。在測試的時候,R通常在2000左右,雖然我們將考慮將它變大(≈45k)的情況。當使用影象金字塔時,每個RoI被分配給標尺,使得縮放的RoI最接近區域[11]中的2242個畫素。
對於每個測試的RoI r,正向傳遞輸出類別後驗概率分佈p和相對於r的預測的邊界框偏移集合(K個類別中的每一個獲得其自己的精細邊界框預測)。我們使用估計的概率Pr(class= k|r)= pk為每個物件類別k分配r的檢測置信度。然後,我們使用R-CNN演算法的設定和對每個類別獨立執行非最大抑制[9]。
3.1 使用截斷的SVD來進行更快的檢測
對於整體影象分類,與卷積層相比,計算完全連線的層花費的時間較小。相反,為了檢測,要處理的RoI的數量很大,並且接近一半的正向傳遞時間用於計算完全連線的層(參見圖2)。大的完全連線的層容易通過用截短的SVD壓縮來加速[5,23]。
在這種技術中,u×v權重矩陣因子W近似被分解為
在這種因式分解中,U是一個u×t的矩陣,包括W的前t個左奇異向量,是t×t對角矩陣,其包含W的前t個奇異值,並且V是v×t矩陣,包括W的前t個右奇異向量。截斷SVD將引數計數從uv減少到t(u + v)個,如果t遠小於min(u,v),則SVD可能是重要的。 為了壓縮網路,對應於W的單個完全連線的層由兩個完全連線的層替代,在它們之間沒有非線性。這些層中的第一層使用權重矩陣VT(並且沒有偏差),並且第二層使用U(其中原始偏差與W相關聯)。 當RoI的數量大時,這種簡單的壓縮方法給出良好的加速。
4 主要結果
三個主要結果支援本文的貢獻:
1. VOC07,2010和2012年的最高的mAP;
2. 快速訓練和測試相比於R-CNN,SPPnet
3. 在VGG16中微調轉換層改善了mAP。
4.1 實驗配置
我們的實驗使用了三個經過預先訓練的ImageNet網路模型,這些模型可以線上獲得。第一個是來自R-CNN [9]的CaffeNet(實質上是AlexNet [14])。 我們交替地將這個CaffeNet稱為模型S,是一個小模型。第二網路是來自[3]的VGG_CNN_M_1024,其具有與S相同的深度,但是更寬。 我們把這個網路模型稱為“中等模型”,稱為模型“M”。最終的網路是來自[20]的非常深的VGG16模型。由於這個模型是最大的,我們稱之為模型L.在本節中,所有實驗都使用單級訓練和測試(s = 600;詳見第5.2節)。
表1. VOC 2007測試檢測平均精度(%)。 所有方法都使用VGG16。 訓練集鍵:07:VOC07 trainval,07 \diff:07沒有“困難”的例子,07 + 12:07和VOC12訓練的聯合。 ySPPnet結果由[11]的作者準備。
表2. VOC 2010測試檢測平均精度(%)。 BabyLearning使用基於[17]的網路。 所有其他方法使用VGG16。訓練集鍵:12:VOC12 trainval,Prop:專有資料集,12 + seg:12具有分段註釋,07 ++ 12:VOC07 trainval,VOC07測試和VOC12 trainval的聯合。
表3. VOC 2012測試檢測平均精度(%)。 BabyLearning和NUS NIN c2000使用基於[17]的網路。 所有其他方法使用VGG16。培訓設定鍵:見表2,UNK:未知。
4.2 VOC 2010和2012資料集結果
在這些資料集上,我們從公共排行榜(表2,表3)中比較Fast R-CNN(簡稱FRCN)和comp4(外部資料)軌道上的頂層方法.對於NUS NIN c2000和BabyLearning方法,目前沒有相關的出版物,我們無法找到所使用的ConvNet架構的確切資訊;它們是網路到網路設計的變體[17]。所有其他方法從相同的預訓練VGG16網路初始化。
Fast R-CNN在VOC12上獲得最高結果,mAP為65.7%(和具有額外資料的68.4%)。它也比其他方法快兩個數量級,這些方法都基於“慢”R-CNN網路。在VOC10上,SegDeepM [25]獲得了比fast R-CNN更高的mAP(67.2%對比66.1%)。SegDeepM在VOC12 trainval訓練集上訓練並加分段註釋,它被設計為通過使用馬爾可夫隨機場推理R-CNN檢測和來自O2P [1]語義分割方法的分割來提高R-CNN精度。Fast R-CNN可以被替換為SegDeepM而不是R-CNN,這可以導致更好的結果。當使用放大的07 ++ 12訓練集(見表2標題)時,Fast R-CNN的mAP增加到68.8%,超過SegDeepM。
4.3 VOC 2007資料集上的結果
在VOC07資料集上,我們比較fast R-CNN與R-CNN和SPPnet的mAP。 所有方法從相同的預訓練VGG16網路開始,並使用邊界框迴歸。 VGG16 SPPnet結果由[11]的作者計算。SPPnet在訓練和測試期間使用五個尺度(scales)。Fast R-CNN對SPPnet的改進說明,即使fast R-CNN使用單規模訓練和測試,微調卷積層在mAP中提供了大的改進(從63.1%到66.9%)。R-CNN的mAP為66.0%。 作為次要點,SPPnet在PASCAL中沒有被標記為“困難”的示例進行訓練。 除去這些實施例將fast R-CNN mAP改進為68.1%。 所有其他實驗使用“困難”(difficult)的例子。
4.4 訓練和測試時間
很快的培訓和測試時間是我們的第二個主要成果。表4比較了fast RCNN,R-CNN和SPPnet之間的訓練時間(小時),測試速率(每秒影象數)和VOC07上的mAP。對於VGG16,fast R-CNN處理影象比沒有截斷SVD的R-CNN快146倍和有截斷SVD的R-CNN快213倍。訓練時間減少9倍,從84小時減少到9.5。與SPPnet相比,fast RCNN訓練VGG16網路比沒有截斷SVD的SPPnet快2.7倍(9.5對25.5小時)和測試時間快7倍,比有截斷SVD的SPPnet快10倍。 Fast R-CNN還消除了數百GB的磁碟儲存,因為它不快取特徵。
表4.Fast RCNN,R-CNN和SPPnet中相同模型之間的執行時間比較。Fast R-CNN使用單尺度(scale)模式。SPPnet使用[11]中指定的五個尺度。由[11]的作者
提供。在Nvidia K40 GPU上測量時間。
截斷SVD。截斷的SVD可以將檢測時間減少30%以上,同時在mAP中只有很小(0.3個百分點)的下降,並且無需在模型壓縮後執行額外的微調。圖2示出了如何使用來自VGG16的fc6層中的25088×4096矩陣的頂部1024個奇異值和來自fc7層的4096×4096矩陣的頂部256個奇異值減少執行時間而在mAP中幾乎沒有損失。如果在壓縮之後再次微調,則可以在mAP中具有更小的下降的情況下進一步加速。
圖2.截斷SVD之前和之後VGG16的時間分佈。在SVD之前,完全連線的層fc6和fc7需要45%的時間。
4.5 微調哪些層
對於在SPPnet論文[11]中考慮的不太深的網路,僅微調完全連線層似乎足以獲得良好的精度。我們假設這個結果不適用於非常深的網路。為了驗證微調卷積層對於VGG16是重要的,我們使用fast R-CNN微調,但凍結十三個卷積層,以便只有完全連線的層學習。這種消融模擬單尺度SPPnet訓練,將mAP從66.9%降低到61.4%(表5)。這個實驗驗證了我們的假設:通過RoI池層的訓練對於非常深的網是重要的。
表5.限制哪些層對VGG16進行微調產生的影響。微調 ≥fc6模擬SPPnet訓練演算法[11],但使用單個尺度。 使用五個尺度,以顯著(7倍)速度成本獲得SPPnetL
結果。
這是否意味著所有卷積層應該微調?沒有。在較小的網路(S和M)中,我們發現conv1(第一個卷積層)是通用的和任務獨立的(一個眾所周知的事實[14])。允許conv1學習或不學習,對mAP沒有很有意義的影響。對於VGG16,我們發現只需要更新conv3_1及以上(13個卷積層中的9個)的層。這種觀察是務實的:(1)從conv2_1更新使訓練變慢1.3倍(12.5 vs. 9.5小時);和(2)從conv1_1更新超過GPU記憶體。當從conv2_1學習時mAP的差異僅為+0.3點(表5,最後一列)。 所有Fast R-CNN在本文中結果都使用VGG16微調層conv3_1及以上; 所有實驗用模型S和M微調層conv2及以上。
5 設計評估
我們通過實驗來了解fast RCNN與R-CNN和SPPnet的比較,以及評估設計決策。按照最佳實踐,我們在PASCAL VOC07資料集上進行了這些實驗。
5.1 多工訓練有用嗎?
多工訓練是方便的,因為它避免管理順序訓練的任務的流水線。但它也有可能改善結果,因為任務通過共享的表示(ConvNet)[2]相互影響。多工訓練能提高fast R-CNN中的目標檢測精度嗎?
為了測試這個問題,我們訓練僅使用分類損失Lcls的基準網路等式1(即設定λ= 0)。這些基準線是為表6中每組的第一列中的模型S,M和L列印的。請注意,這些模型沒有邊界框迴歸。接下來(每組的第二列),我們採用用多工損失(等式1,λ= 1)訓練的網路,但是我們在測試時禁用邊界框迴歸。這隔離了網路的分類準確性,並允許與基準網路的蘋果對蘋果(apple to apple)的比較。
在所有三個網路中,我們觀察到多工訓練相對於單獨的分類訓練提高了純分類精度。改進範圍從+0.8到+1.1 個mAP點,顯示了多工學習的一致的積極效果。
最後,我們採用基準線模型(僅使用分類損失進行訓練),粘連邊界框迴歸層,並使用Lloc訓練它們,同時保持所有其他網路引數凍結。每組中的第三列顯示了這種逐級訓練方案的結果:mAP相對於第一列改進,但逐級訓練表現不如多工訓練(每組第四列)。
表6.多工訓練(每組第四列)改進了分段訓練(每組第三列)的mAP。
5.2 尺度不變性:暴力或精細?
我們比較兩個策略實現尺度不變物體檢測:暴力學習(單尺度)和影象金字塔(多尺度)。在任一情況下,我們將影象的尺度定義為其最短邊的長度。
所有單尺度實驗使用s = 600畫素;對於一些影象,s可以小於600,因為我們在1000畫素處覆蓋最長影象側並且保持影象的縱橫比。這些值被選擇,使得VGG16在微調期間適合GPU儲存器。較小的模型不是記憶體邊界,可以受益於較大的s值;然而,每個模型的優化不是我們的主要關注。我們注意到PASCAL影象是384×473個畫素,因此單尺度設定通常以1.6倍的倍數上取樣影象。因此,RoI池化層的平均有效步幅為≈10畫素。
在多尺度設定中,我們使用[11](s ∈{ 480; 576; 688; 864; 1200})中指定的相同的五個刻度來方便與SPPnet進行比較。但是,我們以2000畫素為上限,以避免超過GPU記憶體。
表7顯示了當使用一個或五個尺度進行訓練和測試時的模型S和M.也許在[11]中最令人驚訝的結果是單尺度檢測幾乎與多尺度檢測一樣好。我們的研究結果能證明他們的結果:深度ConvNets是擅長直接學習尺度不變性。多尺度方法在計算時間中以大的成本僅提供mAP的小的增加(表7)。在VGG16(模型L)的情況下,我們僅限於通過實施細節使用單個尺度。然而,它得到了66.9%的mAP,略高於R-CNN的66.0%[10],儘管R-CNN在每個候選區域被扭曲為規範大小的意義上使用“無限”尺度。
由於單尺度處理提供速度和精度之間的最佳折衷,特別是對於非常深的模型,本子節以外的所有實驗使用單尺度訓練和測試,s = 600畫素。
表7.多尺度與單尺度。 SPPnet ZF(類似於模型S)的結果來自[11]。 具有單規模的較大網路提供最佳的速度/精度權衡。(L在我們的實現中不能使用多尺度,因為GPU記憶體限制。)
5.3 我們需要更過訓練資料嗎?
當提供更多的訓練資料時,良好的目標檢測器應該改善。 Zhu et al.[24]發現DPM [8] mAP飽和後只有幾百到千個訓練示例。在這裡我們增加VOC07 trainval訓練集與VOC12 trainval訓練集,大約增加到三倍的影象數量到16.5k,以評估fast R-CNN。擴大訓練集提高了VOC07測試的mAP從66.9%到70.0%(表1)。 當對這個資料集進行訓練時,我們使用60k個小批量迭代而不是40k。
我們對VOC10和2012進行類似的實驗,我們從VOC07 trainval,訓練和VOC12 trainval的聯合構造了21.5k影象的資料集。當訓練這個資料集,我們使用100k次SGD迭代和每40k次迭代(而不是每30k次)降低學習率0.1倍。對於VOC10和2012,mAP分別從66.1%提高到68.8%和從65.7%提高到68.4%。
5.4 SVM分類是否優於softmax?
Fast R-CNN在微調期間使用softmax分類器學習,而不是如在R-CNN和SPPnet中進行的訓練一個對靜止線性SVMs。為了理解這種選擇的影響,我們在Fast R-CNN中實施了具有硬性負取樣的事後SVM訓練。我們使用與R-CNN中相同的訓練演算法和超引數。
表8.具有softmax的fast R-CNN和有對SVM的fast RCNN(VOC07mAP)。
表8示出了對於所有三個網路,+ 0.1至+0.8個mAP點的softmax略優於SVM。這種效應很小,但是它表明與先前的多級訓練方法相比,“一次性”微調是足夠的。我們注意到,softmax,不像one-vs-rest的SVMs,在評分RoI時引入類之間的競爭。
5.5 更多的候選區域更好嗎?
存在(廣義地)兩種型別的目標檢測器:使用候選區域的稀疏集合(例如,選擇性搜尋[21])和使用密集集合(例如DPM [8])的那些。分類稀疏提議是級聯的一種型別[22],其中提議機制首先拒絕大量候選者,留下具有小集合的分類器來評估。當應用於DPM檢測時,該級聯提高了檢測精度[21]。我們發現提案分類器級聯也提高了fast R-CNN的精度。
使用選擇性搜尋的質量模式,我們掃描每個影象1k到10k的候選框,每次重新訓練和重新測試模型M.如果候選框純粹是計算的角色,增加每個影象的候選框數量不應該損害mAP。
圖3.各種候選區域方案的VOC07測試mAP和AR。
我們發現mAP上升,然後隨著候選區域計數增加而略微下降(圖3,實線藍線)。這個實驗表明,用更多的候選區域來劃分深分類器沒有幫助,甚至稍微有點傷害準確性。
如果不實際執行實驗,這個結果很難預測。用於測量候選區域質量的最先進的技術是平均召回率(AR)[12]。當對每個影象使用固定數量的候選區域時,AR與使用R-CNN的幾種候選區域方法良好地相關。圖3示出了AR(實線紅線)與mAP不相關,因為每個影象的候選區域數量是變化的。AR必須小心使用;由於更多的候選區域更高的AR並不意味著mAP會增加。幸運的是,使用模型M的訓練和測試需要不到2.5小時。因此,fast R-CNN能夠高效地,直接地評估目標候選區域mAP,這優於代理度量。
我們還調查fast R-CNN當使用密集生成的盒子(超過規模,位置和寬高比),以大約45k盒/影象的速率。這個密集集足夠豐富,當每個選擇性搜尋框被其最近(在IoU)密集框中替換時,mAP只丟棄1個點(到57.7%,圖3,藍色三角形)。
密集框的統計資料與選擇性搜尋框的統計資料不同。從2k個選擇性搜尋框開始,我們在新增1000×{2; 4。 6; 8; 10; 32; 45}的隨機樣本時測試mAP密集盒。對於每個實驗,我們重新訓練和重新測試模型M.當新增這些密集框時,mAP比新增更多選擇性搜尋框時下降得更強,最終達到53.0%。
我們還訓練和測試fast R-CNN只使用密集盒(45k /影象)。此設定的mAP為52.9%(藍色菱形)。最後,我們檢查是否需要使用硬消極挖掘的SVM來處理密集盒分佈。 SVM做得更糟:49.3%(藍色圓圈)。
5.6 初步MS COCO結果
我們將fast R-CNN(使用VGG16)應用於MS COCO資料集[18],以建立初步基線。我們對80k影象訓練集進行了240k次迭代訓練,並使用評估伺服器對“test-dev”集進行評估。 PASCAL型mAP為35.9%; 新的COCO-style的AP,其平均超過IoU閾值,為19.7%。
6.結論
本文提出Fast R-CNN,一個乾淨,快速的更新R-CNN和SPPnet。 除了報告現狀檢測結果之外,我們還提供了詳細的實驗,希望提供新的見解。 特別值得注意的是,稀疏物體候選區域似乎提高了檢測器的質量。 這個問題過於昂貴(在時間上)過去探索,但使用Fast R-CNN變得實用。當然,可能存在允許密集盒執行以及稀疏候選框的尚未發現的技術。這樣的方法,如果開發,可以幫助進一步加速目標檢測。