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