深度學習論文翻譯解析(十二):Fast R-CNN


論文標題:Fast R-CNN

論文作者:Ross Girshick

論文地址:https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf

  https://arxiv.org/pdf/1504.08083.pdf

Fast RCNN 的GitHub地址:https://github.com/rbgirshick/fast-rcnn

參考的Fast R-CNN翻譯博客:http://www.dengfanxin.cn/?p=403  https://blog.csdn.net/ghw15221836342/article/details/79549500

聲明:小編翻譯論文僅為學習,如有侵權請聯系小編刪除博文,謝謝!           

  小編是一個機器學習初學者,打算認真研究論文,但是英文水平有限,所以論文翻譯中用到了Google,並自己逐句檢查過,但還是會有顯得晦澀的地方,如有語法/專業名詞翻譯錯誤,還請見諒,並歡迎及時指出。

如果需要小編其他論文翻譯,請移步小編的GitHub地址

  傳送門:請點擊我

  如果點擊有誤:https://github.com/LeBron-Jian/DeepLearningNote

1,前言

  在R-CNN網絡結構模型中,由於卷積神經網絡的全連接層對於輸入的圖像尺寸有限制,所以所有候選區域的圖像都必須經過變形轉換后才能交由卷積神經網絡模型進行特征提取,但是無論采用剪切(crop)還是采用變形(warp)的方式,都無法完整保留原始圖像的信息,Kaiming He等人提出的空間金字塔池化層(Spatial Pyramid Pooling Layer)有效的解決了傳統卷積神經網絡對輸入圖像的尺寸限制。

  SPP-net:R-CNN候選區域縮放后畸變問題和提取特征時的重復計算導致了模型性能和速度的瓶頸。為了解這些問題,2015年,Kaming He等人提出了SPP-net,在保證性能的同時,檢測速度也有了較大的提升。論文之前有翻譯。

  R-CNN 需要對候選區域進行縮放的原因是全連接層的輸入維度必須固定。整個網絡包含底部的卷積層和頂部的全連接層,卷積層能夠適用任意尺寸的輸入圖像,產生相應維度的特征圖,但是全連接層不同,全連接層的參數是神經元對於所有輸入的連接權重,即如果輸入維度不固定,全連接層的參數數量也無法確定,網絡將無法訓練。為了既能固定全連接層的輸入維度又不讓候選區域產生畸變,很自然的想法就是在卷積層和全連接層的銜接處加一個新的網絡層,使得通過該層后特征的維度可以固定,在SPP-net中引入的空間金字塔池化層(Spatial Pyramid Pooling Layer,SPP Layer)就是這樣一種網絡層,SPP-net也因此而得名。

  此外,SPP-net 也解決了R-CNN重復計算的問題。SPP-net 的思路是由於原圖與經過卷積層后得到的特征圖在空間位置上存在一定的對應關系,所以只需要對整張圖片進行一次卷積層特征提取,然后將候選區域在原圖的位置映射到卷積層的特征圖上得到該候選區域的特征,最后將得到每個候選區域的卷積層特征輸入到全連接層進行后續操作。

  下面回顧一下SPP-net的目標檢測整體流程:

1,輸入一幅待檢測圖像

2,提取候選區域:利用 Selective Search算法在輸入圖像中提取出約 2000個最有可能包含目標實例的候選框

3,候選區域尺度縮放:候選區域長寬中的較短邊長度進行統一,即 min(w, h) = s,s 屬於 { 480, 576, 688, 864, 1200},s取值標准是使用統一后的候選區域尺寸與 224*224最接近

4,特征提取:利用SPP-net網絡結構提取特征

