彭棉珠
仰恩大學,福建 泉州 362014
圖像目標檢測技術是計算機視覺信息處理的基本問題,也是行為理解、場景分類等其他龐大視覺研究的基石[1]。圖像目標檢測技術一般使用圖像處理和模式識別等相關技術來處理圖像,從每張圖像中去除掉復雜的背景,檢測出與任務相近的目標,以及識別出這些目標的語義信息,并標定出目標在圖像所處的位置[2]。圖像目標檢測作為計算機視覺領域的一個研究方向,其檢測精確度的優劣、檢驗功能的高低,對目標檢測追蹤、動作判別以及行為語義分析等計算機視覺任務有著相當大的影響[3,4]。同時,作為計算機視覺重要的一部分,圖像目標檢測也存在著很多難題,一直是該領域的研究熱點[5]。基于卷積神經網絡的圖像目標檢測方法,就其提取到的圖像特征具有很強的特征表達能力[6]。隨著深度學習技術日新月異的發展與突破,基于深度學習的目標檢測算法在各個方面會取得不斷的突破[7]。
R-CNN算法在圖片中提議出一群候選框代替大量區域,并檢查這些候選框是否包含一些目標,在R-CNN中使用選擇性搜索算法(Selective Search)從圖片中提議這些區域。使用微調后的CNN網絡模型,去提取每個圖片中的特征向量。再使用經過訓練后的SVM(支持向量機)對每個區域進行分類,且使用邊界框回歸器來矯正定位錯誤的檢測區域,使得檢測精確度得到相應的提升。RCNN檢測目標所遵循的步驟,整體流程圖如圖1所示:(1)首先,將一張圖像作為輸入;(2)然后,使用一個提議方法,在R-CNN中使用Selective Search(選擇性搜索)去獲得感興趣區域(Regions of Interest),提取大約2 000個區域。(3)根據CNN的輸入尺寸大小要求重塑所有這些區域的形狀大小,然后將每個區域(Region)傳遞到卷積神經網絡中(ConvNet)。(4)CNN提取每個區域的特征,并且使用SVM(支持向量機)將這些區域劃分為不同的類別。(5)最后,使用邊界框回歸預測接近真實區域的邊界框。

圖1 R-CNN整體流程圖
在Fast R-CNN中,將輸入圖像輸送給CNN,會依次產生卷積特征映射,使用這些映射提取區域建議。然后,使用一個RoI池層(RoI pooling layer)去重塑所有被提議區域的形狀為一個固定的大小,以至于它能夠輸送到全連接網絡。如圖2所示,Fast R-CNN算法實現步驟:(1)首先,和以往一樣把一個圖片作為輸入;(2)這張圖片是被傳遞到一個ConvNet(卷積網絡)中依次產生感興趣區域;(3)通過應用一個RoI池化層來重塑所有這些區域的形狀且將它們作為全連接的輸入數據,緊接著每個區域被傳遞到全連接網絡;(4)最后,傳遞這些區域到全連接層網絡,使用softmax函數對它們進行分類,并且同時使用線性回歸層返回邊界框。

圖2 Fast R-CNN整體流程圖
在Fast R-CNN中,RoI池化層作用在最后一層卷積層,在大尺度目標的檢測中表現較好。但是,小目標檢測的有效性并不令人滿意。特征金字塔網絡(FPN)是基于金字塔概念而設計的一種特征提取器,具有精度高、速度快的特點。特征金字塔應用到Fast R-CNN中。整體流程如圖3,在Fast R-CNN中非常重要的是RoI池化層,它需要不同層的金字塔構建不同尺度的區域。RoI池化層使用區域提出的結果和中間的某個特征圖作為輸入,將獲得的結果分開并用于分類結果和相應的邊界框回歸。不同標度的感興趣區域使用不同特征層作為RoI池化層的輸入。大尺度的區域使用后面的金字塔層。最后添上分類器和邊框回歸,有助于加快速度。

