讀古今文學網 > 刷臉背後:人臉檢測 人臉識別 人臉檢索 > 5.2 Fast R-CNN的特點和結構 >

5.2 Fast R-CNN的特點和結構

在Fast R-CNN提出以前,基於卷積神經網絡的R-CNN和SPPnet有著很高的目標檢測準確率,但是它們仍存在一些缺點和不足。

R-CNN的缺點:(1)R-CNN的訓練是多階段的,首先通過selective search方法[5]提取object proposal,然後使用CNN網絡提出特徵,並在SVM中分類,最後對邊界框回歸。(2)R-CNN訓練的時間和空間花費大,使用VGG16網絡在GPU上訓練5000張圖片需要耗時2.5天,並且在訓練過程中提取的特徵需要佔用大量的磁盤存儲空間。(3)R-CNN檢測時間慢,使用VGG16網絡在GPU上檢測一張圖片需要47s。

和R-CNN相比,SPPnet提出了特徵共享計算,從而加快了訓練和測試的速度。但其仍存在一些缺點:(1)訓練是多階段的。(2)特徵需要寫入磁盤。(3)不能更新卷積層的權重。

Fast R-CNN算法彌補了R-CNN和SPPnet的缺點。它的訓練過程是單階段的。在訓練時,特徵緩存不需要寫進磁盤,並且使用向後傳播的方法更新卷積層的權重。圖5-1所示是Fast R-CNN的結構。Fast R-CNN的網絡輸入為一張圖片和對應的object proposal集,網絡使用幾個卷積網絡和最大pooling層對整個圖像進行處理,從而產生卷積特徵map。對於每個OP,使用ROI pooling層從特徵map中提取固定長度的特徵向量,最後這些特徵向量通過一系列全連接層的處理後產生兩個輸出層:一個是softmax probability;另一個是邊界框回歸偏移。Fast R-CNN不僅提高了訓練和測試的速度,而且也增加了檢測的準確性。

使用預訓練的網絡初始化一個Fast R-CNN網絡需要進行如下操作。

(1)最後一個max pooling層被ROI pooling層替換。

(2)最後的全連接層和softmax被兩個輸出層替換。

(3)修改網絡的輸入為:一個圖片列表和圖片對應的ROIs列表。

本書使用ImageNet預訓練的網絡初始化一個側臉人臉檢測模型,下面結合Fast R-CNN的源碼進行介紹。

圖5-1 Fast R-CNN的結構