5,分類與回歸:根據所提特征,利用SVM進行分類,用邊框回歸器微調候選框的位置

  空間金字塔池化操作有許多明顯的優點:一是實現了任意尺寸輸入,固定大小輸出。層多可對任意尺度提取的特征進行池化。二是大大降低了計算時間。將某一大小的圖片輸入到卷積神經網絡中,結果特征值提取處理得到了特征圖(feature maps),然后利用空間金字塔池化對所有的候選框進行處理處理可以得到固定長度的特征向量。相比之下,R-CNN是將所有的候選框——輸入之后再進入CNN來處理,在R-CNN中,一般使用Selective Search方法將一種圖片生成多個(2000個左右)候選區,再對於每個候選框內圖像塊提取特征,使用分類器判別對候選框中提取出的這些特征是否屬於一個特定類。對於屬於某一特征的候選框,用回歸器進一步調整其位置。使用過分割的方法將數據分割成小區域,然后不斷地重復合並可能性最高的兩個區域直到整張圖片上合並為一個區域為止。因為空間金字塔池化操作對整張圖片的特征提取過程是操作了一次。R-CNN遍歷了一個CNN 2000次,而SPP-net只遍歷了一次,而兩者最后都是采用SVM算法進行了特征向量分類識別,所以整體計算速度提高了很多倍。

   SPP layer 一般跟在卷積層后面,此時網絡的輸入可以是任意尺度的,在 SPP layer中每一個 pooling 的 filter會根據輸入調整大小,而SPP的輸出則是固定維度的向量,然后給到全連接FC層。

  SPPnet 解決了R-CNN 重復提取候選區域特征的問題,同時運行各種尺寸圖像作為輸入,解決了圖像畸變的問題,但R-CNN的其他問題,如訓練步驟繁瑣,磁盤空間開銷大等依然有待解決。

  為了解決R-CNN的訓練速度慢,訓練所需空間大的問題,R-CNN的原作者Ross Girshick對R-CNN做出了改進,提出了Fast R-CNN,該網絡吸收了SPP-net的特點,使得目標檢測的速度大幅提升,論文名字為”Fast R-CNN”。下面領略一下其風采。

摘要

  本文提出了一種Fast Region-based (快速的基於區域)的卷積網絡方法(Fast R-CNN)進行目標檢測。Fast R-CNN 以先前的工作為基礎,使用深度卷積網絡對目標提案進行有效分類。與之前的工作相比,Fast R-CNN 采用了一些創新技術來提高訓練和測試速度,同時也提高了檢測精度。Fast R-CNN 訓練非常深的 VGG16 網絡比 R-CNN 快 9倍,測試比R-CNN快了 213倍,並在PASCAL  VOC 2012 上實現了更高的mAP,與SPP-net相比,Fast R-CNN在VGG16網絡上的訓練的速度快了 3倍,測試速度提高了10倍,並且更加准確。Fast R-CNN 是使用Python和C++實現的(基於Caffe)。

1,引言

  最近,深度卷積網絡在圖像分類(image classification)和物體檢測(object detection)領域有了很明顯的提高。相比於圖像分類問題,物體檢測是一個更具有挑戰性的任務,它需要使用更復雜的方法去解決。正是由於這種復雜性,當前很多訓練模型的方法都是采用多階段流水線的形式,不僅很慢而且很不優雅。

  復雜性產生(Complexity arises)的原因是檢測需要獲得目標物體的精確位置,從而產生了兩個主要的挑戰(Challenges)。首先,許多的物體候選區域(經常被稱為'Proposals')必須被處理。其次,這些所謂的候選區域僅僅能提供物體的一個粗略位置信息,因此必須對它進行細化(Refine)以實現更精確的定位。解決這些問題往往需要在速度,精度,簡易性上進行適當地妥協折中(Compromise)。

  在這篇論文中,我們簡化了(Streamline)基於最先進(state-of-the-art)的卷積網絡的物體檢測的訓練過程(這里指R-CNN和SPP-net),我們提出了一種單階段(single-stage)的訓練算法(algorithm),該算法將候選區域物體分類和他們的空間位置細化合並在一起去學習訓練(這里指的是圖像分類和邊界框回歸)。

  由此產生的方法可以訓練一個非常深的卷積網絡(VGG16,9倍於RCNN,3倍於SPP-net)。在測試時,檢測網絡處理一張圖片僅僅需要 0.3 s(不包括候選區域的產生時間),而且在PASCAL VOC 2012上的mAP為 66%(R-CNN 僅為62%)。

