劉 丹,汪慧蘭,曾浩文,王桂麗
(安徽師范大學(xué) 物理與電子信息學(xué)院,安徽 蕪湖 241002)
行人檢測(cè)技術(shù)是智能輔助駕駛系統(tǒng)中的關(guān)鍵技術(shù)[1],能有效減少交通事故的發(fā)生,提高駕駛的安全性[2-4]。當(dāng)前基于深度學(xué)習(xí)的行人檢測(cè)算法主要分為兩階段檢測(cè)的R-CNN[5,6]系列算法和一階段檢測(cè)的SSD[7]、YOLO[8]系列等算法。其中董等[9]用DenseNet作為SSD的基礎(chǔ)網(wǎng)絡(luò),提高了行人檢測(cè)的精度。高等[10]根據(jù)行人的幾何特點(diǎn),優(yōu)化了YOLO的網(wǎng)絡(luò)結(jié)構(gòu),取得較好的行人檢測(cè)結(jié)果。但這兩類(lèi)算法大都依賴(lài)預(yù)定義的錨(anchor)框,且都是人為精心設(shè)計(jì),導(dǎo)致泛化能力不高和計(jì)算量增加[11]。
FCOS(fully convolutional one-stage)[12]是以ResNet[13]為主干網(wǎng)絡(luò)的anchor-free目標(biāo)檢測(cè)算法,而且只有非極大值抑制(non-maximum suppression,NMS)[14]的后處理方法,比基于錨框的方法更加簡(jiǎn)單,并且提高了檢測(cè)精度。Li等[15]通過(guò)對(duì)分類(lèi)損失函數(shù)的修改,進(jìn)一步提高了FCOS的檢測(cè)性能。張等[16]運(yùn)用FCOS思想,將FPN特征層進(jìn)行多尺度的融合,得到了較好的行人檢測(cè)結(jié)果。但仍存在以下問(wèn)題:網(wǎng)絡(luò)層數(shù)較多,復(fù)雜度高,導(dǎo)致檢測(cè)速度變慢以及復(fù)雜交通下小尺度行人檢測(cè)準(zhǔn)確率不高問(wèn)題。針對(duì)以上情況,本文以FCOS為基礎(chǔ),提出基于MobileNetV2的行人檢測(cè)方法,并對(duì)FCOS算法模型結(jié)構(gòu)訓(xùn)練過(guò)程進(jìn)行改進(jìn),通過(guò)常用指標(biāo)對(duì)經(jīng)典算法與改進(jìn)的FCOS算法進(jìn)行對(duì)比實(shí)驗(yàn),結(jié)果表明,改進(jìn)后的FCOS算法可準(zhǔn)確快速的對(duì)交通場(chǎng)景下的行人進(jìn)行檢測(cè)。
FCOS是anchor-free的目標(biāo)檢測(cè)方法,預(yù)測(cè)框的設(shè)定有點(diǎn)類(lèi)似于YOLOV1的做法。YOLOV1預(yù)測(cè)的是邊界框的左上角和右下角的坐標(biāo),而FCOS預(yù)測(cè)的是特征圖上的點(diǎn) (x,y) 在原圖中所對(duì)應(yīng)的點(diǎn) (x′,y′) 到邊界框4條邊的距離,如圖1所示。
圖1 FCOS預(yù)測(cè)方式
FCOS訓(xùn)練樣本的具體設(shè)置是,特征圖上任意一點(diǎn) (x,y) 都可以對(duì)應(yīng)到輸入圖像上的一點(diǎn) ([s/2]+xs,[s/2]+ys), 記為 (x′,y′), 該點(diǎn) (x,y) 在輸入圖像感受野的中心附近。如果該點(diǎn)落在真實(shí)框內(nèi),則視為正樣本,并且對(duì)應(yīng)的類(lèi)別標(biāo)簽與真實(shí)框類(lèi)別標(biāo)簽一致,本文中,類(lèi)別標(biāo)簽只有行人一類(lèi),否則,點(diǎn) (x,y) 設(shè)置為負(fù)樣本。除了用于分類(lèi)的標(biāo)簽,還需要給點(diǎn) (x,y) 設(shè)置一個(gè)4D的連續(xù)向量 (l*,t*,r*,b*) 作為每個(gè)樣本的回歸目標(biāo),分別表示位置到真實(shí)邊界框的左、上、右、下的距離。若點(diǎn) (x,y) 在真實(shí)框內(nèi),則該位置的回歸目標(biāo)請(qǐng)參見(jiàn)文獻(xiàn)[12]所示。
若一個(gè)位置落在多個(gè)真實(shí)框中,則它被認(rèn)為是一個(gè)模糊樣本,這種模糊性導(dǎo)致基于FCN的檢測(cè)器性能大大下降。因此采用多級(jí)預(yù)測(cè)特征金字塔(feature pyramid network,F(xiàn)PN)[17]的方法,這樣可以有效解決樣本的模糊問(wèn)題。同時(shí),使用FPN多層級(jí)預(yù)測(cè),召回率可以進(jìn)一步提高。
在使用了FPN多層級(jí)預(yù)測(cè)后,F(xiàn)COS的性能和基于錨點(diǎn)的方法有一定的差距,是因?yàn)橹灰卣鲌D上的點(diǎn)落在真實(shí)框內(nèi)就被認(rèn)為是正樣本,導(dǎo)致FCOS中產(chǎn)生大量的低質(zhì)量的、遠(yuǎn)離目標(biāo)中心的邊界框。因此在網(wǎng)絡(luò)中增加了一個(gè)和分類(lèi)分支并列的單層網(wǎng)絡(luò)分支來(lái)預(yù)測(cè)一個(gè)位置的“中心度”(Center-ness),即該位置到對(duì)應(yīng)目標(biāo)的中心的距離。中心度定義如式(1)
(1)
dCenter-ness可以看成對(duì)中心點(diǎn)在真實(shí)框中心的位置做一個(gè)篩選,當(dāng)l*和r*或t*和b*的比例差別過(guò)大,可以認(rèn)為當(dāng)前特征圖上的點(diǎn)映射回原圖的中心點(diǎn)在真實(shí)框中很偏離,這種中心點(diǎn)偏離的樣本可以被認(rèn)為是低質(zhì)量的,過(guò)濾掉即可。
MobileNetV2是一種輕量型的神經(jīng)網(wǎng)絡(luò),應(yīng)用了深度可分離卷積(深度卷積+點(diǎn)卷積),使得神經(jīng)網(wǎng)絡(luò)在保持精度的同時(shí),極大地降低了計(jì)算速度。
如圖2所示,M,N分別為輸入輸出通道數(shù),Dk為卷積核尺寸。
圖2 標(biāo)準(zhǔn)卷積和深度可分離卷積
深度卷積、點(diǎn)卷積計(jì)算量以及兩者比值參見(jiàn)文獻(xiàn)[18]。在保證兩者輸出特征圖維度相等的情況下,本文采用3×3卷積核,相比于標(biāo)準(zhǔn)卷積則可以降低大約9倍的計(jì)算量,從而可以大大提高對(duì)行人的檢測(cè)速度。
Sandler.M等[19]在流行學(xué)習(xí)理論的基礎(chǔ)上提出反向殘差結(jié)構(gòu)(inverted residual block),圖3為MobileNetV2中的反向殘差結(jié)構(gòu)。
圖3 MobileNetV2反向殘差結(jié)構(gòu)
ResNet網(wǎng)絡(luò)中是先用1*1卷積降通道,再3*3標(biāo)準(zhǔn)卷積,再用1*1卷積恢復(fù)通道,并和輸入相加。之所以要1*1卷積降通道,是為了減少計(jì)算量,因?yàn)橹虚g的3*3標(biāo)準(zhǔn)卷積計(jì)算量太大。所以ResNet中殘差結(jié)構(gòu)是沙漏形,兩邊寬中間窄。在MobileNetV2中,中間部分標(biāo)準(zhǔn)的3*3卷積用深度卷積代替可減少計(jì)算量,但是深度卷積無(wú)改變通道的能力,若上層給出的通道數(shù)很少,深度卷積只能在低維空間提取特征。因此MobileNetV2在深度卷積之前加了一個(gè)1*1的卷積,目的是為了提升通道數(shù),獲得更多特征。
激活函數(shù)ReLu在高維空間能夠有效地增加非線(xiàn)性,而在低維空間會(huì)被破壞特征,不如線(xiàn)性好,在MobileNetV2中,第二個(gè)1*1卷積相當(dāng)于降低維度,則不再適合用ReLu,因此MobileNetV2提出線(xiàn)性瓶頸結(jié)構(gòu)(linear bottleneck)的方案,其是一種線(xiàn)性映射,解決在低維空間信息丟失問(wèn)題。本文采用的MobileNetV2網(wǎng)絡(luò)參數(shù)參見(jiàn)文獻(xiàn)[19]。
BN(batch normalization)是標(biāo)準(zhǔn)正態(tài)分布,定義參見(jiàn)文獻(xiàn)[20],運(yùn)用BN可以使得網(wǎng)絡(luò)收斂變快,并且能避免梯度消失問(wèn)題。深度學(xué)習(xí)進(jìn)行模型訓(xùn)練時(shí),采用多GPU使用數(shù)據(jù)并行方式,圖4為BN層計(jì)算方式。
圖4 BN計(jì)算方式
圖5 SyncBN計(jì)算方式
在目標(biāo)檢測(cè)算法中,只有特征圖的感受野大于等于目標(biāo)大小時(shí)才能被檢測(cè)到。感受野是指每層的特征圖上的像素點(diǎn)在原始圖像中映射的區(qū)域大小。卷積神經(jīng)網(wǎng)絡(luò)中較深層的特征層例如圖6中的P7層具有較大的感受野以及豐富的語(yǔ)義信息,對(duì)目標(biāo)的姿態(tài)變化以及局部形變具有魯棒性,但是由于每一次的下采樣導(dǎo)致分辨率降低就丟失了幾何細(xì)節(jié)信息。相反,淺層特征具有很小的感受野和豐富的幾何細(xì)節(jié)信息。對(duì)于小物體而言,淺層特征包含了它的很多細(xì)節(jié)信息,隨著網(wǎng)絡(luò)層數(shù)的加深,由于stride過(guò)大,所提取特征的細(xì)節(jié)信息可能完全丟失,這樣通過(guò)深層特征檢測(cè)小物體就變得困難。對(duì)于行人目標(biāo)而言,行人的尺寸大都只占全圖的1/10以下,屬于較小尺寸目標(biāo),因此本文增加了C2淺層特征層,并通過(guò)1*1卷積和下一層的特征融合得到P2層。由于P7特征層最后的stride為128,此時(shí)的感受野變得很大,考慮到行人不屬于大尺寸目標(biāo),因此去掉了最后一層P7層。
圖6 改進(jìn)的FCOS網(wǎng)絡(luò)結(jié)構(gòu)
本文使用MobileNetV2作為基礎(chǔ)網(wǎng)絡(luò),在原來(lái)的網(wǎng)絡(luò)結(jié)構(gòu)上增加了C2層并與C3、C4、C5這3層作為特征層進(jìn)行特征的提取,其中P2、P3、P4、P5是由C2、C3、C4、C5經(jīng)過(guò)一個(gè)1*1卷積得到的??紤]到行人檢測(cè),去掉了P7層,而P6是在P5上設(shè)置了stride為2的卷積層并通過(guò)下采樣得到的。因此,最后得到的P2、P3、P4、P5、P6為特征金字塔層,分別對(duì)應(yīng)stride為4,8,16,32,64。對(duì)于每個(gè)特征金字塔產(chǎn)生的特征圖,其網(wǎng)絡(luò)結(jié)構(gòu)和處理過(guò)程參見(jiàn)文獻(xiàn)[7,12]。訓(xùn)練時(shí),在回歸的分支中加入一個(gè) Center-ness策略產(chǎn)生的損失,圖6為改進(jìn)的FCOS網(wǎng)絡(luò)結(jié)構(gòu)。
整個(gè)算法流程分為訓(xùn)練模塊和測(cè)試模塊,在訓(xùn)練模塊,對(duì)于訓(xùn)練的行人目標(biāo),網(wǎng)絡(luò)最后一層預(yù)測(cè)分類(lèi)向量的行人類(lèi)別向量以及邊界框坐標(biāo)的4D向量 (l*,t*,r*,b*), 而且不再訓(xùn)練多類(lèi)分類(lèi)器,而是訓(xùn)練1個(gè)二進(jìn)制分類(lèi)器。在基礎(chǔ)網(wǎng)絡(luò)的特征圖之后添加了4個(gè)卷積層分別用于分類(lèi)和回歸分支。在測(cè)試模塊,給定輸入圖像,通過(guò)網(wǎng)絡(luò)進(jìn)行前向傳遞,得到帶有預(yù)測(cè)行人類(lèi)別的預(yù)測(cè)邊界框。整個(gè)算法的實(shí)現(xiàn)步驟為:
(1)對(duì)輸入圖像進(jìn)行預(yù)處理操作;
(2)搭建如上圖6所示的網(wǎng)絡(luò)框架,將輸入圖片送入MobileNetV2基礎(chǔ)網(wǎng)絡(luò)得到輸入圖片的特征圖,在特征圖的每一點(diǎn)上面進(jìn)行回歸操作,訓(xùn)練獲取網(wǎng)絡(luò)模型;
(3)將預(yù)訓(xùn)練的網(wǎng)絡(luò)模型應(yīng)用到測(cè)試圖片中,從特征金字塔的多個(gè)檢測(cè)頭(Head)獲得預(yù)測(cè)結(jié)果;其中Head檢測(cè)網(wǎng)絡(luò)分為分類(lèi)和“中心度”(Center-ness)分支并列的分支、回歸分支,如上圖6所示;
(4)使用NMS后處理操作得到最終預(yù)測(cè)結(jié)果。
本文網(wǎng)絡(luò)采用的訓(xùn)練損失函數(shù)如式(2)
(2)
本實(shí)驗(yàn)操作系統(tǒng)為 Linux 16.04.5LTS,實(shí)驗(yàn)顯卡為 NVIDIA GeForce GTX1080GPU,GPU數(shù)量為4,系統(tǒng)的內(nèi)存為64 G,CUDA的版本為10.2,NVIDIA CUDNN為7.2。采用Pytorch深度學(xué)習(xí)框架進(jìn)行模型的訓(xùn)練和測(cè)試。
本文選擇加州理工大學(xué)提供的Caltech行人檢測(cè)數(shù)據(jù)集,進(jìn)行訓(xùn)練前,將格式轉(zhuǎn)換成標(biāo)準(zhǔn)的VOC格式。轉(zhuǎn)換好的數(shù)據(jù)集包括訓(xùn)練樣本和測(cè)試樣本共17 612張,其中訓(xùn)練集為12 328張,測(cè)試集為5284張。為避免網(wǎng)絡(luò)從頭開(kāi)始訓(xùn)練而導(dǎo)致計(jì)算時(shí)間和資源增加,本文首先加載MobileNetV2模型的分類(lèi)參數(shù),然后除去最后的分類(lèi)層,最后調(diào)用權(quán)重參數(shù)文件,并使用monentum=0.9,weigt_decay=0.0001的SGD優(yōu)化器,使用SyncBN,一共迭代90 000次,大約12個(gè)epoch。初始的學(xué)習(xí)率設(shè)為0.001,在30 000和50 000次分別將學(xué)習(xí)率除以10。
本文采用均值平均準(zhǔn)確度mAP(mean average precision)和每秒檢測(cè)幀數(shù)FPS(frames per second)作為行人檢測(cè)的性能指標(biāo),mAP越高表示模型準(zhǔn)確度越高,F(xiàn)PS越大表示檢測(cè)速度越快。mAP計(jì)算如式(3)
(3)
其中,APC表示目標(biāo)類(lèi)別C的平均精度,n為該類(lèi)別的圖片總數(shù),本實(shí)驗(yàn)中,類(lèi)別只有行人一類(lèi),所以C=1。表1是對(duì)比幾種模型的檢測(cè)效果。
表1 Caltech數(shù)據(jù)集下不同模型檢測(cè)效果對(duì)比
由以上數(shù)據(jù)可知,在本文Caltech數(shù)據(jù)集,輸入圖像尺寸為800×1333的情況下,經(jīng)典算法Faster R-CNN的mAP為74%,高于YOLO和SSD兩種算法,是由于該算法是兩階段再加上RPN,相比于一階段檢測(cè)算法網(wǎng)絡(luò)更加精準(zhǔn),但檢測(cè)速度僅為4.2,遠(yuǎn)遠(yuǎn)低于其它算法,更不滿(mǎn)足交通場(chǎng)景行人檢測(cè)實(shí)時(shí)性要求。一階段算法YOLO的mAP為66.7%,F(xiàn)PS為22,相比于其它算法,精度和速度都不高。對(duì)于原始FCOS算法,其mAP比基于anchor的目標(biāo)檢測(cè)算法SSD和 YOLOV4分別提高了9.6%和6.7%,但FPS卻低于YOLOV4算法的26.5%,因此為了提高檢測(cè)速度滿(mǎn)足實(shí)時(shí)性,本文算法將骨干網(wǎng)絡(luò)替換為MobileNetV2輕量型網(wǎng)絡(luò),總的計(jì)算量下降了大約9倍,F(xiàn)PS也有了顯著提升,為32.3幀/s。當(dāng)引用SyncBN時(shí),在幾乎不損失速度的情況下,mAP相比于FCOS-V2提升了5.5%,這主要是得益于SyncBN時(shí)多卡同步處理數(shù)據(jù),使用全局的樣本進(jìn)行歸一化,相當(dāng)于增大了批量大小,因此模型的整體性能提升了。最后,增加了C2淺層特征層進(jìn)行特征融合,同時(shí)去掉P7深層特征層,mAP提升了3.2%,是因?yàn)镃altech數(shù)據(jù)集是車(chē)載攝像頭拍攝,行人尺寸較小,增加淺層特征層,注入了更多幾何細(xì)節(jié)信息,更有利于小尺寸行人的檢測(cè)。
為驗(yàn)證改進(jìn)算法是否適應(yīng)于國(guó)內(nèi)交通場(chǎng)景下的行人檢測(cè),本文采用香港中文大學(xué)CUHK行人數(shù)據(jù)集進(jìn)行訓(xùn)練和驗(yàn)證,此數(shù)據(jù)集包含了1063張行人圖片。表2為CUHK數(shù)據(jù)集下的行人檢測(cè)效果。
通過(guò)表2數(shù)據(jù)可知,改進(jìn)后的FCOS的mAP值提高了5.3%,F(xiàn)PS提升了87.1%,主要是因?yàn)镕COS算法逐像素?zé)o錨的檢測(cè)方式,不需要預(yù)先設(shè)定大小去匹配行人框,因此泛化能力強(qiáng),同時(shí)采用輕量型網(wǎng)絡(luò)進(jìn)行特征提取提高了檢測(cè)速度,并且改變訓(xùn)練過(guò)程以及增加淺層特征層進(jìn)一步提升了檢測(cè)率,使得模型魯棒性更高。
表2 CUHK數(shù)據(jù)集下行人檢測(cè)效果
圖7為檢測(cè)效果。從效果圖可以看出,對(duì)于復(fù)雜的交通道路環(huán)境中,改進(jìn)后的FCOS算法能夠準(zhǔn)確的識(shí)別出行人目標(biāo)。具體來(lái)分析,圖7(a)中第一幅圖包含大尺寸行人目標(biāo)和小尺寸行人目標(biāo),改進(jìn)的FCOS算法都能很好識(shí)別,主要是因?yàn)镕COS算法中特征金字塔結(jié)構(gòu),將不同尺寸目標(biāo)分配到不同層進(jìn)行檢測(cè);圖7(a)中第二、三幅圖目標(biāo)尺寸較小并伴隨非目標(biāo)的輕微遮擋,第四幅圖行人屬于重疊目標(biāo),但改進(jìn)的FCOS算法能夠準(zhǔn)確檢測(cè)。為了進(jìn)一步體現(xiàn)本文改進(jìn)之處,圖7(b)進(jìn)行了效果對(duì)比,圖中存在尺寸非常小的行人,在未增加C2特征層時(shí)很難檢測(cè)出來(lái),在增加C2特征層時(shí),由于淺層特征層感受野較小并包含更豐富的行人細(xì)節(jié)信息,再與深層特征層進(jìn)行特征融合,這對(duì)于小尺寸目標(biāo)的檢測(cè)是有利的,因此最后一行圖小尺寸行人都有了很好的檢測(cè)。圖7(c)為國(guó)內(nèi)交通行人檢測(cè)效果圖,包括了小尺度行人、遮擋行人、密集行人,檢測(cè)結(jié)果較好。綜合圖7(a)、圖7(b)、圖7(c)可知,改進(jìn)的FCOS算法在復(fù)雜道路場(chǎng)景中都具有較好的魯棒性,模型具有一定的泛化能力。
圖7 檢測(cè)效果
為了進(jìn)一步體現(xiàn)本文提出的策略對(duì)模型的影響,采用消融實(shí)驗(yàn)的方法對(duì)每一組實(shí)驗(yàn)分別進(jìn)行訓(xùn)練,訓(xùn)練采用的數(shù)據(jù)集相同,然后將每一組訓(xùn)練好的模型分別在同一測(cè)試集進(jìn)行驗(yàn)證,為了結(jié)果更加可靠,增加了3000張的小尺度測(cè)試集,得出每一組實(shí)驗(yàn)的mAP值以及檢測(cè)速度FPS的值,其結(jié)果見(jiàn)表3。
表3 消融實(shí)驗(yàn)
如表3所示,共分為8組實(shí)驗(yàn),2、3、4組實(shí)驗(yàn)是在第1組實(shí)驗(yàn)的基礎(chǔ)上分別加入一種策略,將主干網(wǎng)絡(luò)換為MobileNetV2(表3縮寫(xiě)為V2)時(shí),計(jì)算量大大減少,在損失一點(diǎn)平均精度的基礎(chǔ)上FPS相對(duì)提高了94.1%。當(dāng)采用SyncBN時(shí),mAP值均大于其它兩種類(lèi)型,且FPS幾乎不下降,主要得益于同步歸一化計(jì)算全局梯度,相當(dāng)于增大了batchsize值,使得訓(xùn)練更加穩(wěn)定的收斂,得到更好的模型效果。第4組在第1組模型中加入了C2層,主要是為了有利于小目標(biāo)的檢測(cè),從表中可知,對(duì)于尺度小的行人,mAP值得到了顯著的提高,為84%,提高了6%。第5、第6、第7這3組分別加入了兩種策略,當(dāng)加入MobileNetV2時(shí),F(xiàn)PS值都得到了很大的提升,mAP的值略有下降,但是行人檢測(cè)技術(shù)最終要得到兩者的平衡。當(dāng)加入其它兩種策略時(shí),mAP值相比于加入一種策略都有了提高。第8組實(shí)驗(yàn)是加入了3組策略,其mAP值較于第7組有所下降,但是檢測(cè)速度提高了96.8%,保持了速度和精度的平衡。相比于第1組,也就是原FCOS,最終的mAP值提高了7.2%,F(xiàn)PS提高了85.3%。通過(guò)分析實(shí)驗(yàn)可知,本文改進(jìn)的算法是有效且合理的。
本文基于FCOS算法,提出了一種改進(jìn)型的行人檢測(cè)算法。首先采用MobileNetV2輕量型網(wǎng)絡(luò)進(jìn)行行人的特征提取,提高了檢測(cè)速度;然后引用SyncBN規(guī)范化的處理方式解決了訓(xùn)練過(guò)程中BN帶來(lái)網(wǎng)絡(luò)層失效問(wèn)題;最后,在網(wǎng)絡(luò)結(jié)構(gòu)層上增加C2淺層特征層并與深層特征層進(jìn)行特征融合,提升小尺度行人的檢測(cè)率,最終得到本文的行人檢測(cè)模型。
在Caltech數(shù)據(jù)集進(jìn)行了訓(xùn)練并驗(yàn)證,實(shí)驗(yàn)結(jié)果表明,相比于基于anchor的算法,本文算法減少了與anchor有關(guān)的超參設(shè)計(jì),也避免了由于anchor自身設(shè)計(jì)帶來(lái)的網(wǎng)絡(luò)泛化能力弱等問(wèn)題,其mAP值與傳統(tǒng)的算法相比分別提高了16.8%和13.9%,相比于改進(jìn)前FCOS算法,在精度提升7.2%的同時(shí),速度上提高了85.3%,滿(mǎn)足行人檢測(cè)實(shí)時(shí)性的要求。但是,行人檢測(cè)技術(shù)所涉及的課題具有一定的廣度和深度,本文基于FCOS的行人檢測(cè)算法研究工作有待于進(jìn)一步完善。