呂俊奇,邱衛(wèi)根,張立臣,李雪武
(廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣東 廣州 510006)
行人檢測在車輛輔助駕駛、智能視頻監(jiān)控、人機(jī)交互等領(lǐng)域具有廣泛的應(yīng)用[1],也是計(jì)算機(jī)視覺中極具挑戰(zhàn)問題。
Dalal等[2]提出了稠密的、重疊的、固定尺度的HOG局部特征描述子描述人體輪廓。該描述子借鑒了旋轉(zhuǎn)尺度不變特征(scale invariant feature transform,SIFT)中運(yùn)用梯度方向直方圖表示目標(biāo)的思想。
DPM(deformable parts model)[3]算法采用了傳統(tǒng)的滑動窗口檢測,通過構(gòu)建尺度金字塔在多種尺度空間上搜索候選目標(biāo),對目標(biāo)的形變具有很強(qiáng)的魯棒性。
Dollar等[4]提出融合積分圖和原始HOG特征的多通道特征(aggregate channel features,ACF),利用級聯(lián)決策樹構(gòu)建AdaBoost分類器,進(jìn)一步提高了行人檢測精度。
從2014年開始,基于深度學(xué)習(xí)的目標(biāo)檢測取得了巨大的突破,以R-CNN[5]為代表的目標(biāo)檢測框架在VOC目標(biāo)檢測數(shù)據(jù)集上取得了較好的成績,通過結(jié)合候選區(qū)域提取和卷積神經(jīng)網(wǎng)絡(luò)分類,利用卷積神經(jīng)網(wǎng)絡(luò)強(qiáng)大的學(xué)習(xí)特征能力極大提高了特征提取的能力。
針對目標(biāo)的多尺度問題,R-CNN使用Selective Search[6]生成多尺度的目標(biāo)假設(shè)區(qū)域,然后將這些建議歸一化CNN支持的大小(例如224×224)。然而,從計(jì)算的角度來看,這種做法非常低效。最新的Faster RCNN[7]通過區(qū)域生成網(wǎng)絡(luò)(RPN)來共享卷積運(yùn)算,該網(wǎng)絡(luò)實(shí)現(xiàn)了網(wǎng)絡(luò)端到端的快速高效訓(xùn)練。RPN通過使用一組固定大小的濾波器在卷積特征圖上滑動,來產(chǎn)生多種尺度的目標(biāo)候選區(qū)域。然而這種機(jī)制造成了可變大小的目標(biāo)和固定過濾器感受野之間的匹配不一致。
特征金字塔是多尺度的行人檢測的常用技巧,但是構(gòu)建金字塔會帶來存儲空間的消耗和計(jì)算量的巨大開銷,因此目前基于深度學(xué)習(xí)的行人檢測回避了使用特征金字塔進(jìn)行特征表示。針對行人的多尺度問題,本文嘗試?yán)镁矸e神經(jīng)網(wǎng)絡(luò)的金字塔結(jié)構(gòu)構(gòu)建內(nèi)在的多尺度,并且引入全局和局部上下文信息,提高算法對小目標(biāo)以及遮擋嚴(yán)重的行人檢測能力。
目標(biāo)檢測的問題被定義為確定目標(biāo)在圖像中的位置以及每個(gè)目標(biāo)所屬的類別。上述定義為我們提供了如何解決這樣一個(gè)問題的線索:通過從圖像生成目標(biāo)候選區(qū)域,然后將每個(gè)候選區(qū)域分類到不同的對象類別。在某種程度上,這種兩步解決方案與人類看到事物的注意機(jī)制相匹配,這首先是對整個(gè)場景進(jìn)行粗略掃描,然后著重于我們感興趣的區(qū)域。
與Faster RCNN類似,我們的行人檢測算法也采用注意力機(jī)制,由兩大模塊組成:候選框提取模塊和檢測模塊。其中,候選框提取模塊是全卷積神經(jīng)網(wǎng)絡(luò),用于提取目標(biāo)候選區(qū)域;檢測模塊針對區(qū)域生成模塊提取的候選區(qū)域識別并定位目標(biāo)。
傳統(tǒng)的目標(biāo)檢測,構(gòu)建圖像金字塔,將圖像放大或縮小為一組尺寸,然后提取特征,這樣帶來了巨大的計(jì)算量,在深度卷積網(wǎng)絡(luò)領(lǐng)域這種機(jī)制是無法接受的。然而,圖像金字塔不是計(jì)算多尺度特征表示的唯一方法。深度卷積網(wǎng)絡(luò)逐層計(jì)算層次化特征,子采樣層的特征層次結(jié)構(gòu)具有固有的多尺度金字塔屬性。這種網(wǎng)絡(luò)內(nèi)在的特征層次結(jié)構(gòu)產(chǎn)生于不同空間分辨率的特征圖,我們使用特征上采樣替代輸入圖像上采樣,改變特征圖的尺度大小,這表明可以減少內(nèi)存和計(jì)算成本。
深度卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如圖1所示。
圖1 深度卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
1.1.1 采樣
深度卷積網(wǎng)絡(luò),通過多個(gè)卷積層提取圖像的特征,通過多個(gè)池化層不斷增大卷積核的感知野。這種機(jī)制使得高層的卷積具有較高層次的語義特征,但多次池化使得目標(biāo)物體的尺寸不斷縮小。例如分辨率為32×32的物體,經(jīng)過VGG16[8]的多層卷積之后,最后一個(gè)卷積層獲得特征圖分辨大小為1×1。深層卷積網(wǎng)絡(luò)中,小物體經(jīng)過多層卷積和池化之后,特征圖逐步變小導(dǎo)致包含的信息太少,從而引入了分類錯(cuò)誤。
HyperNet[9]提出對高層卷積采用去卷積,通過插值上采樣擴(kuò)大特征圖的大小,使小物體能夠產(chǎn)生較強(qiáng)響應(yīng)的較大區(qū)域。
1.1.2 特征融合
深度卷積網(wǎng)絡(luò)逐層計(jì)算層次化特征,產(chǎn)生不同空間分辨率的特征圖的同時(shí)。擁有較大特征圖的淺層卷積更注重目標(biāo)的細(xì)節(jié)信息,但是包含的目標(biāo)語義信息更少;卷積網(wǎng)絡(luò)中深層卷積更注重目標(biāo)的語義信息,但經(jīng)過多次池化操作之后,目標(biāo)在特征圖上的分辨率很小。通過卷積層的特征融合,使得提取的特征既可以獲得高層語義信息,還可以得到小目標(biāo)物體的更多信息。
給定輸入圖像(假設(shè)分辨率為600×1000),經(jīng)過卷積操作得到最后一層的卷積特征圖,分辨率縮小了16倍。與傳統(tǒng)的滑動窗口類似,在這個(gè)特征圖上使用3×3的卷積核與特征圖進(jìn)行卷積,VGG16的最后一層卷積層共有512個(gè)特征圖,那么這個(gè)3×3的區(qū)域卷積后可以獲得512維的特征向量,輸出到兩個(gè)并行的全連接層,分別用于分類和邊框回歸。
圖2 邊框回歸
(1)先做平移(△x,△y),△x=pwdx(p),△y=phdy(p)即
(1)
(2)
(2)然后做尺度縮放(sw,sh),sw=pwdx(p),sh=phdy(p)
(3)
(4)
tx=(Gx-px)/pw
(5)
ty=(Gy-py)/ph
(6)
tw=log(Gw/pw)
(7)
th=log(Gh/ph)
(8)
(9)
目標(biāo)檢測網(wǎng)絡(luò)將整個(gè)圖像和一組帶類別和位置標(biāo)記的目標(biāo)作為輸入。網(wǎng)絡(luò)首先用多個(gè)卷積層以及池化層處理整個(gè)圖像,以產(chǎn)生最后的卷積特征圖。
采用FC-Dropout-FC-Dropout管道[10]是目標(biāo)檢測的一個(gè)簡單而實(shí)用的做法。在FC層之前,我們添加一個(gè)Conv層(3×3×63),除了增強(qiáng)分類器的性能之外,該操作將特征圖的維度降低了一半,減少了計(jì)算量。與區(qū)域生成網(wǎng)絡(luò)相似,目標(biāo)檢測網(wǎng)絡(luò)為每個(gè)區(qū)域候選框添加了的兩個(gè)全連接層。不同之處在于每個(gè)候選框都有N+1個(gè)輸出得分和4×N個(gè)邊界框回歸位置偏移(其中N為類別的數(shù)量,再加上背景類)。通過輸出層對每個(gè)候選框評分和調(diào)整。
根據(jù)它們的分?jǐn)?shù),對區(qū)域采用非極大值抑制算法[11],抑制高度重疊的候選區(qū)域,從而降低了冗余和減少了算法的計(jì)算量。
我們分別在VOC 2007數(shù)據(jù)集和Brainwash數(shù)據(jù)集[12]上評估了我們的方法。VOC 2007數(shù)據(jù)集中包含9964張帶有多種類別標(biāo)記和目標(biāo)位置的圖片,訓(xùn)練樣本圖片5012張,測試樣本4952張。包含20種目標(biāo)類別的VOC數(shù)據(jù)集一般作為通用目標(biāo)檢測的數(shù)據(jù)集,其中包含的行人目標(biāo)的數(shù)目為4690。同時(shí)我們還在更大的Brainwash數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)并驗(yàn)證我們的方法。
Brainwash數(shù)據(jù)集從視頻片段中提取圖像,提取時(shí)間間隔為100 s,訓(xùn)練集和測試集的樣本圖片沒有任何重疊,總共包含11 917張圖像和91 146個(gè)已標(biāo)記的行人目標(biāo)。其中訓(xùn)練集包含了82 906個(gè)實(shí)例,測試集、驗(yàn)證集分別包含4922個(gè)和3318個(gè)實(shí)例。
將分類器檢測到的行人目標(biāo)與XML標(biāo)記文件的標(biāo)記矩形框?qū)Ρ?,如果重合百分之七十以上判定為目?biāo)檢測正確。統(tǒng)計(jì)所有的檢測結(jié)果,使用P-R曲線衡量分類器的性能,統(tǒng)計(jì)分類器的準(zhǔn)確率(precision)和召回率(recall),最后利用平均準(zhǔn)確率(mean average precision,mAP)來衡量分類器的性能。
實(shí)驗(yàn)基于caffe版本的Faster RCNN,使用VGG16架構(gòu)的卷積網(wǎng)絡(luò)。利用在ILSVRC2012[13]上預(yù)訓(xùn)練模型,通過遷移學(xué)習(xí)的方法在VOC數(shù)據(jù)集和Brainwash數(shù)據(jù)集重新訓(xùn)練并評估我們的方法。
2.2.1 特征融合
由于CNN中的下采樣操作,不同卷積特征層的尺寸大小不同。為了融合多個(gè)卷積圖,需要將卷積特征圖規(guī)范化統(tǒng)一為相同尺寸大小。我們采取不同的采樣策略來融合不同層的特征。如圖1所示,對較低層Conv3_3進(jìn)行最大池化,減小特征圖的大小。對于較高的卷積層,我們使用去卷積操作(Deconv)進(jìn)行上采樣增大特征圖。將卷積層conv3_3,conv4_3,conv5_3融合后的特征輸入到后面的RPN模塊。如表1所示,增加特征融合使得VOC2007的檢測結(jié)果增加了2.9個(gè)百分點(diǎn)。
表1 多層卷積特征融合前后對比
2.2.2 上下文信息
在Faster RCNN算法中,RPN模塊獲得的候選區(qū)域,采用一種特殊的池化方法(RoI Pooling),使得在不同大小的圖像上獲得相同維度的卷積特征。如圖3所示,我們除了對目標(biāo)候選區(qū)域進(jìn)行RoI Pooling操作之外,我們還對整個(gè)圖像采用RoI Pooling操作來獲得全局上下文信息。相應(yīng)的通過放大目標(biāo)候選區(qū)域,獲得目標(biāo)局部上下文信息,我們將放大比例設(shè)置為1.5倍。全局和局部上下文特征僅僅被用來目標(biāo)分類,不參加邊框回歸。
圖3 上下文信息融合
如表2所示,增加全局上下文信息和局部上下文信息使得檢測結(jié)果分別提升了1.5個(gè)以及1.1個(gè)百分點(diǎn)。融合多層卷積特征和目標(biāo)上下文信息之后,相比原始的Faster RCNN算法,我們方法的檢測結(jié)果從69.9提升到74.2,提高了4.3個(gè)百分點(diǎn)。
表2 上下文信息融合前后對比
不同于VOC數(shù)據(jù)集,Brainwash數(shù)據(jù)集包含了大量遮擋比較嚴(yán)重的行人目標(biāo),而且行人的尺度比較小。實(shí)驗(yàn)表明改變非極大值抑制的閾值,F(xiàn)aster RCNN算法的檢測結(jié)果相差很大。通過分析3種不同的nms閾值的Faster RCNN的結(jié)果以及我們的算法在Brandwish數(shù)據(jù)集上的結(jié)果,如圖4所示。其中nms的閾值為0.75時(shí),F(xiàn)aster RCNN對同一個(gè)目標(biāo)會產(chǎn)生多個(gè)連續(xù)預(yù)測結(jié)果,導(dǎo)致了較差的準(zhǔn)確率。當(dāng)nms的閾值為0.25時(shí),F(xiàn)aster RCNN在Brainwash數(shù)據(jù)集的測試集上取得最好的檢測結(jié)果,但仍然落后于我們的方法。部分檢測結(jié)果對比如圖5所示,在當(dāng)行人目標(biāo)較小、較模糊時(shí),原始的Faster RCNN算法存在大量的行人目標(biāo)漏檢問題,而我們的方法在這方面好很多。
圖4 在Brainwash數(shù)據(jù)集的測試結(jié)果
圖5 在Brandwish數(shù)據(jù)集上部分檢測結(jié)果
本文提出的方法在Faster RCNN算法的基礎(chǔ)上,融合了多尺度以及目標(biāo)全局和局部上下文信息。測評結(jié)果表明,相比于Faster RCNN算法,所提出的方法對不同尺寸、遮擋嚴(yán)重的目標(biāo)檢測效果均有明顯的提升。模型融合多層卷積特征后,對于多尺度目標(biāo)的平均檢測準(zhǔn)確率提升了2.9%。在包含更多遮擋目標(biāo)的Brainwash數(shù)據(jù)集的測評表明,融合上下文的檢測網(wǎng)絡(luò)相比原始的Faster RCNN,平均準(zhǔn)確率提升了4.3%。