1.1  R-CNN 和 SPP-net

  基於基於的卷積網絡方法(R-CNN)通過使用深度卷積網絡完成了對物體候選區域的分類,並得到了很好的物體檢測精度。然后,R-CNN有着明顯的缺陷(notable  drawbacks):

  1,訓練是多階段流水線(multi-stage Pipeline):首先,R-CNN利用物體候選區域(Object Proposals)對卷積網絡(ConvNet)模型進行調優(fine-tunes),損失函數采用的是log損失(其實就是Softmax函數)。然后,讓SVMs去適應了卷積特征(其實就是訓練了SVM分類器)。這些SVMs通過 fine-tuning 取代了Softmax 分類器作為物體檢測器。在第三個訓練階段,邊界框(Bounding-box)回歸器被訓練學習。

  2,訓練在空間和時間上都很昂貴(expensive):對於SVM分類器和邊界框回歸器的訓練來說,所輸入的特征需要每一張圖的每一個候選區域中被提出(extract),並被寫入磁盤(disk)。對於非常深的網絡,比如VGG16,訓練VOC 2007的大約 5000張圖片的訓練集需要花費 2.5個GPU-days,這些特征需要數百GB的存儲空間(storage)。

  3,物體檢測速度很慢(slow):在測試時,特征從每一張測試圖片的每一個物體候選區域被提取出來。對於 VGG16網絡來說,檢測一張圖片花費 47s(在GPU上)。

  R-CNN 很慢的原因是對於圖片的每一個候選區域都執行一次前向傳播計算(提取特征的卷積層),沒有共享卷積計算(sharing computation)。SPP-net提出了共享計算去加速R-CNN算法。SPP-net方法對於一張完整的輸入圖片只計算一次卷積特征映射,然后從共享的特征映射提取每一個物體候選區域所對應的特征向量並做分類處理。對於每一個候選區域最大池化(max pooling)它的特征映射提取他的特征向量,輸出是固定的大小。匯聚多種不同大小的池化輸出,然后在空間金字塔池化層連接他們。SPP-net 在測試上是R-CNN的 10~100倍;在訓練時由於加快了候選區域的特征提取,訓練時間減少3倍。

  SPP-net 也存在很明顯的缺點。像R-CNN一樣,訓練是多階段流水線,包含特征提取,利用log損失(Softmax) fine-tuning 網絡,訓練 SVM分類器,最終擬合了邊界框回歸器。這些訓練所需提取的特征需要存入磁盤。但是和R-CNN不同的是,在SPP-net中的 fine-tuning 不同更新空間金字塔之前的池化層之前的卷積層。不足為奇,這種限制(固定的卷積層)限制了非常深的網絡(VGG16)的精度。

1.2  貢獻(Contributions)

  我們提出了一種新的訓練算法(algorithm),該算法在消除/修復(fix)R-CNN和SPP-net缺點的同時,還提高了他們速度和精度。我們把這種方法叫做Fast R-CNN,因為該方法在訓練和測試的時候還是比較快的。Fast R-CNN 方法的優點如下:

  (1)比R-CNN和SPP-net更高的檢測精度(mAP)

  (2)訓練是單階段的,使用多任務損失函數

  (3)訓練可以更新所有的網絡層參數

  (4)不需要磁盤去存儲大量提取的特征

  Fast R-CNN 算法是使用Python和C++(Caffe)來編寫實現的,他們可以在開源的 MIT license下獲得。

2,Fast R-CNN 的架構和訓練

  圖1說明了(illustrates)了Fast R-CNN 的架構。Fast R-CNN 網絡將一個完整的圖像和一組目標推薦區域作為輸入。該網絡首先通過幾個(幾組)卷積層和最大池化層處理輸入的整個圖像產生一個卷積特征映射(feature map)。然后,對於每一個目標推薦區域,使用感興趣區域(ROI)池化層從特征映射圖上提取固定維度的特征向量。每一個特征向量被輸入(fed into)到一系列全連接層中,最終得到了兩個同級的輸出:第一個輸出產生的是一個(K+1)類的Softmax概率估計(Probability estimates),它包括了K個目標類別和一個背景類;第二個層是對於K個目標類的每一個類別輸出4個實數值。K類目標的每一類的4個數字對邊界框的位置進行編碼,以獲得更精細(refine)的邊界框位置。  圖1,Fast R-CNN 架構,輸入圖片和多個感興趣區域 ROI 被輸入到全卷積網絡(這里指卷積網絡的前面的所有卷積層)。每個感興趣區域 ROI 被池化為固定尺寸的特征映射,然后通過全連接層映射到特征向量。網絡中的每個ROI有兩個輸出向量:Softmax概率和每個類別的檢測框回歸偏移量,該架構使用多任務損失函數實現了端到端的訓練。

