Fast-Rcnn論文翻譯


 

摘要

  這篇論文提出一種用於目標檢測的Fast R-CNN算法。Fast R-CNN建立在之前的研究工作,使用深度卷積網絡來高效的分類目標提案。相比於之前的工作,Fast R-CNN采用了一些創新來提高訓練和測試的速度,同時也提高了檢測的准確率。Fast R-CNN訓練深度VGG16網絡比訓練R-CNN快9倍,在測試時快213倍,並且在PASCAL VOC 2012數據集上獲得了一個更高的平均平均准確率(mAP)。和SPPnet相比,Fast R-CNN訓練VGG16比它快3倍,測試時快10倍,並且更加准確,Fast R-CNN采用python和C++(Cafe)實現,開源代碼

1 引言

  目前,深度卷積網絡已經明顯的提高了圖像分類和目標檢測的准確率。相比於圖像分類,目標檢測則是一項更具挑戰性的任務,它需要更加復雜的方法來解決。由於這種復雜性,目前多級管道中所獲得的模型速度緩慢而且粗糙。
  復雜性的產生是由於檢測需要對目標進行精確的定位,這就產生了兩個主要的挑戰。第一,必須處理大量的候選目標位置(通常稱為“提案”);第二,這些候選目標位置僅提供一個粗略的定位,這就必須對其進行改進以提供更加精確的定位。解決這些問題往往會影響速度、准確性和簡單性。
  在本文中,我們簡化了最先進的基於卷積神經網絡的目標檢測器的訓練過程,我們提出了一種單級的訓練算法,這種算法同時學習分類目標的候選方案和改進他們的空間位置。
  由此產生的方法可訓練一個非常深的檢測網絡(VGG16),該網絡比R-CNN快9倍,比SPPnet快3倍。在運行時,該檢測網絡處理一幅圖像耗時3s(不包括目標方案生成時間),並且在PASCAL VOC 2012數據集上取得最好的准確率66%mAP(R-CNN:62%)

1.1 R-CNN與SPPnet

  R-CNN使用深度卷積網絡來分類目標提案獲得了非常好的目標檢測准確率,但是,R-CNN有一些明顯的缺點:

  • 1.多階段訓練過程 R-CNN首先采用log損失在目標提案上微調卷積神經網絡,然后,訓練適合卷積網絡特征的SVM,這些SMV作為目標檢測器,使用微調來代替softmax分類器。在第三階段,進行邊界框回歸。
  • 2.訓練空間和時間消耗大 對於SVM和邊界框回歸的訓練,特征是從每一幅圖像的每一個目標提案提取出來並寫入磁盤中的。使用深度網絡,例如:VGG16,對於VOC 2007 訓練集的5K圖像來說,這個過程要使用GPU訓練兩天半,這些特征需要數百GB的存儲空間來存儲。
  • 3.目標檢測速度慢 在測試時,特征是從每一幅測試圖像的每一個目標提案中提取出來的,采用VGG16的檢測器處理一幅圖像需要47s(在GPU上)。

  R-CNN速度慢是因為每一個目標提案都會通過卷積神經網絡進行前向計算,而不共享計算。空間金字塔池化網絡(SPPnet)通過共享計算加速了R-CNN。SPPnet方法為整個輸入圖像計算一個卷積特征映射,然后使用從共享特征映射中提取的特征向量對每個目標提案進行分類。通過最大池化提案內部的部分特征映射來形成一個固定大小的輸出(例如:6x6)達到特征提取的目的。多種大小的輸出匯集在一起,然后連接成空間金字塔池化(SPP)。在測試時,SPPnet加速了R-CNN10到100倍,在訓練時,由於更快的提案特征提取過程,也加速了3倍。
  SPPnet也有一些明顯的缺點。像R-CNN一樣,它的訓練過程也是一個多階段過程,這個過程圍繞特征提取、采用log損失對網絡進行微調、訓練SVM和最后的擬合邊界框回歸展開。特征也要寫入磁盤,但是,在[11]中提出微調算法不更新SPP之前的卷積層參數。不出所料,這些限制限制了深度網絡的准確率。

