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