2.1  ROI pooling層(感興趣區域池化層)

  ROI 池化層使用最大池化操作將任何有效的感興趣區域內的特征轉換為一個固定空間范圍 H*W(例如:7*7)較小的特征映射,其中H和W是獨立於任何特定(particular)的ROI區域的超參數(hyper-parameters)。在本文中,每一個 ROI 是被轉換為再卷積特征映射上的一個矩形窗口。每個RoI通過4元組(r,c,h,w)來定義,矩形左上角頂點(r,c),矩形的高和寬是(h,w)。

   感興趣區域最大池化的作用是通過尺寸大約(approximate) h/H * w/W 的子窗口將 h*w 的 ROI窗口划分(dividing)為 H*W 的網格(grid cell),然后將每個子窗口中的值最大池化到相應的輸出網格單元。赤化操作是標准的最大池化,它獨立的作用於特征映射的每一個通道(池化是不跨通道的)。RoI層是SPPNet網絡中的空間金字塔池化層的一個簡單的特例,它是只有一個尺度的金字塔層。我們使用文獻[11](這里就是何愷明的SPPNet)中給出的池化窗口進行計算。

2.2 從預訓練(pre-trained)的網絡初始化

  我們的實驗采用了三種在 ImageNet 數據集上預訓練的網絡,每一個網絡擁有5個最大池化層和5~13個卷積層(可查看4.1節獲取詳細網絡結構)。當一個預訓練的網絡初始化 Fast R-CNN 網絡時,它經歷(undergoes)三次轉換(transformations)。

  首先,最后一個最大池化層被ROI池化層所取代,該ROI池化層通過設置合理H和W實現了與第一個全連接層兼容性配置(例如,H=W=7,對於VGG16)。

  其次,網絡的最后的全連接層和Softmax層(被訓練1000個類別在ImageNet分類數據集上)被兩個同級並列的層所取代(一個是K+1個類別的Softmax分類層,另一個是指定類別的邊界框回歸偏移量)。

  第三,網絡被修改為兩種數據輸入:一個是圖像列表,另一個是這些圖像的ROI列表。