1.2 貢獻

  我們提出了一種新的算法來彌補R-CNN和SPPnet的不足,同時提升了它們的速度和准確率。我們稱這種方法為Fast R-CNN,因為在訓練和測試時相對較快。Fast R-CNN有如下優點:

  • 1.比R-CNN和SPPnet更高的檢測質量;
  • 2.采用多任務損失,訓練過程為單階段;
  • 3.訓練可以更新所有網絡層;
  • 4.特征緩存不需要磁盤存儲。

  Fast R-CNN采用Python和C++(Cafe)實現,開源代碼

圖1 Fast R-CNN結構 一幅輸入圖像和多個感興趣區域(RoI)輸入到一個全卷積網絡,每一個RoI都被池化為一個固定大小的特征映射,然后通過全連接網絡映射到特征向量。該網絡對於每一個RoI都有兩個輸出向量:softmax概率和每一類的邊界框回歸補償。這種結構是采用多任務損失訓練的端到端結構。

圖1 Fast R-CNN結構 一幅輸入圖像和多個感興趣區域(RoI)輸入到一個全卷積網絡,每一個RoI都被池化為一個固定大小的特征映射,然后通過全連接網絡映射到特征向量。該網絡對於每一個RoI都有兩個輸出向量:softmax概率和每一類的邊界框回歸補償。這種結構是采用多任務損失訓練的端到端結構。

2 Fast R-CNN結構和訓練

  圖1展示了Fast R-CNN的結構。Fast R-CNN網絡將一幅完整的圖像和一系列目標提案作為輸入。該網絡首先采用一些卷積層和最大池化層生成卷積特征映射來處理整個圖像。然后,對於每一個目標提案,感興趣區域(RoI)池化層從特征映射中提取出一個固定長度的特征向量。每一個特征向量被送到一系列的全連接層(fc)最終分支到兩個同級輸出層:一層是在所有K個目標類加上一個全方位的背景類產生softmax概率估計;另一層則對每個K類目標輸出4個真實數字,每一組的4個值編碼了一個K類目標的精確的邊界框位置。

2.1 RoI池化層

  RoI池化層采用最大池化將任何有效的RoI內部特征轉換為具有HxW固定空間范圍的小的特征映射,H和W為層超參數,它們獨立於任何的RoI。在本文中,每一個RoI都被定義為一個四元(r,c,h,w)組,這個四元組指定了RoI左上角的位置(r,c)和它的高度和寬度(h,w)。
  RoI最大池化的工作是將h x w的RoI窗口划分為一個H x W的網格,其子窗口近似大小為h/H x w/W。然后,將每個子窗口中的值合並到相應的輸出網格單元中。池化被獨立的應用到每一個特征映射通道,作為標准的最大池化。RoI層就是應用在SPPnet中的空間金字塔池化層的簡單應用,在這里它只有一層金字塔等級。我們使用[11]中給出的池子窗口計算。

2.2 從預訓練網絡初始化

  我們使用三個ImageNet 預訓練網絡進行試驗,每個網絡都有5個最大池化層和5到13個卷積層。當一個預訓練的網絡初始化一個Fast R-CNN網絡時,它會經歷三個轉換。
  首先,用一個RoI池化層替換最后一個最大池化層,它通過設置H和W來與網絡的第一個全連接層相適應(例如:VGG16的H和W為7)。
  然后,網絡的最后一個全連接層和softmax(訓練用於1000類ImageNet圖像分類)用之前所描述的兩個同級輸出層(一個全連接層和K+1類的softmax和類特定的邊界框回歸)替換。
  最后,該網絡被修改為接受兩個數據輸入:一系列圖像和一系列圖像的RoI。

