張 萌,桑海峰
(沈陽(yáng)工業(yè)大學(xué)信息科學(xué)與工程學(xué)院,沈陽(yáng)110870)
在深度學(xué)習(xí)發(fā)展成為主流之前,傳統(tǒng)目標(biāo)檢測(cè)算法的實(shí)現(xiàn)步驟為:先對(duì)檢測(cè)目標(biāo)進(jìn)行區(qū)域選擇,以SIFT[1]和HOG[2]等算法在區(qū)域范圍內(nèi)提取特征,再將提取的特征放入分類(lèi)器(SVM[3]和Adaboost[4])中進(jìn)行分類(lèi)任務(wù)。然而這一傳統(tǒng)目標(biāo)檢測(cè)算法存在兩個(gè)問(wèn)題:一是區(qū)域選擇沒(méi)有針對(duì)性,致使時(shí)間成本較高;二是魯棒性較低。隨著深度學(xué)習(xí)時(shí)代的到來(lái),目標(biāo)檢測(cè)算法也得到了巨大的改進(jìn),以卷積神經(jīng)網(wǎng)絡(luò)為代表的另一種目標(biāo)檢測(cè)算法已經(jīng)出現(xiàn)。該算法又可以分為類(lèi):一類(lèi)是基于Region Proposal(建議區(qū)域)的深度學(xué)習(xí)目標(biāo)檢測(cè)算法,以R-CNN[5]為代表,除此還包括Fast-RCNN[6]、Faster-RCNN[7]等,都需要先產(chǎn)生建議區(qū)域,然后在這一區(qū)域上做分類(lèi)與回歸。另一類(lèi)則是一個(gè)單階段(one-stage)的基于回歸方法的深度學(xué)習(xí)目標(biāo)檢測(cè)算法(YOLO[8]、SSD[9]等),通過(guò)運(yùn)用一個(gè)CNN網(wǎng)絡(luò)就可以直接預(yù)測(cè)不同目標(biāo)的類(lèi)別與位置,提高了訓(xùn)練速度。
行人檢測(cè)是目標(biāo)檢測(cè)技術(shù)的主要分支,應(yīng)用廣泛。在具有挑戰(zhàn)性的場(chǎng)景下,例如遮擋、模糊、形態(tài)變化等,檢測(cè)性能通常會(huì)受到影響。為解決這些問(wèn)題Hariharan等人[10]將分割用作檢測(cè)的先驗(yàn),周春鑾等人[11]為應(yīng)對(duì)不同的行人遮擋模式設(shè)計(jì)了模型。但這些方法并不完全適應(yīng)于現(xiàn)實(shí)使用場(chǎng)合。趙祈杰等人[12]提出的M2Det網(wǎng)絡(luò)提出了多層次特征金字塔網(wǎng)絡(luò)來(lái)構(gòu)建更有效的特征金字塔,用于檢測(cè)不同尺度的對(duì)象,取得了較好的檢測(cè)結(jié)果。但是由于M2Det需要使用8個(gè)TUM模塊,參數(shù)量巨大,訓(xùn)練占用內(nèi)存高,為此,此處在M2Det的基礎(chǔ)上加以改進(jìn),得到新的行人檢測(cè)網(wǎng)絡(luò)MCDET。
改進(jìn)的基于M2Det的行人檢測(cè)方法MCDET整體流程如圖1所示。使用改良后的VGG網(wǎng)絡(luò)對(duì)輸入圖片提取特征,并且在VGG網(wǎng)絡(luò)中的conv4_3提取特征層后使用注意力模塊增強(qiáng)細(xì)節(jié)信息,再與pool5層后得到的特征通過(guò)特征融合模塊(FFM)中的FFMv1模塊進(jìn)行初步融合。將融合后的基礎(chǔ)特征層依次輸入4個(gè)瘦化U形模塊(TUM)中進(jìn)行U型特征提取,先不斷壓縮特征層,再進(jìn)行上采樣操作融合特征,最終使用TUM模塊獲得6個(gè)有效特征層,對(duì)其使用FFMv2特征增強(qiáng)融合后再次輸入到下一個(gè)TUM中,依此方式一共通過(guò)四個(gè)TUM模塊,將輸出結(jié)果輸入到尺度特征聚合模塊(SFAM)中,最終得到所需的檢測(cè)層。
圖1 MCDET網(wǎng)絡(luò)結(jié)構(gòu)圖
MCDET提取特征網(wǎng)絡(luò)采用的是VGG網(wǎng)絡(luò),使用3個(gè)3×3卷積核來(lái)替換7×7卷積核,以及使用2個(gè)3×3卷積核來(lái)替換5×5卷積核。這樣做雖然增加了卷積核的個(gè)數(shù),但提升了網(wǎng)絡(luò)深度,改善了網(wǎng)絡(luò)效果,同時(shí)保證感知野不變。VGG自身含有3個(gè)全連接層,這3個(gè)全連接層參數(shù)眾多,會(huì)產(chǎn)生大的計(jì)算量,占用大量?jī)?nèi)存。為解決這一問(wèn)題,此處在VGG網(wǎng)絡(luò)的基礎(chǔ)之上做了一定改進(jìn):將VGG-16網(wǎng)絡(luò)結(jié)構(gòu)中的3個(gè)全連接層刪掉以減少參數(shù)且對(duì)性能基本不產(chǎn)生影響;刪掉conv 4_3后的池化層使conv4_3作為提取的淺層特征信息,pool5作為深層特征信息。改進(jìn)后的VGG網(wǎng)絡(luò)模型如圖2所示。
圖2 改進(jìn)的VGG網(wǎng)絡(luò)結(jié)構(gòu)圖
M2Det本身具有8個(gè)TUM模塊。TUM模塊使用簡(jiǎn)化的U形結(jié)構(gòu),這一點(diǎn)上與FPN和RetinaNet兩種都不同。編碼器采用的是3×3卷積層,步長(zhǎng)為2。解碼器解碼后得到多個(gè)特征層,制成特征集。當(dāng)前級(jí)別的多尺度特征由當(dāng)前TUM的解碼器中的所有輸出組成;多層次多尺度特征由堆疊的TUM的所有輸出組成;淺層特征、中等特征、深層特征分別由TUM的前、中、后分別提供。每個(gè)TUM經(jīng)計(jì)算共有6210432個(gè)參數(shù),如若使用8個(gè)TUM模塊參數(shù)量過(guò)于龐大,導(dǎo)致訓(xùn)練時(shí)間長(zhǎng),內(nèi)存占用量大,因此需要使用4個(gè)TUM模塊,將參數(shù)量減少至原有的一半,以減少訓(xùn)練時(shí)長(zhǎng)。
將原有的8個(gè)TUM模塊改為4個(gè),在一定程度上減少了淺層信息的獲取,此時(shí)就需要在淺層特征層添加注意力機(jī)制來(lái)增強(qiáng)對(duì)淺層信息的獲取,即添加卷積塊注意力機(jī)制模塊(CBAM),其網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。CBAM兼顧了空間注意力和通道注意力,與只關(guān)注一方面的注意力機(jī)制相比,取得了更佳的結(jié)果,尤其有助于對(duì)小目標(biāo)捕獲能力的提升。
圖3 CBAM模塊結(jié)構(gòu)圖
CBAM的通道注意力機(jī)制結(jié)構(gòu)如圖4所示,其流程為:特征圖輸入后,通過(guò)基于width和height的全局最大池化和全局平均池化后再通過(guò)多層感知器(MLP)操作,最終加和;再使用Sigmoid對(duì)加和結(jié)果激活,生成最終的通道注意力特征圖。將所生成的特征圖與輸入特征圖做elementwise乘法操作,得到下一部分空間注意力模塊所需的輸入特征。
圖4 通道注意力機(jī)制結(jié)構(gòu)圖
CBAM的空間注意力機(jī)制結(jié)構(gòu)如圖5所示。結(jié)構(gòu)流程為:輸入通道注意力產(chǎn)生的特征圖后,首先在基于通道的全局最大池化和全局平均池化的結(jié)果上做基于通道的concat操作。然后通過(guò)卷積操作將特征降維為1個(gè)通道。再使用sigmoid操作生成空間注意力的特征圖。最后將得到的特征和輸入的特征做乘法操作,最終生成特征即為使用CBAM模塊后得到的特征。
圖5 空間注意力機(jī)制結(jié)構(gòu)圖
實(shí)驗(yàn)的軟件環(huán)境均在Ubuntu16.04系統(tǒng)下進(jìn)行配置,使用的深度學(xué)習(xí)框架為Keras2.1.5;電腦顯卡為GeForce RTX 2080 Ti,顯存大小為11GB。主要采用Caltech作為數(shù)據(jù)集來(lái)完成對(duì)于改進(jìn)算法的訓(xùn)練和評(píng)估。
實(shí)驗(yàn)采用目標(biāo)檢測(cè)領(lǐng)域公認(rèn)的平均精度(AP)來(lái)衡量模型的性能。將Caltech中122187張圖片劃分為訓(xùn)練集和測(cè)試集,其中73312張圖片用于訓(xùn)練,48875張圖片用于測(cè)試。不同算法在caltech數(shù)據(jù)集下的檢測(cè)結(jié)果如表1所示??梢钥吹礁倪M(jìn)的MCDET算法相較于yolo v3算法,以及相較于只有四TUM模塊的M2Det算法,在平均精度上均有不同程度的提高。
表1 不同算法在Caltech數(shù)據(jù)集下的平均精度
為實(shí)現(xiàn)面向?qū)嶋H情況的行人檢測(cè)系統(tǒng),在實(shí)驗(yàn)中也比較了算法的檢測(cè)速度,以檢測(cè)所需的時(shí)間來(lái)衡量,實(shí)驗(yàn)結(jié)果如表2所示。由表中看到,雖然注意力機(jī)制的添加稍微延長(zhǎng)了檢測(cè)時(shí)間,但相對(duì)于8個(gè)TUM的M2Det,檢測(cè)速度還是有些許提升的。
表2 不同算法的檢測(cè)時(shí)間
為更加直觀地體現(xiàn)MCDET模型的檢測(cè)效果,將改進(jìn)算法與Yolov3開(kāi)源代碼算法的實(shí)際表現(xiàn)進(jìn)行對(duì)比,如圖6所示。其中,圖6(a)、圖6(b)為簡(jiǎn)單場(chǎng)景下的檢測(cè)效果,圖6(c)、圖6(d)為復(fù)雜場(chǎng)景下的檢測(cè)效果;而圖6(a)、圖6(c)采用的是Yolov3源碼檢測(cè),圖6(b)、圖6(d)則為MCDET改進(jìn)算法的檢測(cè)效果??梢钥闯龊?jiǎn)單場(chǎng)景下兩者檢測(cè)效果基本相同,但在復(fù)雜場(chǎng)景下MCDET對(duì)行人的檢測(cè)效果更佳。
圖6 算法檢測(cè)實(shí)際效果對(duì)比
圖7 顯示了MCDET算法針對(duì)遮擋的檢測(cè)效果。圖8為MCDET算法針對(duì)遠(yuǎn)處小目標(biāo)行人的檢測(cè)結(jié)果。可以看出在這兩種有代表性的實(shí)際應(yīng)用場(chǎng)景下,該算法均有較為理想的良好表現(xiàn)。
圖7 對(duì)被遮擋行人的檢測(cè)效果
圖8 對(duì)遠(yuǎn)處小目標(biāo)行人的檢測(cè)效果
提出一種融合CBAM模塊的改進(jìn)M2Det目標(biāo)檢測(cè)模型的行人檢測(cè)方法MCDET,使得對(duì)于檢測(cè)較小目標(biāo)的有效特征層能夠很好地融合,獲得一個(gè)較強(qiáng)的語(yǔ)義信息,并可以進(jìn)行實(shí)時(shí)檢測(cè)。該模型在Caltech數(shù)據(jù)集中在保持精度的前提下實(shí)現(xiàn)了對(duì)于行人的實(shí)時(shí)檢測(cè),具有實(shí)際意義。因?yàn)門(mén)UM模塊的減小,導(dǎo)致改進(jìn)算法在精度上相較于Yolov3系列之后的算法還有所遜色,因此在后續(xù)研究中,對(duì)于像Caltech這樣的大規(guī)模數(shù)據(jù)集還應(yīng)進(jìn)行進(jìn)一步的模型實(shí)現(xiàn)與分析,同時(shí)還應(yīng)注重移動(dòng)設(shè)備端的研究,如Tiny-Yolo之類(lèi)的淺表替代模型,以在硬件有限的情況下提高準(zhǔn)確性。