2.3  微調網絡用於目標檢測

  對於Fast R-CNN來說,使用反向傳播算法(back-propagation)訓練網絡的所有權重是一個很重要的功能。首先,讓我們闡述一下為什么SPP-net不能去更新空間金字塔池化層之下的卷積層權重。

  根本的原因在於當每一個訓練樣本(即ROI)來自於不同的圖像時,通過SPP層的反向傳播的效率是很低的,這正是R-CNN和SPP-net網絡的訓練方式。這種效率低下來源於(stems from)每一個感興趣區域ROI可能有一個非常大的感受野(receptive field),通常跨越(spanning)整個輸入圖像。由於前向傳播過程必須處理整個感受野,因此訓練需要的輸入很大(通常是整幅圖像)。

  我們提出了一種更加有效的訓練方法,它在訓練期間利用特征共享。在FastR-CNN訓練時,隨機梯度下降(SGD)的小批量(mini-batches)采用分層抽樣,首先采樣N個圖像,然后對於每一張圖像采樣R/N個ROI區域。更重要的是,來源於同一張圖像的所有ROI區域在前向傳播和反向傳播過程中共享計算和內存。這樣使得較小的N會減少 mini-batches的計算量。例如,當使用N=2,R=128,這個提出(propose)的訓練方案(scheme)比來自128張的一個ROI區域(即R-CNN和SPP-net的訓練策略strategy)快了大約(roughly)64倍。

  對於這種策略(strategy)的一個擔憂是它可能導致訓練時的收斂(convergence)速度減緩,因為來自於同一張圖像的ROI區域是相關的(Correlated)。這種擔憂在實際問題中並沒出現,我們使用了比R-CNN更少的迭代步數,采用N=2,R=128這種策略反而取得了更好的效果。

  除了分層抽樣之外,Fast R-CNN 使用一個階段的微調同時優化Softmax分類器和邊界框回歸器來簡化的訓練過程,而不是三個單獨的極端訓練Softmax分類器,SVM,回歸器(像R-CNN和SPP-net中那樣)。該程序(procedure)的組成部分(損失,小批量采樣策略,ROI池化層的方向傳播,SGD超參)如下圖所示。

  Multi-task loss(多任務損失):Fast R-CNN網絡有兩個同級(Sibling)並列的輸出層,第一個輸出層是一個離散的概率分布(對於每一個ROI區域),P = (p0, p1, .... pk),包含有 K+1 個類別。通常 P 是由全連接層 k+1 個輸出上的 softmax計算得到的。第二個同級的輸出層是邊界框回歸偏移量(offsets),對於每個k對象類,有 tk = (tkx,tky,tkw,tkh),索引是K。我們使用了文獻[9](本文作者的另一篇文章)中給出的  t的參數化,其中 t指定相對於目標推薦區域的尺度不變的平移和對數空間的高度,寬度的偏移。

   每個訓練的ROI區域都標注有完全真實的類(ground-truth class)u 和完全真實的邊界框(ground-truth bounding-box)回歸目標 v。我們對於每一個標注的 ROI區域使用多任務損失函數 L 來聯合訓練分類和邊界框回歸:

 L(p,u,tu,v)= Lcls(p,u)+ λ * [u >= 1] * Lloc(tu,v)          (1)     

  這里, Lcls(p,u) = -logpu,表示對真實類的對數損失(也就是交叉熵損失)。

  第二個任務損失 Lloc 是針對類 u 和 v = (vx,vy,vw,vh)的真實邊界框回歸目標的元組定義的,並且預測的元組 tu = (tux,tuy,tuw,tuh),還是針對u類別。當u>1時,中括號的指示器函數 [u >= 1]的計算結果為1,否則為0。對於背景 ROI 區域沒有完全真實的邊界框的概念(notion)。因此(hence)Lloc  被忽略(ignored)。對於邊界框回歸,我們使用如下的損失函數:

  Lloc(tu,v)= ∑ i=(x,y,w,h) smoothL1(tui,vi)                              (2)

   這里,

  smoothL1(x) = {0.5 * x^2,if |x| < 1|x| - 0.5,if |x| >=1}                (3)

  它是一種強大(robust)的L1損失,對於異常值的敏感度要低於R-CNN和SPP-net中使用的 L2損失。當回歸目標無限制時,L2損失訓練可能需要仔細的調整學習率以防止梯度爆炸。式子3消除了這種敏感性。

  在方差1中的超參數 λ 控制兩個任務損失之間的平衡。我們將真實的回歸目標  vi  標准化為零均值和單位方差。所有實驗都使用 λ=1。

  我們注意到文獻[6]使用相關的損失來訓練一個與類無關的區域建議網絡。與我們的方法不同,它提出了一種雙網絡的系統,它將定位與分類分開。OverFeat、R-CNN和SPPNet也訓練分類器和邊界框定位器,但是這些方法使用階段式訓練,我們將在5.1節展示它們對於Fast R-CNN來說是次優的。

   Mini-batch sampling(小批量抽樣):在微調(fine-tuning)期間,每個SGD的mini-batch 是由 N=2個圖像構成(construct),隨機選擇單一形式(通常的做法是,我們實際上只對數據的排列進行了調整)。我們使用的mini-batch 的尺寸為 R=128,每一個圖像采樣了 64個 ROI區域。與文獻【9】中一樣,我們從目標推薦區域中選擇 25%的推薦區域和真正邊界框交並比(IOU)大於 0.5 的區域。這些ROI區域包括用前景對象類標記的示例(類別指示函數),例如:【u >= 1】。剩余的 ROI區域從和真實邊界框交並比在 [0.1,  0.5]的推薦區域中采樣,參考文獻【11】。這些是背景示例,並標記 u=0。0.1的下限閾值似乎充當了困難實例挖掘的啟發式算法【8】。在訓練期間,圖像以 0.5 的概率進行水平翻轉,沒有使用其他的數據增強方法。

  通過 ROI 池化層的反向傳播(Back-propagration through ROI  pooling layers):通過ROI池化層的反向傳播的導出路徑。為了清楚起見(for clarity),我們假設每個 mini-batch 僅僅有一張圖片,即N=1,但是擴展到 N>1 是顯而易見的(straightforward),因為對於所有的圖片的前向傳播過程都是獨立的。

  令 xi 屬於 R;為進入ROI池化層的第 i 個激活輸入,並讓 Yrj 為第 r 層 ROI的第j個輸出。ROI池化層計算 yri = xi*(r, j),其中 i*(r, j)=argmaxi' 屬於 R(r, j)xi',R(i, j) 是子窗口中輸入單 yrj 最大池化層的輸入索引集。單個 xi 可以分配給幾個不同的輸出 Yrj。

    ROI 池化層的方向函數通過遵循 argmax開關計算損失函數相對於每個輸入變量 xi 的偏導數:

   換言之,對於每個小批量 ROI r 和每個合並輸出單元 Yrj,如果 i 是通過最大合並為 Yrj 選擇的 argmax,則偏導數 就會累積。再反向傳播中,偏導數已經由頂部的 ROI池化層的反向函數計算。

  SGD 超參數(SGD hyper-paeameters):全連接層被用來做Softmax分類和Bounding box回歸,他們的權重初始化分別(respectively)采用具有標准差為 0.01 和 0.001 的零均值高斯分布,偏差(biases)被初始化為0。對於所有的層來說,每一層權重的學習率為1,偏差的學習率為2,全局學習率為 0.001。在訓練集VOC2007 或者 VOC 2012上訓練時,我們運行 SGD 進行 30K 次的小批量迭代,然后將學習率降低到 0.0001並進行另外 10K次迭代訓練。當我們在更大的數據集上訓練時,我們運行SGD以進行更多的迭代,如稍后所示。使用0.9 的動量和 0.0005的參數衰減(關於權重和偏差)。