2.3 檢測微調

  采用反向傳播計算所有網絡權重是Fast R-CNN的一項非常重要的能力,讓我來解釋一下為什么SPPnet在空間金字塔池化層下不能更新權重。
  根本原因是當來自於不同圖像的訓練樣本通過SPP層時,它所使用的反向傳播算法的效率是非常低的,這是由SPPnet和R-CNN的訓練方式所決定的。這種低效源於這樣一個事實,那就是每一個RoI有一個非常大的感受野,通常包含整個圖像。由於前向傳播必須處理整個感受野,而訓練輸入又很大(通常是整幅圖像)。
  我們提出了一種更加有效的訓練方式,那就是在訓練時利用特征共享的優點。在Fast R-CNN的訓練中,隨機梯度下降(SGD)的小批采用分層次采樣,首先采樣N幅圖像,然后從每幅圖像中采樣R/N個RoI。關鍵的是,來自同一圖像的RoI在前向和后向過程中共享計算和內存。使用N的小批量減少小批量的計算量。例如當N等於2,R等於128時,這個訓練過程要比從128幅不同的圖像中采樣一個RoI(即R-CNN和SPPnet的策略)快64倍。
  這一策略的一個擔憂就是,這可能會導致訓練收斂緩慢,因為同一幅圖像中的RoI是具有相關性的。我們將N和R分別設置為2和128,並且使用比R-CNN更少的SGD迭代次數,我們取得了一個不錯的結果,使得這種擔憂沒有成為一個實際問題。
  除了分層抽樣之外,Fast R-CNN使用了具有一個微調階段的流線型訓練過程,這個微調階段聯合優化了一個softmax分類器和邊界框回歸,而不是訓練一個softmax分類器、SVM和三個獨立階段的回歸。這個過程的組成部分(損失、小批量采樣策略、RoI池化層的反向傳播、SGD超參數)在下面進行講述。

  • 多任務損失 一個Fast R-CNN網絡具有兩個同級輸出層。第一個輸出是所有K+1類的一個離散概率分布(每一個RoI),。和往常一樣,p由全連接層的K+1個輸出上的softmax計算。第二個同級層輸出邊界框回歸補償,對每一個K目標類采用k進行索引。我們采用了在[9]中提出的參數化方法參數化tktk,tktk表示一個尺度不變的變換和log空間的高寬相對於目標提案的偏移。

      每一個訓練RoI都被標記為一個真實類u和一個真實邊界框回歸目標v。對分類和邊界框回歸,我們在被標記的RoI上使用多任務損失L來訓練:

    其中是對真實類u的log損失。

      第二個任務損失,即LlocLloc,由類u的一組真實邊界框回歸目標 和類u的預測元組定義。Iverson括號表示的函數[u1]在當u1u=0時,計算結果為1。按照常理,所有背景類都被標記為u=0。對於背景RoI沒有真實的邊界框,因此LlocLloc被忽略了。對於邊界框回歸,我們使用下面的損失函數:

    其中:

    是對異常值的敏感度低於R-CNN和SPPnet中使用的L2損失的L1損失。當回歸目標沒有被框起來時,使用L2損失訓練需要仔細的選擇學習速率來保證梯度不會爆炸增長。公式3消除了這種敏感性。
      公式1中的超參數λ用來控制兩個任務損失之間的平衡。我們將真正的回歸目標vi標准化為零均值和單位偏差。所有實驗都使用λ=1.
      我們注意到[6]使用了相關損失去訓練一個類不可知的目標提案網絡。不同於我們的方法,[6]所提出的方法主張采用兩種網絡系統來區分定位和分類。OverFeat、R-CNN和SPPnet也分別訓練分類器和編輯框定位器,但是這些方法都使用多階段訓練。相對於我們所提出的Fast R-CNN是不夠好的。

  • 小批量采樣 在微調過程中,每一個SGD小批量都是由隨機選擇(正如常見的做法一樣,我們實際上迭代了數據集的排列。)的N=2幅圖像組成。使用大小為R=128的小批量是從每一幅圖像中采樣64個RoI得到的。正如[9]中所描述的一樣,我們從具有交叉超聯合(IoU)的交集與有至少0.5的真實邊界寬重疊的目標提案中選取25%作為RoI。這些RoI由被標記為前景目標類的示例組成,即:u1。剩下的RoI則從具有最大IoU與具有間距[0.1, 0.5)真實邊界框重疊的目標提案中采樣得到。這些作為背景示例,它們被標記為u=0。較小的閾值0.1作為困難示例挖掘的啟發。在訓練過程中,圖像翻轉的概率為0.5,沒有采用其他數據增強的方法。

  • 通過RoI池化層進行反向傳播 反向傳播路徑通過RoI池化層進行衍生。雖然擴展到N>1很簡單,但是為了清楚起見,我們假設每一個小批量只有一幅圖像(N=1),因為前向傳播會獨立處理所有圖像。
      讓xi屬於R作為輸入到RoI池化層的第i個輸入。讓yrj作為來自第r個RoI層的第j個輸出。RoI池化層計算yrj=xi×(r,j),其中

     

    R(i,j)是輸出單元yijyij最大池化的子窗口中輸入的索引集。一個xixi可能會分配到不同的輸出yij

      RoI池化層的反向函數通過下面的公式對每一個輸入變量xi計算損失函數的偏導數。

     

     

    簡言之,對於每一個小批量RoI r和每一個池化輸出單元yij,如果i是yrj通過最大池化選擇出的,那么偏導數L/yrj會累積。在反向傳播中,偏導數L/yrj已經由位於RoI池化層之上的層的反向函數計算。

  • SGD超參數 用於softmax分類和邊界框回歸的完全連接圖層分別從標准偏差為0.01和0.001的零均值高斯分布進行初始化。偏差初始化為0。所有層對於權重都使用每一層的學習速率1,對於偏差使用每一層的學習速率2和一個全局學習速率0.001。當在VOC07或VOC12訓練集訓練時,我們運行30K次SGD迭代,然后將學習速率降低到0.0001,繼續進行10K次迭代訓練。當我們在更大的數據集上進行訓練時,我們將運行更多的SGD迭代次數,這將在后面進行講述。使用0:9的動量和0:0005的參數衰減(關於權值和偏差)。

