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