2.4  Scale invariance(尺度不變性)

  我們探索了在物體檢測中兩種實現尺度不變的方法:(1)通過“強力”學習。(2)通過使用圖像金字塔。這些策略遵循了文獻【11】(SPP-net)中的兩個方法。對於蠻力方法,在訓練和測試期間以預定義的像素大小處理每個圖像。網絡必須從訓練數據中學習尺度不變的物體檢測。

  相反,多尺度方法通過圖像金字塔為網絡提供近似的尺度不變性。在測試時,圖像金字塔用於近似的縮放規范化每個建議區域。在多尺度訓練期間,我們在每次采用圖像時隨機采樣金字塔尺度【11】,作為數據增強的一種形式。由於GPU內存限制,我們僅針對較小的網絡進行多尺度訓練。

  在分類回歸階段,在R-CNN中,先生成候選框,然后再通過CNN提取特征,之后再用SVM分類,最后再做回歸得到具體位置(bbox regression)。而在Fast R-CNN中,作者巧妙的把最后的 bbox regression 也放進了神經網絡內部,與區域分類合並成為了一個 multi-task 模型,如下圖所示:

   實驗表明,這兩個任務能夠共享卷積特征,並且相互促進。

  Fast R-CNN 很重要的一個貢獻是成功地讓人們看到了Region Proposal + CNN(候選區域 + 卷積神經網絡)這一框架實時檢測的希望,原來多類檢測真的可以在保證准確率的同時提升處理速度。

3,Fast R-CNN檢測

   一旦Fast R-CNN 網絡被微調完畢,檢測相當於運行前向傳播(假設候選框是預先計算的),網絡將圖像(或圖像金字塔,編碼為圖像列表)和待計算概率的候選框的列表作為輸入。在測試的時候,通常在2000左右,雖然我們考慮將它變大(大約45K)的情況。當使用圖像金字塔時,每個ROI被縮放,使其最接近224*224個像素。

  對於每個測試 ROI r,前向傳遞輸出概率分布 p 和一組相對於 r 的預測邊界框偏移量(每個K類獲得其自己的邊界框預測)。我們使用后驗概率 p 為每個 r 估計每K類的檢測置信度。然后,我們使用 R-CNN的算法和設置,為每個類獨立地執行非極大值抑制。

3.1  Truncated SVD 加快檢測速度

   對於整個圖像分類,與conv層相比,計算全連接層所花費的時間較少。相反,檢測時需要處理的 ROI的數量很大,並且將近一半的時間用於計算完全連接層(參見圖2)。通過SVD壓縮他們可以很容易的節省時間。

  通過這種技術,層的 u*v 權重矩陣 W 通過SVD被近似的分解為

   在這種因式分解中,在這種因式分解中,U是由W的第一個左奇異向量組成的U×t矩陣,∑t是包含W的前t個奇異值的t×t對角矩陣,V是包含W的第一個t右奇異向量的V×t矩陣。截斷SVD將參數計數從uv減少到t(U+V),如果t比min(u,v)小得多,這一點可能很重要。為了壓縮網絡,將對應於W的單個全連接層替換為兩個完全連接的層,它們之間沒有非線性。第一層使用權重矩陣∑tVT(無偏差),第二層使用U(原始偏差與W相關)。這種簡單的壓縮方法在roi數目很大的情況下具有很好的加速效果。