2.4 尺度不變性

  我們探討了實現尺度不變目標檢測的兩種方法:(1)通過“暴力”算法學習;(2)通過使用圖像金字塔。這些策略遵循[11]中的兩種方法。在暴力方法中,在訓練和測試時,每個圖像都按照預先定義的像素大小進行處理。網絡必須從訓練數據中直接學習尺度不變目標檢測。
  相比之下,多尺度方法通過圖像金字塔給網絡提供近似的尺度不變性。在測試時,圖像金字塔被用來對每一個目標提案進行近似的尺度標准化。在多尺度訓練時,我們隨機采樣金字塔尺度每次圖像采樣作為一種數據增強的形式。由於GPU內存的限制,我們僅試驗了用多尺度訓練一個較小的網絡。

3 Fast R-CNN檢測

  一旦Fast R-CNN網絡進行了微調,那檢測就相當於運行了一個前向傳播通道(假定目標提案是預先計算好的)。網絡將輸入圖像(或者圖像金字塔,編碼為圖像列表)和R個目標提案列表進行評分。在測試時,盡管我們會考慮R更大的情況(45K左右),但是R通常在2000左右。當使用圖像金字塔時,每一個RoI都被分配到一個尺度,這個尺度的RoI最接近224^2像素的區域。
  對於每一個測試RoI r,前向傳播輸出一個類后延概率分布p和一組關於r的預測邊界框回歸偏移量(K類的每一類都獲得其精確邊界框預測)。我們用估計概率PrPr(classclass = kr)Δ=pkk∣r)=Δpk為每個目標k分配一個檢測置信值。然后,為每一類采用R-CNN的算法和設置獨立的實現非最大抑制。

3.1 截斷SVD以加快檢測

  為整個圖像分類,相比於卷積層,全連接層的計算所消耗的時間很少。相反,為檢測RoI的數量去處理是巨大的,並且接近一半的前向傳播時間花費在全連接層的計算上(如圖2)。大量的全連接層可以通過截斷SVD壓縮時間來加速。
  在這項技術中,被u x v的權重矩陣W參數化的曾可以近似的使用SVD分解表示。
W=UΣtVTW=≈UΣtVT
在這個分解中,U表示一個包含W的前t個左奇異向量的u x t矩陣,Σt表示包含W的頂部t個奇異值的t x t對角矩陣,V表示包含W的前t個右奇異向量的v x t矩陣。階段SVD將參數從uv削減到(u+v),如果t比u和v的最小值要小得多,那么這是非常重要的。為了壓縮網絡,和W相關的單個全連接層被沒有線性關系的兩個全連接層代替。這些層的第一個使用權重矩陣ΣtV^T(無偏差),另一個是用矩陣U(與W的原始偏差有關)。當RoI數量較大時,這種簡單的雅俗方法起到了不錯的加速作用。

4 主要結果

  3個主要的結果支持了本文的貢獻:

  • 1.在VOC 2007、2010和2012數據集上獲得最好的mAP;
  • 2.和R-CNN和SPPnet相比,在訓練和測試時都更快;
  • 3.在VGG16中微調卷積層提高mAP。

