目標檢測 Fast R-CNN 論文筆記

目標檢測 Fast R-CNN 論文筆記


摘要

  • 此篇文章是 Ross Girshick 大牛在微軟研究所單擼出來的一篇文章。基於14年 R-CNN 的大獲成功,作者提出了其改進算法 Fast R-CNN 。Fast R-CNN 在VGG16 network下訓練速度比R-CNN快了9倍,測試時間更是縮短了213倍,不僅如此,mAP也達到了最高水平。作者也在github上傳了源碼,可以點此下載

簡介

  • 對R-CNN尚不瞭解的同學可以看看這裏。簡而言之,R-CNN實現的分成這麼四步:
    • 利用 selective research 在一張圖像中選出2000個候選框(即可能存在目標的區域);
    • 將每個候選框 warp 成固定大小的圖像(例如227*227),送入CNN提取4096維的 feature map;
    • 對於這2000個 feature map ,利用SVM分類器進行分類,判斷它是屬於某個特定類還是背景;
    • 使用迴歸器進一步調整邊界框的位置。
  • 作者認爲目標檢測的高複雜度源於兩個問題:一是無數的候選框都要被運行一次,以判定其類別;二是這些候選框只提供了一個大致位置,後期還需要細調。
  • 傳統的R-CNN已經做得很好了,但還是存在幾個問題:
    • 訓練是一個多階段過程。R-CNN的訓練分成三步(和實現不一樣!),先訓練CNN網絡,再訓練SVM,再訓練邊界框迴歸。這樣實在有點複雜;
    • 訓練耗時又耗空間。 在諸如VGG16的深度網絡下,程序可能要花幾天來訓練,生成的特徵圖也多達幾百G;
    • 目標檢測速度慢。如果使用VGG16,在GPU下一張圖需要47秒來檢測。
  • 之後有人提出 SPPnet 來改進R-CNN的速度。一張圖片通過CNN**只生成一個公用的feature map**,而不是每個候選框都生成一個。然而,SPPnet的缺點還是很明顯。
  • 基於R-CNN和SPPnet的缺點,作者再次提出了Fast R-CNN,它具有如下優點:
    • 更高的mAP;
    • 訓練只有一個階段,且使用multi-task loss;
    • 訓練可以更新所有的網絡層;
    • 不需要硬盤來緩存特徵圖。

網絡結構和訓練策略

  • 論文中給出的網絡結構圖如下圖。首先,網絡的輸入有兩個:原始圖像和候選區域(region of interest, ROI)。首先,卷積網絡對整張圖像提取出提取出feature map;接着,每個ROI都通過生成的這feature map提取出一段特徵向量,且通過ROI pllling層框定尺寸;最後,每個特徵向量通過全連接層(FC)輸出兩個內容:softmax分類邊界框
    image_1bdg1p1co1fnr1iin1ldg46gcd9.png-183kB

ROI pooling

  • ROI pooling是本文章中的一個重點,它實現的功能是將任意大小的矩形區域通過池化轉變爲統一的尺寸。在此借用 shenxiaolu1984大神博客 的示意圖。可以看見,假如輸出固定尺寸是H * W,則上一層的任何一個矩形框ROI都被平均分割爲H * W個小塊,每個小塊進行一次max pooling操作,選出小塊中的最大值。
    此處輸入圖片的描述

多任務損失

  • 由網絡結構可知,輸出有softmax分類邊界框兩個。作者設定了一個multi-task損失來衡量兩個輸出和真實值的差異。損失函數如下表式:
    L(p,u,tu,v)=Lcls(p,u)+λLloc(tu,v)
  • 其中,p是輸出的預測分類,u是真實分類;tu 是一個長度爲4的數組,代表預測的邊界框位置,v是真實的邊界框位置,λ 是正則項,一般設爲1。
    • 第一個類別損失就是我們熟知的softmax迴歸器:Lcls(p,u)=log(pu)
    • 第二個邊界框損失的定義爲:Lloc(tu,v)=ix,y,w,hsmoothL1(tuivi)
      其中image_1bdg4f1fqs8h1c4ic06d001ru3t.png-11.5kB
    • 由於背景的特殊性,當u爲背景時,λ 被設爲0,否則爲1

batch 採樣策略

  • 既然採用了隨機梯度下降算法(SGD),每次迭代都需要生成一定數量的batch。作者的方法是先隨機選擇兩張圖,每張圖裏採樣64個ROI。由於同一張圖裏的ROI正反向傳播參數相同,因此可以節省時間,同時也不會出現人們擔憂的收斂過慢的問題。
  • 另外,在這麼多ROI裏,前景的比例爲25%,背景的比例爲75%。前景的定義是IOU達到0.5以上。這樣做也考慮到了實際圖中前景和背景的比例。

尺度不變策略

  • 這一塊看的不是很明白,作者探索了兩種尺度不變的方法:“brute force” learning圖像金字塔

Fast R-CNN 檢測

  • 文章中這一塊看的也不太清楚,但這應該只是提速的方法。不看的話對整體理解並無大礙,所以先放在這裏了。

實驗結果和結論

  • 實驗結果就不多說了,肯定是比之前其他方法更快、更高、更強。下面只說一說作者通過實驗得出的一些結論:
    • 多任務訓練與單獨訓練分類相比,可以將mAP提高0.8-1.1左右;
    • 使用多尺度的圖像金字塔,對提高mAP基本沒有幫助;
    • 增加訓練數據,可以將mAP提高2%-3%左右;
    • 在FAST R-CNN中,使用softmax效果略好於SVM;
    • 更多的候選框不但沒有幫助,甚至會降低準確率;
發佈了32 篇原創文章 · 獲贊 46 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章