圖3 應用FPN的Fast R-CNN流程圖
MS COCO數據集是微軟于2014年發布的大型數據集。COCO中的圖片包括自然圖片以及生活圖片,共包含91個類別,5.4萬幅圖像和250多萬個標注物體。本文從MS COCO數據集選取5個類別圖像(分別為人物、汽車、自行車、飛機和火車),每個類別選取15張圖片作為研究對象,分別使用R-CNN、Fast R-CNN和Fast R-CNN(FPN)目標檢測方法對COCO數據集來進行檢測。為了測試三種算法的檢測效果,分別使用損失函數、準確率和耗時性進行論證。其中,損失函數用于評估模型的預測值f(x)與真實值Y的不一致程度,損失函數越小算法的魯棒性越好;準確性則是用于衡量識別準確目標數占測試樣本總目標數的百分比;而耗時性則充分說明算法的訓練與檢測過程的運行速度[8]。
圖4為三種算法的損失函數。相較于R-CNN,只需訓練一個模型去提取特征、分類和生成邊界框。模型訓練的整個損失函數,隨著訓練次數的疊加,損失函數的值也隨之降低,模型訓練的效果表現很好。而Fast R-CNN和FPN算法隨著訓練次數的增加,損失函數也會緩慢下降,模型的強度也會更好。FPN對于小目標的特征提取,在經過多次卷積池化后能夠獲取相應的語義信息,使得模型更容易判定圖像中的小目標,也更能定位出準確的位置。

圖4 算法的損失函數運行結果
選取測試集中5個類別,每個類別選取了15張圖片進行模型的驗證。三個算法都選用同樣的測試集進行測試,每個算法的閾值都設置在0.3-0.5的范圍內。如表1所示,通過測試15張圖片目標物,用識別出圖片中目標數占總檢測目標數的百分比代表各個算法的準確率。通過準確率的結果發現Fast R-CNN比R-CNN不僅計算時間提升了,而且準確度都提升3%-6%。但是,這兩個算法對于小目標的檢測精度不是特別高。如圖5,存在四個人(分別為小女孩、小男孩、紅衣女士以及遠處打網球的男士),而結果只準確標出了三個人的區域,標注的區域更接近真實區域,并且也準確識別出三個人。第四個人由于區域過于小,在多次卷積后很難獲得豐富的特征信息,這也就導致無法識別出目標。當使用FPN為Fast R-CNN的特征提取,不僅增加大目標的識別準確度,而且增加了小目標的準確度直至12%。實驗結果(圖6)可見,很小的目標能夠更好的檢測出來。主要是FPN生成了多特征映射層,具有比常規圖像金字塔更好的目標檢測信息質量。

圖5 Fast R-CNN和R-CNN的測試結果

圖6 Fast R-CNN(FPN)的測試結果

表1 三種算法檢測結果的準確率(%)
對三種算法進行耗時性能分析,分別記錄15幅圖像在訓練與預測階段電腦CPU運行時間,結果以平均值表示。如表2所示,R-CNN算法在訓練圖片階段,每張圖像需要搜索算法提取2 000個區域;訓練約8個小時,每個新的圖像預測大約40秒,這個模型顯得很笨重。而當面對龐大的數據集時,其構造并不好。而Fast R-CNN算法只需要通過ConvNet(卷積網絡)對每個圖像進行一次訓練,和R-CNN相比,提升了計算時間,訓練時間為2小時,對于每張圖片使用大約3秒的時間去檢測目標。將FPN應用到Fast R-CNN中,能夠檢測到多尺度的目標。但是需要進行由上而下路徑檢測和訓練,所以整個訓練時間比Fast R-CNN較長,為3個小時,每張圖像的檢測時間為1秒。

表2 三種算法的耗時性能
本文總結R-CNN、Fast R-CNN和FPN等目標檢測方法,并應用于COCO數據集(5個圖像類別)下,分別對三種算法進行損失函數、準確率與耗時性進行分析。通過實驗驗證了FPN算法在小目標物檢測的可行性與有效性。原因是FPN(特征金字塔)對CNN的特征提取器進行改造,生成了多特征映射層(多尺度特征圖),具有比常規圖像金字塔更好的目標檢測信息質量,提升對小目標的檢測效果。但從整體準確率與耗時性能上看,三種算法的準確率均低于80%,在圖片訓練時間上耗時較長。