關於目標檢測RCNN(Fast-RCNN/Faster-RCNN)系列的理解

目前較爲成熟的目標檢測算法可總結如下:
在這裏插入圖片描述

RCNN(2014年)

RCNN是一個多階段訓練模型,包括生成候選區域,CNN微調,SVM分類訓練以及邊界框迴歸等多個步驟(Selective Research+CNN+SVM)。

整體流程

類似於滑動窗口思想,R-CNN 採用對區域進行識別的方案,具體是:
1、給定一張輸入圖片,從圖片中提取 2000 個類別獨立的候選區域。
2、對於每個區域利用 CNN 抽取一個固定長度的特徵向量。
3、再對每個區域利用 SVM 進行目標分類。
在這裏插入圖片描述

候選區域生成

利用基於區域推薦的Selective Search方法,在圖像中提取2000個候選區域。相較於之前的滑窗法(windows sliding)有很大的提升。

CNN提取特徵

RCNN的結構實際是5個卷積層、2個全連接層。輸入是Region Proposal計算的推薦區域的圖像,由於該CNN網絡輸入限定爲2000 x 227 x 227 x 3(RGB)的輸入,故在RCNN中將Region Proposal的推薦區域仿射變形到227 x 227的格式上,網絡輸出是2000 x 4096 x 1的特徵向量。
在這裏插入圖片描述

SVM分類

使用訓練過的對應類別的SVM給特徵向量中的每個類進行打分,每個類別對應一個二分類SVM,CNN輸出2000 x 4096,SVM輸出2000*N(N是數據集中目標的類別),然後爲了減少重複的bounding box,使用了非極大值抑制法:

如果一個區域的得分與大於它得分的區域有很大程度的交叉(intersection-overunion(IoU))根據score進行排序,把score最大的bounding box作爲選定的框,計算其餘bounding box與當前最大score與box的IoU,去除IoU大於設定的閾值的bounding box。然後重複上面的過程,直至候選bounding box爲空,然後再將score小於一定閾值的選定框刪除得到一類的結果。

bounding box迴歸

受DPM (Object detection with discriminatively trained part based models)的靈感,訓練一個線性迴歸模型,給定pool5層的特徵預測一個新的檢測窗口。


訓練細節

1、使用ILSCRC2012訓練集對CNN Alexnet模型進行預訓練 ;
2、使用Select Research對每張圖片上生成2000個左右的候選的區域(IoU>0.5的標記正樣本,IoU<0.5的標記負樣本),將候選框大小調整爲227*227大小 ;
3、將生成的候選區域送入預訓練完成的Alexnet網絡中進行微調,微調時使用SGD,並將學習率設置爲預訓練時的1/10;
4、微調完成後,在進行SVM之前需要重新定義正負樣本,其中IoU<0.3的爲背景負樣本,正樣本用GT box來表示 ;
5、將重新定義的候選框從Alexnet中得到4096維度的特徵向量,進行SVM訓練,爲每一個類別訓練一個二分類器;
6、線性迴歸模型迴歸邊界框


測試細節

1、測試集上的圖片使用SelectResearch生成2000個大小的候選區域,並調整到227*227大小;
2、使用CNN計算每個特徵圖的特徵向量;
3、使用多個SVM二分類器進行預測每個類的概率;
4、對每一類別執行NMS(非極大值抑制),保留該類別概率值較大的候選框,對保留的候選框進行邊界框迴歸。


優缺點

1、訓練時有多個任務,CNN微調,SVM分類器,邊界框迴歸等,且彼此之間存在聯繫,增加潛在範圍的誤差
2、訓練過程在時間和空間上時非常耗時和昂貴的
3、在測試時,物體檢測速度比較慢

論文中的一個觀點,就是當你缺乏大量的標註數據時,比較好的可行的手段是,進行神經網絡的遷移學習,採用在其他大型數據集訓練過後的神經網絡,然後在小規模特定的數據集中進行 fine-tune 微調。


Fast-RCNN(2015年)

Fast-RCNN解決了RCNN中的三個大問題:測試、訓練速度慢、需要空間大
在這裏插入圖片描述
原因及改進:

  • R-CNN中用CNN對每一個候選區域反覆提取特徵,而一張圖片的2000個候選區域之間有大量重疊部分,這一設定造成特徵提取操作浪費大量計算。

  • Fast R-CNN將整個圖像歸一化後直接送入CNN網絡,卷積層不進行候選區的特徵提取,而是在最後一個池化層加入候選區域座標信息,進行特徵提取的計算。

  • R-CNN中目標分類與候選框的迴歸是獨立的兩個操作,並且需要大量特徵作爲訓練樣本。

  • Fast R-CNN將目標分類與候選框迴歸統一到CNN網絡中來,不需要額外存儲特徵。

結果對比:
Fast R-CNN和R-CNN相比,訓練時間從84小時減少爲9.5小時,測試時間從47秒減少爲0.32秒。在PASCAL VOC 2007上的準確率相差無幾,約在66%-67%之間。

最大貢獻

  • 引入RoI池化層
  • 全連接層中目標分類與檢測框迴歸微調的統一

RoI池化層

不同於R-CNN多次對每個圖像提取特徵,Fast R-CNN使用特徵提取器(CNN)先提取整個圖像的特徵,然後將候選區域直接映射到特徵圖中(就是座標乘以原圖像與特徵圖比例)

(1)根據輸入image,將ROI映射到feature map對應位置;
(2)將映射後的區域劃分爲相同大小的sections(sections數量與輸出的維度相同);
(3)對每個sections進行max pooling操作;
在這裏插入圖片描述


特徵提取

首先將圖片用selective search得到2000個候選區域(region proposals)的座標信息。另一方面,直接將圖片歸一化到CNN需要的格式,整張圖片送入VGG,將第五層的普通池化層替換爲RoI池化層。圖片然後經過5層卷積操作後,得到一張特徵圖(feature maps),開始得到的座標信息通過一定的映射關係轉換爲對應特徵圖的座標,截取對應的候選區域,經過RoI層後提取到固定長度的特徵向量,送入全連接層。因爲 Fast-RCNN 不會重複提取特徵,因此它能顯著地減少處理時間。
在這裏插入圖片描述


目標分類與檢測框的迴歸

在R-CNN中的流程是先提proposal,然後CNN提取特徵,之後用SVM分類器,最後再做bbox regression進行候選框的微調。Fast R-CNN是將候選框目標分類與bbox regression並列放入全連接層,形成一個multi-task模型
在這裏插入圖片描述
損失函數如下:
在這裏插入圖片描述


測試細節

1、將任意大小的圖片送入CNN 網絡,得到圖片的特徵圖;
2、使用SelectResearch得到2000個左右的候選框,根據原圖像到特徵圖的映射關係,得到候選框在特徵圖上的位置;
3、將提取的特徵框送入ROI層得到固定大小的特徵向量;
4、將特徵向量分別送入兩個全連接層(使用SVD分解),得到迴歸框的位置和類別的概率;
5、根據得到的概率和位置進行非極大值抑制,得到概率較高的窗口


SVD全連接加速網絡

在實現時,相當於把一個全連接層拆分爲兩個全連接層,第一個全連接層不含偏置,第二個全連接層含偏置;實驗表明,SVD分解全連接層能使mAP只下降0.3%的情況下提升30%的速度,同時該方法也不必再執行額外的微調操作

在這裏插入圖片描述


參考部分:原文點擊這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章