4,主要結果

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

  1,VOC 2007,2010, 2012 的最高mAP

  2,相比如R-CNN,SPP-net,快速訓練和測試

  3,在VGG16中微調卷積層改善了mAP

4.1  實驗配置

  我們的實驗使用了三個經過預訓練的ImageNet網絡模型,這些模型可以在線獲得(https://github.com/BVLC/caffe/wiki/Model-Zoo)。第一個是來自R-CNN的CaffeNet(實質上是AlexNet)。 我們將這個CaffeNet稱為模型S,即小模型。第二網絡是來自的VGG_CNN_M_1024,其具有與S相同的深度,但是更寬。 我們把這個網絡模型稱為M,即中等模型。最后一個網絡是來自的非常深的VGG16模型。由於這個模型是最大的,我們稱之為L。在本節中,所有實驗都使用單尺度訓練和測試

4.2  VOC 2010 和 2012 的結果

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

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

4.3  VOC 2007 結果

  在 VOC 2007數據集上,我們比較 Fast R-CNN與RCNN和SPP-net的mAP。所有方法從相同的預訓練VGG16網絡開始,並使用邊界框回歸。VGG16 SPP-net結果由【11】的作者提供。SPP-net在訓練和測試期間使用了五個尺度。Fast R-CNN 對SPP-net的改進說明,即使Fast  R-CNN 使用單個尺度訓練和測試,卷積層微調在 PASCAL中沒有使用被標記為“困難”的樣本進行訓練。除去這些樣本,Fast R-CNN 的 mAP 為 68.1%,所有其他實驗都使用標記為“困難”的樣本。

4.4  訓練和測試時間

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

  截斷的SVD:截斷的 SVD可以將檢測時間減少 30%以上,同時在mAP中只有很小(0.3個百分點)的下降,並且無需在模型壓縮后執行額外的微調。圖2顯示出了如何來自VGG16的fc層中的矩陣的頂部 1024個奇異值和來自fc層的矩陣的頂部 256個奇異值減少運行時間,而在mAP中幾乎沒有損失。如果壓縮之后再次微調,則可以在mAP中具有更小的下降的情況下進一步加速。

4.5  微調哪些層?

  對於在SPP-net論文中考慮的不太深的網絡,僅微調全連接層似乎足以獲得良好的精度。我們假設這個結果不適用於非常深的網絡,為了驗證微調卷積層對於VGG16的重要性,我們使用 Fast R-CNN微調,但凍結13個卷積層,以便只有全連接層學習。這種消融模擬單尺度SPP-net訓練,將mAP從 66.9%降低到 61.4%(表5)。這個實驗驗證了我們的假設:通過 ROI 池化層的訓練對於非常深的網絡是很重要的。

  這是否意味着所有卷積層應該微調?簡而言之,沒有。在較小的網絡(S和M)中,我們發現conv1(第一個卷積層)是通用的和任務獨立的(一個眾所周知的事實)。允許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,最后一列)。所有 FastR-CNN在本文中結果都實用VGG16微調層conv3_1及以上的層,所有實驗用模型S和M微調層conv2及其以上的層。

5,設計評估

  我們通過實驗來了解 Fast RCNN與 R-CNN和SPP-net的比較,以及評估設計決策。按照最佳實踐,我們在PASCAL VOC 2007數據集上進行了這些實驗。

5.1  多任務訓練有用嗎?

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

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

  在所有三個網絡中,我們觀察到多任務訓練相對於單獨的分類訓練提高了純分類精度。改進范圍從 +0.8 到 +1.1 個mAP點,顯示了多任務學習的一致的積極效果。

  最后,我們采用基線模型(僅使用分類損失進行訓練),加上檢測回歸層,並使用訓練他們,同時保持所有其他網絡參數凍結。每組中的第三列顯示了這種逐級訓練方案的結果:mAP相對於第一列改進,但逐級訓練表現不如多任務訓練(每組第四列)

