張立國,劉 博,孫勝春,張 勇,金 梅
1(燕山大學(xué) 電氣工程學(xué)院,秦皇島 066004)
2(燕山大學(xué) 河北省測試計(jì)量技術(shù)與儀器重點(diǎn)實(shí)驗(yàn)室,秦皇島 066004)
行人檢測是計(jì)算機(jī)視覺和數(shù)字圖像處理的一個方向,廣泛用于安防、智能視頻監(jiān)控等領(lǐng)域,將計(jì)算機(jī)視覺檢測目標(biāo)用在減少人力的使用的同時提高檢測精度、提高靈活性具有重要意義.目前已有的行人檢測方法主要分為兩大類,一類是基于傳統(tǒng)視覺處理的方法,主要包括基于背景建模的算法、基于手工特征與機(jī)器學(xué)習(xí)的檢測算法.另一類主要是以神經(jīng)網(wǎng)絡(luò)為主的目標(biāo)檢測算法.
對以上算法中第一類算法的背景建模方法而言,其主要是通過對背景進(jìn)行建模,然后將當(dāng)前圖像與背景模型進(jìn)行比較,確定前景,如ViBe 算法[1,2]、光流法[3,4]等,該類方法通常受環(huán)境光照變化、背景的多模態(tài)性、運(yùn)動物體的陰影等多方面因素的影響,不具備較好的魯棒性.相比于背景建模算法,基于手工特征與機(jī)器學(xué)習(xí)算法的方法主要通過特定的特征實(shí)現(xiàn)檢測,如HOG+SVM[5,6]、HOG+DPM[7],但該類方法很難處理遮擋問題,人體姿勢動作幅度過大或物體方向改變也不易檢測.
在另一大類基于神經(jīng)網(wǎng)絡(luò)的算法中,主要是以特征網(wǎng)絡(luò)提取特征然后組合頭部網(wǎng)絡(luò)回歸定位具體位置的方法定位檢測目標(biāo)為主,近年來衍生出多種系列的檢測算法,如YOLO 系列[8-11]、RCNN 系列[12-14]、Anchor Free 系列[15-17],在實(shí)際的嵌入式設(shè)備應(yīng)用上,主要是以YOLO 系列的閹割版和Anchor Free 系列為主,相對而言,YOLO 系列的閹割版雖然能取得較高的模型推理速度,但是當(dāng)出現(xiàn)部分遮擋,行人部分超出視野范圍等情況,精度會嚴(yán)重降低.而既有的Anchor Free方法雖然整體結(jié)構(gòu)較為簡單適用于嵌入式設(shè)備的部署,但是如CenterNet[16]、FCOS[17]等特征提取網(wǎng)絡(luò)結(jié)構(gòu)特征提取層和參數(shù)量較多會嚴(yán)重導(dǎo)致推理速度變慢,所以本文通過優(yōu)化特征網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行特征提取,從而保證頭部網(wǎng)絡(luò)輸入特征的有效性,此外針對行人間的相互遮擋情形,提出針對行人的高斯核分布改進(jìn)方式,保證了模型的檢測精度.
CenterNet是基于中心點(diǎn)的檢測方法,使用圖像作為輸入,然后經(jīng)過骨干網(wǎng)絡(luò)提取特征,最后在頭部網(wǎng)絡(luò)經(jīng)過3 個分支,一個分支預(yù)測中心點(diǎn)的位置(HeatMap),一個分支預(yù)測因下采樣過程帶來中心點(diǎn)位置誤差的修正量(offset),最后一個分支預(yù)測檢測框的大小(scale),其抽象結(jié)構(gòu)見圖1.一般而言,輸入圖像可用I∈RW×H×3表示,其中W表示圖像的寬度,H表示圖像的高度,3為圖像的通道數(shù),預(yù)測中心點(diǎn)的分支最后得到預(yù)測結(jié)果其中R代表下采樣率,C代表類別數(shù),表示與檢測物體的中心點(diǎn)相關(guān),=0則表示與背景相關(guān),預(yù)測修正量的分支會得到大小的預(yù)測值來表示每個中心點(diǎn)的修正值,同樣的預(yù)測修正量的分支會得到大小的預(yù)測值來表示每個中心點(diǎn)的修正值,預(yù)測檢測框大小的分支會得到的預(yù)測值來表示檢測物體的寬和高.而骨干網(wǎng)絡(luò)一般采用Hourglass[18]、DLA[19]等多層特征融合的模型.
圖1 CenterNet的網(wǎng)絡(luò)結(jié)構(gòu)圖
在訓(xùn)練CenterNet 過程中,通常按以下方式設(shè)置ground truth和損失函數(shù),記檢測物體在原圖上的中心點(diǎn)為p,計(jì)算圖像經(jīng)下采樣后低分辨率的同一位置為對于HeatMap 分支設(shè)置ground truth為高斯核的分布形式:
其中,σp是標(biāo)準(zhǔn)差,Yxyc依據(jù)標(biāo)注的中心點(diǎn)生成的高斯分布,、表示在x、y方向上的分量,此分支訓(xùn)練過程通過focal loss[20]定義損失函數(shù):
其中表示HeatMap 分支相對應(yīng)的Yxyc的預(yù)測值,α、β是focal loss的參數(shù),N代表中心點(diǎn)(檢測到的目標(biāo)物體)數(shù)量,一般設(shè)置α=2,β=4.在offset 分支,為了恢復(fù)因下采樣造成的誤差,ground truth 設(shè)置為使用L1 loss 進(jìn)行回歸:
最后對以上3 個分支的損失進(jìn)行平衡:
式中,一般在實(shí)驗(yàn)中設(shè)置λsize=0.1,λoff=1.
在Backbone的研究中,模型有效性是一個重要的概念,在目標(biāo)檢測網(wǎng)絡(luò)中都需要一個特征提取層提取深度特征,一般的做法是對高層的語義特征和低層的細(xì)節(jié)特征進(jìn)行融合,即FPN[21]結(jié)構(gòu),這樣用在檢測過程中可以提高位置檢測和分類的精度,但同時也會極大的增加參數(shù)量,致使檢測的速度降低,所以越來越多的FPN 結(jié)構(gòu)嘗試在盡可能少的增加參數(shù)量的同時能保證一定的檢測精度,以滿足在嵌入式設(shè)備上的實(shí)時性要求.其中EffcientDet[22]提出加權(quán)融合的BiFPN 結(jié)構(gòu)就可以有效的對下采樣或上采樣后的不同分辨率的特征圖進(jìn)行有效的融合,其結(jié)構(gòu)如圖2所示.圖中假設(shè)P3、P4、P5、P6、P7為經(jīng)過在初始輸入圖像上逐級下采樣后得到的不同分辨率的特征圖,然后通過跳躍連接使雙向網(wǎng)絡(luò)層結(jié)構(gòu)(top-down和bottom-up)提取的特征進(jìn)行特征融合.此外在融合的過程中,為了區(qū)分不同特征層對最后輸出特征的不同貢獻(xiàn)和提高特征提取結(jié)構(gòu)的有效性,可以通過對不同層級的特征進(jìn)行加權(quán)實(shí)現(xiàn):
圖2 BiFPN 結(jié)構(gòu)示意圖
其中,Ii表示融合過程中的所有被融合前的特征圖,wi為其對應(yīng)的權(quán)值,是一個可訓(xùn)練的參數(shù),Σjwj表示所有的權(quán)值之和,O表示融合后結(jié)果特征圖的輸出.以P6和P7融合的過程為例,設(shè)輸入的特征層為和,第6 層中間的特征設(shè)為,輸出特征設(shè)為,同理第6 層的輸出特征為,計(jì)算第6 層的輸出如下:
經(jīng)過以上計(jì)算就能更加有效的提取到低層細(xì)節(jié)特征和高層語義特征的混合特征,用于頭部網(wǎng)絡(luò)的檢測和分類任務(wù).
原CenterNet 使用的backbone是多層特征融合的DLA34和Hourglass101,這類模型參數(shù)量大,前向傳播速度較慢,不適合使用在嵌入式這類計(jì)算能力有限的設(shè)備上,所以根據(jù)BiFPN 結(jié)構(gòu)提出一種新的特征提取結(jié)構(gòu),其參數(shù)量在嵌入式設(shè)備上可以滿足實(shí)時性的同時,保證了精度不會出現(xiàn)大幅降低,改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,從網(wǎng)絡(luò)結(jié)構(gòu)的圖中可以看出輸入圖像首先經(jīng)過一個Conv1(卷積)→Bn1(批標(biāo)準(zhǔn)化)→ReLU(激活層)→maxpool(最大池化)的結(jié)構(gòu)得到一個64 維的特征圖,然后使用ResBlock(殘差塊)進(jìn)一步提取特征,分別將殘差塊下采樣輸出的特征相對應(yīng)的按式(7),式(8)進(jìn)行分辨率調(diào)整,并且按圖中BiFPN 結(jié)構(gòu)進(jìn)行融合,經(jīng)過BiFPN 結(jié)構(gòu)之后得到對應(yīng)輸入的不同層融合之后的特征,將這些特征經(jīng)過Conv (卷積),DeConv[23](可變形卷積)送入到頭部分支,最后再在不同的分支分別進(jìn)行卷積,得到各個頭部檢測分支的對應(yīng)結(jié)果,綜合3 個分支的結(jié)果即可得到最終的檢測結(jié)果.
圖3 基于CenterNet 改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)
本文所提方法訓(xùn)練時的輸入量和原CenterNet 網(wǎng)絡(luò)的輸入量相同,不過因行人這一檢測類別的特殊性進(jìn)行微調(diào),并改進(jìn)其相應(yīng)的損失函數(shù).
針對行人之間容易出現(xiàn)遮擋的情況,如圖4所示,通過改進(jìn)訓(xùn)練過程中HeatMap的高斯核分布形式,來提高準(zhǔn)確度,即將(1)式修改為:
圖4 行人之間的相互遮擋
其中,σx為原方差 σp,gw和gh為標(biāo)注框ground truth對應(yīng)的寬和高,HeatMap的變化如圖5所示,圖5(a)中采用的是式(1)中的分布形式,如果以這種形式表達(dá)行人中心點(diǎn)的分布,在預(yù)測過程中當(dāng)行人的距離較近時,很容易在預(yù)測過程中導(dǎo)致兩個響應(yīng)峰值距離較近,導(dǎo)致最后使用最大池化或soft-NMS[24]等過濾手段時將其過濾,即響應(yīng)更為強(qiáng)烈的預(yù)測中心點(diǎn)將另一個中心點(diǎn)“吞并”,而如果按式(5)的形式繪制HeatMap,則會在響應(yīng)圖5(b)上產(chǎn)生一條明顯的界限,避免因行人相互遮擋或距離較近產(chǎn)生漏檢.相應(yīng)的在HeatMap 分支設(shè)置損失函數(shù):
圖5 改進(jìn)前后的高斯核分布形式
式(10)與(2)的不同之處在于,首先因?yàn)閼?yīng)用的是針對于行人這一個單類別的檢測,所以HeatMap的結(jié)構(gòu)沒有類別對應(yīng)的維度,僅在x、y方向是有效的,其次針對于HeatMap 上Yxy≠1的情況,由于改進(jìn)后高斯核在兩個方向上的分布形式不同,所以僅在y方向上對focal loss 損失進(jìn)行衰減,這有利于檢測行人時生成更加符合其長寬比的檢測框,提高模型的精度.
實(shí)驗(yàn)過程中使用CityPerson[25]數(shù)據(jù)集首先進(jìn)行30 個epoch的預(yù)訓(xùn)練,然后使用CrowdHuman 行人數(shù)據(jù)集進(jìn)行130 個epoch 訓(xùn)練和評測.CrowdHuman 數(shù)據(jù)集是密度較高的行人檢測數(shù)據(jù)集,平均每張圖片有22.64 個行人檢測框,在訓(xùn)練過程中使用15 000 張訓(xùn)練集圖像和4370 張驗(yàn)證集圖像進(jìn)行訓(xùn)練,使用5000 張測試集圖像進(jìn)行評測.
實(shí)驗(yàn)訓(xùn)練過程中所用硬件環(huán)境Inter Core i7 9400,GPU2080Ti,操作系統(tǒng)為Ubuntu 16.04,訓(xùn)練深度學(xué)習(xí)框架為MXNet 1.5.0,最終應(yīng)用的嵌入式平臺為Jetson TX2,在模型移植過程中采用TensorRT 加速,訓(xùn)練和推理過程圖片采用512的大小作為輸入.
在評價(jià)指標(biāo)上主要采用平均精度(Average Precision,AP)作為主要的評價(jià)依據(jù),其計(jì)算過程如式(11):
其中,P表示精確度,R表示召回率.精確度是指正確檢測到的物體在所有目標(biāo)中所占的比例,而召回率是指正確檢測到的物體在所有檢測到的目標(biāo)中所占的比例,式(12)表示精確度的計(jì)算,式(13)表示召回率的計(jì)算,兩式中TP(IoU不小于閾值)為正確檢測出目標(biāo),FP(IoU 小于閾值)為錯誤檢測目標(biāo),FN為沒有被檢測出目標(biāo).本文IoU 閾值設(shè)置為0.3,當(dāng)IoU ≥0.3 時,則認(rèn)為檢測正確,否則為錯誤.
參數(shù)量和檢測速度的評測采用固定大小圖片512×512 作為輸入,分別計(jì)算模型前向傳播過程的權(quán)重參數(shù)的總量及傳播時間來實(shí)現(xiàn).
為了更好的對改進(jìn)后的模型及輸入進(jìn)行評估,分別設(shè)置了不同的對比實(shí)驗(yàn),首先針對模型結(jié)構(gòu)的適應(yīng)性進(jìn)行評估,對其Backbone 分別使用DLA34、ResNet34、MobileNet_v2[26]及本文改進(jìn)后的結(jié)構(gòu)進(jìn)行對比,訓(xùn)練過程的損失曲線和精度曲線分別如圖6和圖7所示,幾個Backbone的參數(shù)量如表1所示,由于MobileNet_v2的參數(shù)量較少,所以很快訓(xùn)練權(quán)重就完成擬合,但最后的損失也略大,所以精度較低,相比于ResNet34,DLA34 融合了更多高級語義信息和低層細(xì)節(jié)信息,所以DLA34在整個訓(xùn)練過程中以比ResNet34更少的參數(shù)量達(dá)到更優(yōu)的效果.最后從本文算法的損失曲線和精度曲線來看,雖然相比于DLA34、和ResNet34的精度略低,但從表1可以看出其參數(shù)量相較于其他兩個Backbone 分別少了34.4%和56.2%,充分說明了本文所用方法提取特征的有效性.
圖6 訓(xùn)練損失變化曲線
圖7 訓(xùn)練精度變化曲線
表1 不同Backbone的參數(shù)量
為了體現(xiàn)對行人檢測框訓(xùn)練時HeatMap的改進(jìn)及相應(yīng)的損失函數(shù)的修改帶來的效果增益,首先用未改進(jìn)HeatMap 輸入的方法進(jìn)行檢測,從中挑選出128 處因遮擋導(dǎo)致漏檢的結(jié)果,如圖8(a)所示,然后使用改進(jìn)后的訓(xùn)練方式及損失函數(shù)進(jìn)行重新訓(xùn)練,得到的結(jié)果如圖8(b),改進(jìn)前后在精度和因遮擋造成的評測如表2所示.
結(jié)合圖8和表2可以看出,經(jīng)過對HeatMap 訓(xùn)練的高斯核分布改進(jìn)后,不僅能夠提高檢測精度和減少因遮擋造成的漏檢,而且因?yàn)樾碌母咚购朔植夹问脚c行人這一類別更加匹配,所以也會提高新人檢測的置信度.
圖8 高斯核改進(jìn)前后檢測效果
表2 改進(jìn)HeatMap 上高斯核的分布方式對行人遮擋效果的提升效果
最后為了準(zhǔn)確的評估模型在傳播速度(FPS)來綜合比較經(jīng)TensorRT 加速后在Jetson TX2 上的表現(xiàn),其中在移植時,權(quán)重參數(shù)全部量化為float8,結(jié)果如表3所示.
表3 Jetson TX2 移植后的效果
從表3可以看出,相比于其他幾種Backbone在Jetson TX2 上的表現(xiàn),本文所提方法精度僅略微降低,但68 ms的推理速度足以保證模型在嵌入式平臺Jetson TX2 上的實(shí)時性.
本文主要是針對原CenterNet 檢測網(wǎng)絡(luò)在嵌入式設(shè)備上檢測速度較慢,提出了一種滿足實(shí)時要求又不大幅降低檢測精度的網(wǎng)絡(luò)模型.然后針對于行人這一檢測類別通過改進(jìn)頭部網(wǎng)絡(luò)HeatMap 分支的高斯核分布進(jìn)一步降低因遮擋帶來漏檢的方法.實(shí)驗(yàn)結(jié)果表明,本文所提方法在嵌入式設(shè)備上與其他方法相比具有一定的優(yōu)勢,在保證檢測精度的同時,通過有效的檢測模型極大的減少了參數(shù)量并提高了檢測速度,同時在行人檢測的相互遮擋問題上進(jìn)行了研究.如何進(jìn)一步在現(xiàn)有部署框架上盡可能少的使精度下降,是下一階段的研究方向.