陳光喜,蔡天任+,黃 勇,王佳鑫
(1.桂林電子科技大學 廣西圖像圖形智能處理重點實驗室,廣西 桂林 541004;2.廣州大學 廣東省數(shù)學教育軟件工程技術研究中心,廣東 廣州 510006)
目前行人檢測算法[1]大部分用的都是類似的流程。首先,提取圖像出的候選框。這個階段提取候選框的算法有滑動窗口策略、Selective Search[2]等,其中基于滑動窗口策略具有代表性的工作是Felzenszwalb P F等[3]提出的形變部位模型(deformable part model,DPM),這個方法能一定程度上克服部分遮擋的影響。其次,提取候選框集的描述特征過程。Piotr Dollár等提出積分通道特征(integral channel features,ICF),利用積分圖技術對圖像的各個特征通道進行快速的計算,并在文獻[4]中進一步提出了聚合通道特征(aggregate channel features,ACF)。特征的提取還可以利用卷積神經網絡[5,6](convolutional neural networks,CNN),通過特定的卷積核對特征進行多次卷積以獲取候選框集的深度特征。最后,判斷當前的候選框集合中是否包含行人,此階段也被稱為分類過程。基于深度學習——卷積神經網絡算法的目標檢測,典型的代表性的工作是R-CNN系列[7-9]的結合區(qū)域候選框(region proposal)和CNN分類的目標檢測框架。文獻[10]針對行人檢測對Faster R-CNN做出改進,提出了區(qū)域候選框網絡(region proposal network,RPN)與隨機森林(boosted forest,BF)結合的思想(RPN+BF)[10]用于行人檢測,并說明這個方法能有效地降低行人檢測的誤檢率。受到了這個思想的啟發(fā),提出一種基于結合聚合通道特征以及卷積神經網絡的行人檢測算法。首先使用聚合通道特征以及級聯(lián)AdaBoost分類器生成一個行人檢測的檢測器,這個檢測器具有盡可能多的行人檢測候選框,這能有效地提高進一步分類之后的行人檢測召回率,然后使用卷積神經網絡,提取檢測器中候選框內的深度特征,再利用支持向量機(support vector machine,SVM)進行再一次分類,檢測出圖像中行人的位置。實驗結果表明,在行人檢測中綜合表現(xiàn)上優(yōu)于目前主流的行人檢測算法,準確率與其它主流算法[3,4,10]相當,但召回率和F值較高,且能在GPU上并行計算,有效地減少了計算機計算的開銷。
為了盡可能多地檢測復雜環(huán)境下的行人,本文采用聚合通道特征和卷積神經網絡結合的方法來進行行人檢測。使用ACF算法盡可能多的提取出行人檢測候選框,訓練級聯(lián)AdaBoost分類器采用的正樣本(Positives)、模糊的負樣本(Hard negatives)以及負樣本(Negatives)比例為2∶1∶3,采用這樣的策略是為了通過此方法訓練AdaBoost分類器的檢測器能對每張圖像提取出盡可能多的行人候選框,以提高召回圖像中正樣本的數(shù)量,達到提高召回率的目的。此外,各類樣本比例的控制是為了ACF算法在使用該分類器時,不至于提取過多的包含負樣本的候選框以影響行人檢測的準確率,從而加大計算機所需的計算開銷。
為了提高行人檢測的召回率,采取融合LUV顏色通道、梯度幅值通道和梯度方向通道特征的方法,計算出圖像的聚合通道特征,盡可能多提取出不同大小、尺寸的可能包含行人的候選框集。為了加速提取候選框過程,本文采用快速特征金字塔的方法來加速聚合通道特征的提取。
1.1.1 快速特征金字塔
快速特征金字塔定義請參考文獻[11]。給定一幅輸入圖像I,s尺度下記為Is,維度記為hs×ws,R代表圖像尺度變化的計算函數(shù),即Is=R(I,s), 則在s尺度下圖像的通道特征為Cs=Ω(Is)。 計算通道特征的通用方法是忽略原始尺度下的通道特征,根據(jù)當前圖像的尺度來計算特征,即
Cs=Ω(Is)=Ω(R(I,s))
(1)
本文使用的是一種近似計算方法
Cs≈R(I,s)·s-λΩ
(2)
式中:λΩ是每個通道函數(shù)對應的系數(shù)。
定義特征fΩ(Is)為s尺度圖像通道的加權和
(3)
式中:Cs=Ω(R(I,s))。
則
(4)
令
(5)
再根據(jù)式(3)、式(5)得出
μs=s-λΩ+ε
(6)
則
log2μs=2αΩ-λΩlog2s
(7)
這樣就可得出λΩ。
建立快速特征金字塔的具體步驟為:
(1)首先創(chuàng)建圖像的多尺度圖像金字塔;
(3)每組的其它層則根據(jù)以下公式進行估計
Cs≈R(Cs′,s/s′)(s/s′)
(8)
1.1.2 候選框提取流程
行人候選框提取過程如圖1所示。首先采用快速特征金字塔算法,對輸入的圖像構建圖像金字塔,計算出聚合通道特征圖,再對聚合通道特征圖進行滑窗操作,獲取各個不同的檢測塊,然后再使用預先訓練好的AdaBoost分類器對這些檢測塊進行分類操作,得到盡可能多的可能包含行人的候選框的集合,然后再使用非極大值抑制算法(non-maximum suppression,NMS)[12]過濾掉大部分重疊的行人候選框,然后再對這些行人候選框進行統(tǒng)一化操作,使這些行人檢測候選框的大小、尺寸成同一規(guī)格,以輸入到卷積神經網絡中進行后續(xù)的操作。
圖1 提取候選框的流程
1.2.1 Convolutional Neural Networks
CNN是深度學習的一個重要分支,是一種前饋人工神經網絡的類型。卷積神經網絡的網絡結構有權值共享的機制,這使得它能在圖像處理領域廣泛的應用。本文算法采用卷積神經網絡提取行人候選框的特征以及對行人進行分類。對于卷積神經網絡,輸入的是可能包含行人的候選框的集合,然后判斷圖像上是否存在行人,如果圖像上存在行人,則進一步輸出行人所在圖像上的位置信息。
1.2.2 CNN結構[13]
本文訓練和測試采用的卷積神經網絡結構包含4個卷積層和4個max-pooling層,如圖2所示。表1是該CNN網絡的結構分析。
圖2 卷積神經網絡結構
TypeFiltersSize/StrideOutputConv1327×780×32Max-pooling-2×2/240×16Conv2485×540×16Max-pooling-2×2/120×8Conv3643×320×8Max-pooling-2×2/110×4 Conv4963×310×4Max-pooling-2×2/15×2Fc5--500Fc6--200SVM---
1.3.1 算法描述
行人檢測,實際上是一個二分類問題,需要判斷的目標只有兩類,即“行人”或者“非行人”。因此,本文結合傳統(tǒng)方法以及深度學習的方法,提出兩次分類的行人檢測算法,旨在利用傳統(tǒng)方法(使用的是ACF算法),進行第一步的預分類,提取出盡可能多的行人檢測候選框,然后再利用深度學習算法(主要指的是CNN),對提取出的盡可能多的行人檢測候選框進行特征提取,再利用預先訓練好、只分類“行人”與“非行人”的SVM分類器,進行第二步較第一步更為精確的分類,最終檢測出行人所在圖像上的信息,盡可能多地召回正樣本,提高檢測行人的召回率。
1.3.2 算法步驟
流程如圖3所示。假設待檢測的圖像是RGB圖像,檢測算法的具體步驟如下:
(1)構建圖像的圖像金字塔,并計算出圖像的聚合通道特征圖;
(2)對于聚合通道特征圖進行滑窗操作,獲取檢測塊;
(3)使用預先訓練好的AdaBoost分類器對獲取的檢測塊進行分類,得到盡可能多的行人檢測候選框的集合;
(4)使用NMS過濾掉重疊的行人候選框;
(5)把這些行人候選框進行統(tǒng)一化操作再輸入到卷積神經網絡中,提取這些候選框的深度特征;
(6)然后使用預先訓練好的SVM分類器對這些候選框集再進行一次分類,輸出行人檢測的結果。
圖3 基于ACF和CNN的行人檢測流程
本文算法運行環(huán)境為64位的Ubuntu14.04LTS,內存為16 G,CPU為8核Inter(R) Core(TM) i7-4790@3.60 GHz,GPU為GeForce GTX 750Ti的臺式機,程序使用的深度學習框架是caffe框架[14],運行環(huán)境為MatlabR2013a。訓練ACF算法的AdaBoost分類器正樣本和負樣本在公開數(shù)據(jù)集Caltech[15]、INRIA數(shù)據(jù)集中選取,模糊的負樣本在Caltech數(shù)據(jù)集中選取,訓練SVM分類器的正樣本和負樣本均在Caltech數(shù)據(jù)集中選取,正負樣本的大小均為128×64。實驗中采用的評價指標為準確率(Precision,P),召回率(Recall,R),以及準確率和召回率的綜合評價指標F值(F-score)。一般來說,準確率和召回率是相互矛盾的,而F值則綜合了這兩個指標的評價參數(shù),當F值越高時則實驗的檢測性能更好。準確率與召回率的定義為
(9)
(10)
綜合評價指標F值的定義為
(11)
為了驗證本文算法對于行人檢測的檢測性能較好,本實驗對比了傳統(tǒng)的經典算法ACF行人檢測算法[1]和有效地處理了遮擋問題的可形變模型DPM檢測算法[7],以及2016年提出的基于Faster R-CNN[14]在行人檢測上做出改進的算法RPN+BF[7]算法。實驗的第一階段,為保證檢測算法的魯棒性,從Caltech數(shù)據(jù)集和INRIA數(shù)據(jù)集中選取包含正樣本的圖像來進行檢測算法的測試實驗,選取具有代表性的實驗結果,各個檢測算法的實驗結果如圖4(a)~圖4(d)所示。
圖4 各個檢測算法實驗結果
從圖4(a)~圖4(d)可以看出,以上算法都能較為出色地完成行人檢測的任務。傳統(tǒng)的ACF算法存在著漏檢的情況,而且偶爾還會出現(xiàn)誤檢的情況,而RPN+BF算法檢測行人的準確率是很高的,但仍然會出現(xiàn)較多漏檢的情況。DPM算法在簡單的場景下,則出現(xiàn)漏檢的幾率較小,準確率也較高,而對于復雜的場景下,如第4張圖像所示,DPM算法不能表現(xiàn)出很好的召回率,可以看出,本文算法檢測時,準確率確實有所下降,但是檢測到的行人數(shù)則明顯多于前3種算法檢測到的行人數(shù)。綜上所述,本文算法即便是在復雜場景,也可以盡可能的檢測出正樣本,但是召回率有所提高的同時準確率有所下降,則以上實驗不足以說明本文算法性能的優(yōu)異。因此,本文從Caltech數(shù)據(jù)集和INRIA數(shù)據(jù)集中共選取600幅圖像,其中行人數(shù)目為967,以此來進一步進行算法性能的分析。
表2即為4種算法的參數(shù)指標,準確率、召回率以及F值的對比數(shù)據(jù)。從實驗數(shù)據(jù)可以看出,本文算法對于行人檢測任務的準確率確實不及ACF方法、RPN+BF方法以及DPM方法,尤其是RPN+BF的方法,可以看出這個方法的準確率確實很高,然而本文算法表現(xiàn)出來的召回率卻遠遠高于前3種算法,這是由于本文算法在第一階段利用聚合通道特征盡可能提取可能包含行人的候選框,使得第二階段的分類過程篩選的到更多的行人,從而提升召回率。除此以外,本文算法的平均檢測時間雖然不及ACF算法速度,但是優(yōu)于另外的兩種算法且準確率與召回率的綜合評價指標F值也高于前三者行人檢測算法,因此可認為本文算法的綜合性能最佳。
表2 4種算法性能的比較
本文提出了一個基于傳統(tǒng)方法——聚合通道特征算法和深度學習方法——卷積神經網絡的行人檢測方案。利用聚合通道特征算法盡可能的產生包含行人的候選框,再把這些行人候選框輸入到卷積神經網絡中提取深度特征,進而通過預先訓練好的支持向量機進行較為準確的分類,從而檢測到圖像中的行人信息,這樣做的目的是在保證準確率不下降過多的情況下,大幅度的提升行人檢測召回率,而且可以在GPU上并行計算,可減小計算機的計算開銷。如何在提高召回率的情況下,進一步提高檢測速度和檢測的準確率將是我們下一步研究的方向。