5.2  尺度不變性:暴力或精細?

   我們比較了實現尺度不變的物體檢測的兩種策略:蠻力學習(單尺度)和圖像金字塔(多尺度)。無論哪種情況,我們都將圖像的比例尺s定義為其最短邊的長度。

  所有單尺度實驗都使用 s=600像素;對於某些圖像,s可能小於 600,因為我們將最長的圖像邊上限為1000像素,並保持圖像的長寬比。選擇這些值是為了使VGG16在微調起見適合GPU內存。較小的模型不受內存限制。可以受益於更大的 s 值;但是,為每個模型優化並不是我們主要關心的問題。我們注意到,PASCAL圖像的平均大小為 384*473 像素,因此單比例設置通常會將圖像上采樣率提高 1.6倍。因此,ROI池化的平均有效步長約為10個像素。

  在多標度設置中,我們使用【11】中指定的相同的五個標度(s∈{480,576,688,864,1200})便於與SPP-net進行比較。但是,我們將最長邊的上限設置為 2000 像素,以避免超出  GPU內存。

  表7顯示了使用一或五個量表訓練和測試的模型S和M。也許【11】中最令人驚訝的結果是單標度檢測的性能幾乎與多標度檢測相同。我們的發現證明了他們的結果:深度ConvNets擅長直接學習規模不變性。多尺度方法僅以很小的計算量就提供了mAP的增加(表7)。在VGG16(型號L)的情況下,根據實現細節,我們只能使用單一比例。然而,即使R-CNN使用“無限”標度,因為每個提案都扭曲為規范大小,它的mAP達到了 66.9%,略高於R-CNN報道的 66.0%。

  由於單標度處理在速度和精度之間提供了最佳折衷,特別是對於非常深的模型,本小姐以外的所有實驗使用單尺度訓練和測試 s = 600像素。

 5.3  我們需要更多訓練數據嗎?

   當提供更多的額訓練數據時,好的目標檢測器應該會得到改善。Zhu等人發現DPM mAP在只有幾百到千個訓練樣本的時候就飽和了。在這里我們增加 VOC 2007 trainval訓練集 與 VOC 2012 trainval訓練集,大約增加到3倍的圖像,數量達到了 16.5k,以評估Fast R-CNN。擴大訓練集提高了 VOC 2007測試的 mAP,從 66.9%到70.0%(表1)。當對這個數據集進行訓練時,我們使用 60k次小批量迭代而不是 40k。

  我們對 VOC 2010 和 2012進行類似的實驗,我們用 VOC 2007 trainval,test和 VOC 2012 trainval構造了 21.5K圖像的數據集。當訓練這個數據集時,我們使用 100k次SGD迭代和每 40k 次迭代(而不是 30k次)降低學習率10倍。對於 VOC2010 和 2012,mAP分別從 66.1%提高到68.8%和從 65.7%提高到 68.4%。

5.4  SVM 是否勝過 Softmax?

  Fast R-CNN 使用在微調過程中學習到的Softmax分類器,而不是像 R-CNN和SPP-net那樣事后訓練一對一的線性SVM。為了了解此選擇的影響,我們在Fast R-CNN中實施了具有難負采樣重訓練的SVM訓練。我們使用與R-CNN中相同的訓練算法和超參數。

   表8顯示了所有三個網絡中的 Softmax略勝於SVM,提高了 +0.1 到+0.8 個mAP點。這種效果很小,但是它表明與先前的多級訓練方法相比,“一次性”微調是足夠的。我們注意到,Softmax不像SVM那樣,在分類 ROI 時引入類之間的競爭。

   存在(廣義的)兩種類型的目標檢測器:使用候選區域的稀疏集合(例如,選擇性搜索)和使用密集集合(例如DPM)。分類稀疏提議是級聯的一種類型,其中提議機制首先拒絕大量候選者,讓分類器來評估留下的小集合。當應用於DPM檢測時,該級聯提高了檢測精度。我們發現提案分類器級聯也提高了 Fast R-CNN的精度。

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

   我們發現mAP上升,然后隨着候選框區域計數增加而略微下降(圖3,實線藍線)。這個實驗表明,用更多的候選區域沒有幫助,甚至稍微有點傷害准確度。

  如果不實際運行實驗,這個結果很難預測。用於測量候選區域質量的最先進的技術是平均召回率(AR)。當對每個圖像使用固定數量的候選區域時,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個選擇性搜索框開始,我們在添加的隨機樣本密集框時測試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數據集,以建立初步基線。我們對 80K圖像訓練集進行了 240K迭代訓練,並使用評估服務器對“test-dev”集進行評估。PASCAL標准下的mAP為 35.9%。新的COCO標准下的mAP也達到了IOU閾值的平均值,為 19.7%

6,總結

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

 


免責聲明!

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



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