4.1 實驗步驟

  我們的實驗使用了3個預訓練ImageNet模型,這些模型可以在網上找到。第一個是來自R-CNN的CaffeNet(本質上是AlexNet)。我們也可以將該CaffeNet稱為模型S,表示“small”。第二個網絡是來自[3]的VGG_CNN_M_1024,該網絡具有與模型S相同的深度,但是更廣闊。我們將該網絡稱為模型M,表示“medium”。最后一個網絡是來自於[20]非常深度的VGG16,由於該網絡十分龐大,因此我們稱該網絡為模型L。在本節中,所有實驗都使用單一尺度進行訓練和測試(s=600,詳見5.2節)。

表1. VOC 2007測試檢測平均精度(%)所有方法都使用VGG16,訓練集關鍵詞:07:VOC 2007訓練集,07/diff:07不包含困難樣本,07+12:VOC12和07的聯合訓練集,SPPnet結果由原作者給出。

表1. VOC 2007測試檢測平均精度(%)所有方法都使用VGG16,訓練集關鍵詞:07:VOC 2007訓練集,07/diff:07不包含困難樣本,07+12:VOC12和07的聯合訓練集,SPPnet結果由原作者給出。


表2. VOC 2010測試檢測平均精度(%) BabyLearning采用基於[[17](https://arxiv.org/abs/1312.4400)]的網絡,所有方法都使用VGG16.訓練集關鍵詞:12:VOC12訓練集,Prop:專用數據集,12+seg:帶分割注釋的12數據集,07+12:VOC07的訓練集和測試集,VOC12訓練集的聯合數據集。

表2. VOC 2010測試檢測平均精度(%) BabyLearning采用基於[[17](https://arxiv.org/abs/1312.4400)]的網絡,所有方法都使用VGG16.訓練集關鍵詞:12:VOC12訓練集,Prop:專用數據集,12+seg:帶分割注釋的12數據集,07+12:VOC07的訓練集和測試集,VOC12訓練集的聯合數據集。


表3. VOC 2012測試檢測平均精度(%) Babylearning和NUS_NIN_c2000采用基於[[17](https://arxiv.org/abs/1312.4400)]的網絡。所有方法都使用VGG16,訓練集關鍵詞如表2,Unk:未知。

表3. VOC 2012測試檢測平均精度(%) Babylearning和NUS_NIN_c2000采用基於[[17](https://arxiv.org/abs/1312.4400)]的網絡。所有方法都使用VGG16,訓練集關鍵詞如表2,Unk:未知。

4.2 VOC 2010和VOC 2012的結果

  在這些數據集上,我們將Fast R-CNN(簡稱FRCN)與公共排行榜上comp4的最優方法進行比較(表2,表3)。對於Babylearning和NUS_NIN_c2000兩種方法,目前還沒有相關出版物,我們也無法從所使用的卷積神經網絡結構中獲取相關信息,它們是Network-in-Network[17]的變體。所有其他網絡都從相同的預訓練VGG16網絡初始化。
  Fast R-CNN在VOC12數據集上獲得了65.7%mAP的最好結果(額外數據上68.4%)。這也比其他基於“slow”R-CNN的方法快兩個數量級。在VOC10上,SegDeepM獲得了比Fast R-CNN更高的mAP(67.2% vs 66.1%)SegDeepM是在帶分割注釋的VOC12訓練集上訓練的,它被設計來增強R-CNN的准確率,利用馬爾可夫隨機場,從O2P語義分割方法中對R-CNN的檢測和分割進行推理。Fast R-CNN可以被替換成SegDeepM代替R-CNN(參見表2的說明),此時Fast R-CNN的mAP增加到68.8%,超過了SegDeepM。

4.3 VOC 2007的結果

  在VOC07數據集上,我們將Fast R-CNN與R-CNN和SPPnet進行比較。所有方法都從相同的預訓練模型VGG16開始,並使用邊界寬回歸。VGG16 SPPnet的結果由原作者計算。SPPnet在訓練和測試時使用5種尺度。Fast R-CNN在SPPnet上的改進表明:盡管Fast R-CNN使用單尺度進行訓練和測試,但是微調卷積層大大提升了mAP(63.1%到66.9%)。有一小點,SPPnet是在沒有標記困難樣本的PASCAL數據集上訓練得到的,去掉這些困難樣本,Fast R-CNN的mAP提升到68.1%。其他所有實驗都使用了困難樣本。

4.4 訓練和測試

  快速的訓練和測試是我們的第二個主要的結果。表4比較了訓練時間(hour)、測試率(秒/圖像),Fast R-CNN、R-CNN和SPPnet在VOC07上的mAP。對於VGG16,Fast R-CNN處理圖像比沒有使用截斷SVD的R-CNN塊146倍,比使用了截斷SVD的R-CNN塊213倍。訓練時間削減達9倍,從84小時減少到9.5小時。和SPPnet相比,Fast R-CNN比沒使用截斷SVD塊7倍,比使用了截斷SVD快10倍。Fast R-CNN同時也減少了數百GB的磁盤空間,因為它不需要緩存特征。 

表4. 在相同模型的Fast R-CNN、R-CNN和SPPnet之間的運行時間比較。Fast R-CNN使用單尺度模型,SPPnet使用5種尺度,時間消耗由原作者給出,在NVIDIA K40 GPU上進行時間測量。

表4. 在相同模型的Fast R-CNN、R-CNN和SPPnet之間的運行時間比較。Fast R-CNN使用單尺度模型,SPPnet使用5種尺度,時間消耗由原作者給出,在NVIDIA K40 GPU上進行時間測量。

  • 截斷SVD 截斷SVD能減少30%的檢測時間,並且對mAP只下降一點點(0.3個百分點),且不需要在模型壓縮后再進行微調。圖2說明了如何使用來自VGG16的fc6層中的25088x4096矩陣的頂部1024個奇異值和來自4096x4096 fc7層的頂部256個奇異值如何在mAP中損失很少的情況下減少運行時間。如果在壓縮后再進行一次微調,就有可能在mAP損失更小的情況下進一步加速。
圖2. 在使用截斷SVD和不使用的情況下訓練VGG16。在使用SVD之前,全連接層fc6和fc7消耗了45%的時間。

圖2. 在使用截斷SVD和不使用的情況下訓練VGG16。在使用SVD之前,全連接層fc6和fc7消耗了45%的時間。

4.5 微調哪一層?

  對於SPPnet論文中考慮的較不深的網絡,僅對全連接層的微調能夠獲得足夠好的准確率。我們假設這一結果不會適應非常深的網絡。為了驗證微調卷積層對VGG16是非常重要的,我們使用Fast R-CNN進行微調,但是凍結了13層卷積層以達到只有全連接層在模型中學習。這種消融模擬了單尺度的SPPnet訓練,並且mAP從66.9%下降到了61.4%(表5)。這個實驗證明了我們的猜想:通過訓練RoI池化層對深度網絡是非常重要的。

表5. 限制微調VGG16網絡層的影響。微調大於fc6模擬了SPPnet訓練算法,但是只使用了單尺度。SPPnet L結果包含了使用5種尺度,體現了巨大的速度開銷。

表5. 限制微調VGG16網絡層的影響。微調大於fc6模擬了SPPnet訓練算法,但是只使用了單尺度。SPPnet L結果包含了使用5種尺度,體現了巨大的速度開銷。

  是否這就意味着所有卷積層都需要進行微調呢?簡單來說是不對的。在較小的網絡(S和M)中,我們發現卷積層conv1是簡單的和任務獨立的。限制和不限制conv1學習,對於mAP沒有明顯的影響。對於VGG16我們發現只需要更新conv3_1及其往后的層(卷積層的9到13層)。這個觀察結果是有用的:(1)相比於從conv3_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 R-CNN與R-CNN和SPPnet的比較,以及評估設計決策。遵循最佳實踐規則,我們在PASCAL VOC07數據集上進行了這些實驗。

5.1 多任務訓練是否有幫助?

  多任務訓練是非常方便的,因為它避免了管理一系列的順序訓練任務。但是它還是具有提升結果的潛力,因為多任務通過共享表示(卷積神經網絡)相互影響。多任務訓練是否能在Fast R-CNN中提升目標檢測的准確率呢?
  為了測試這個問題,我們訓練了僅有公式1中的分類損失Lcls的基線網絡(即:λ設置為0)。這些基線網絡對於模型S、M和L的結果在表6的每組的第一列展示出來了。可以看出這些模型都沒有使用邊界框回歸,接着(每組第二列),展示了在測試時網絡使用了多任務損失(λ=1),但是沒有使用邊界框回歸的結果,這就隔離了網絡分類的准確性,並允許與基線網絡進行一對一的比較。

表6. 多任務訓練提升mAP

表6. 多任務訓練提升mAP

  根據所有的三種網絡,我們觀察發現,相對於單獨訓練分類多任務訓練純粹的提高了分類精度。提升mAP范圍達0.8到1.1個百分點,從多任務學習中顯示出一致的積極效果。
  最后,我們采用基線模型(僅用分類損失訓練),添加邊界框回歸層,保持其他網絡參數不變,采用Lloc進行訓練。每組的第三列顯示了這一階段訓練的結果:mAP較前兩列都有所提高,但是階段訓練效果不如多任務訓練的效果。

5.2 尺度不變性:暴力還是靈巧?

  為了獲得尺度不變目標檢測,我們比較了兩種策略:暴力學習(單尺度)和圖像金字塔(多尺度)。在這兩種情況下,我們定義圖像的尺度s為其最短的邊的長度。
  所有單尺度實驗使用s=600像素;對於某些圖像來說,s可能小於600,因為我們將最長的圖像端設置為1000像素,並保持圖像的寬高比。選擇這些值是為了使VGG16在微調時能適應GPU的內存。較小的模型不受內存限制,並且可以從更大的s值中獲益,然而,對每個模型的s優化不是我們主要關心的問題。我們注意到PASCAL數據集的圖像平均為384x473像素的圖像,因此,單一尺度的設置通常會使圖像的樣本增加1.6倍。因此,RoI池化層的平均有效步幅是10個像素。
  在多尺度設置中,我們采用相同的5種尺度s=(480,576,688,864,1200)便於與SPPnet進行比較,但是,為了避免GPU內存過載,我們將最長的便限制在2000像素。

表7. 多尺度vs單尺度。SPPnet ZF的結果來自[[11](https://arxiv.org/abs/1406.4729)]

表7. 多尺度vs單尺度。SPPnet ZF的結果來自[[11](https://arxiv.org/abs/1406.4729)]

  表7展示了模型S和M在使用單一尺度和5種尺度訓練和測試的結果。也許[11]中最令人驚訝的結果是單級檢測幾乎和多尺度檢測一樣有效。我們的發現證明了他們的結果:深度卷積網絡能很好的直接學習尺度不變性。多尺度方法消耗大量的時間而對mAP僅有很小的提升(表7)。在VGG16(模型L)的情形中,我們只能通過實現細節來使用單一尺度。目前取得了66.9%的mAP比R-CNN的66.0%略高,盡管R-CNN使用了無限的尺度,但是每一個區域提案都被扭曲到了一個相同的大小。
  由於單級處理在速度和精度之間提供了最好的權衡,特別是對於非常深的模型,在這個子部分之外的所有實驗都使用單級的訓練和s=600像素進行測試。

5.3 是否需要更多的數據?

  當提供更多的訓練數據時,一個好的目標檢測器性能應該會得到提升。Zhu等人發現DPM的mAP在數百到數千的數據樣本之后就達到飽和了。在這里,我們增加VOC07訓練集與VOC12訓練集,粗略地將圖像的數量增加到了16.5k,以評估Fast R-CNN。擴大訓練集后,在該數據集上使用60K次小批量迭代代替40K訓練模型時,在VOC07上進行測試,mAP從66.9%提升到了70.0%(表1)。
  我們在VOC10和VOC12上進行了相同的實驗,結合VOC07訓練集和測試集與VOC12訓練集構建了一個包含21.5K幅圖像的數據集。當在這數據集上訓練模型時,我們使用100k次SGD迭代,每學習40k次迭代將學習率降低0.1倍(替代原來的30K)。對VOC10和VOC12,mAP分別從66.1%提升到了68.8%和從65.7%提升到了68.4%。

5.4 SVM是否比softmax好?

  在微調過程中,Fast R-CNN使用softmax分類器取代R-CNN和SPPnet中所訓練的one-vs-rest 線性SVM。為了了解這個選擇的影響,我們在Fast R-CNN中采用了負挖掘技術,實現了post-hoc SVM的訓練。我們使用在R-CNN中相同的訓練算法和超參數。

表8. 使用softmax的Fast R-CNN vs SVM(VOC07 mAP)

表8. 使用softmax的Fast R-CNN vs SVM(VOC07 mAP)

  從表8可以看出,對於這3中網絡,softmax的結果略優於SVM,mAP增加0.1到0.8個百分點。這個影響是較小的,但是,這證明,與之前的多階段訓練方法相比,一次性的微調是充分有效的。我們注意到softmax不像one-vs-rest SVM,當對RoI進行評分時,softmax在類之間引入了競爭。

5.5 更多的區域提案是否會更好?

  有兩種類型的目標檢測器:一種使用目標提案的稀疏數據集(例如:選擇性搜索);一種使用稠密數據集(例如:DPM)。對稀疏提案進行分類是一種級聯方式,這種方式首先由提案機制拒絕大量的候選提案,然后分類器對以小組提案進行評估。將這種級聯方式應用到DPM檢測器可以提高檢測准確率。我們發現了提案分類器級聯也可以提高Fast R-CNN准確率的證據。
  使用選擇性搜索的質量模式,我們從每個圖像的1k到10k個提案進行掃描,每次重新訓練和重新測試模型M。如果提案只是純計算角色,那么增加每幅圖像的提案數量對於mAP不會有損失。

圖3. 不同提案方案在VOC07上測試的mAP和AR

圖3. 不同提案方案在VOC07上測試的mAP和AR

  我們發現隨着提案數量的增加,mAP先增加然后略微的下降(圖3實藍線)。這個實驗表明,深度分類器采用更多的提案數量對於准確率沒有什么提升,甚至可能會造成輕微的損失。
  這個結果在沒有實際運行實驗的情況下是很難預測的。最先進的測量目標提案質量的參數是平均召回(AR)。對於使用R-CNN的幾種提案方式,當每個圖像使用固定數量的提案時,AR和mAP具有很好的相關性。圖3顯示隨着每個圖像提案的數量變化,AR(紅色實線)與mAP沒有很好的關聯。AR必須小心使用,由於更多的提案數量導致AR更高並不意味着mAP的增加。幸運的是,訓練和測試模型M只要2.5小時。
  我們也使用稠密的生成合作研究Fast R-CNN,該稠密程度達到45K個盒子每幅圖像。這個密集非常豐富,當每個選擇性搜索框被其最近的(在IoU中)密集框代替時,mAP只會下降1個點(57.7% 圖3藍色三角形)。
  稠密盒子的統計和選擇性盒子不同,從2k個選擇性搜索框開始,我們在添加1000 x(2;4;6;8;10;32;45)密集框的隨機樣本時測試mAP。對於每個實驗,我們都重新訓練和重新測試模型M。當這些密集的盒子被應用時,mAP的下降比應用選擇性搜索框時更多,最終達到53.0%。
  我們也僅使用稠密盒子(45K/圖)訓練和測試了Fast R-CNN,獲得了52.9%的mAP(藍色菱形)。最后,將SVM應用在稠密盒子分布中,結果獲得了更壞的結果49.3%mAP(藍色三角形)。

5.6 MS COCO的初步結果

  我們將Fast R-CNN(帶有VGG16)應用到MS COCO數據集中,以建立一個初步基准。在包含80K張圖像的訓練集上進行240K次迭代訓練模型,並且使用評估服務在“test-dev”數據集上對模型進行評估。取得和PASCAL類似的mAP結果為35.9%;COCO平均召回率為19.7%。

6 結論

  本文提出的Fast R-CNN是對R-CNN和SPPnet的快速更新。除了報告最好的檢測結果,我們給出了實驗細節,希望能提供一些新的見解,特別值得注意的是,稀疏目標提案似乎提高了檢測器的質量。這個問題在過去需要消耗大量的時間去探索,但是現在已經應用在Fast R-CNN中。當然,可能還有尚未發現的技術能讓稠密盒子表現得和稀疏提案一樣好。這樣的方法如果開發出來,可能有助於進一步加速物體的檢測。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM