張立國,劉 博,孫勝春,張 勇,金 梅
1(燕山大學 電氣工程學院,秦皇島 066004)
2(燕山大學 河北省測試計量技術與儀器重點實驗室,秦皇島 066004)
行人檢測是計算機視覺和數字圖像處理的一個方向,廣泛用于安防、智能視頻監控等領域,將計算機視覺檢測目標用在減少人力的使用的同時提高檢測精度、提高靈活性具有重要意義.目前已有的行人檢測方法主要分為兩大類,一類是基于傳統視覺處理的方法,主要包括基于背景建模的算法、基于手工特征與機器學習的檢測算法.另一類主要是以神經網絡為主的目標檢測算法.
對以上算法中第一類算法的背景建模方法而言,其主要是通過對背景進行建模,然后將當前圖像與背景模型進行比較,確定前景,如ViBe 算法[1,2]、光流法[3,4]等,該類方法通常受環境光照變化、背景的多模態性、運動物體的陰影等多方面因素的影響,不具備較好的魯棒性.相比于背景建模算法,基于手工特征與機器學習算法的方法主要通過特定的特征實現檢測,如HOG+SVM[5,6]、HOG+DPM[7],但該類方法很難處理遮擋問題,人體姿勢動作幅度過大或物體方向改變也不易檢測.
在另一大類基于神經網絡的算法中,主要是以特征網絡提取特征然后組合頭部網絡回歸定位具體位置的方法定位檢測目標為主,近年來衍生出多種系列的檢測算法,如YOLO 系列[8-11]、RCNN 系列[12-14]、Anchor Free 系列[15-17],在實際的嵌入式設備應用上,主要是以YOLO 系列的閹割版和Anchor Free 系列為主,相對而言,YOLO 系列的閹割版雖然能取得較高的模型推理速度,但是當出現部分遮擋,行人部分超出視野范圍等情況,精度會嚴重降低.而既有的Anchor Free方法雖然整體結構較為簡單適用于嵌入式設備的部署,但是如CenterNet[16]、FCOS[17]等特征提取網絡結構特征提取層和參數量較多會嚴重導致推理速度變慢,所以本文通過優化特征網絡結構進行特征提取,從而保證頭部網絡輸入特征的有效性,此外針對行人間的相互遮擋情形,提出針對行人的高斯核分布改進方式,保證了模型的檢測精度.
CenterNet是基于中心點的檢測方法,使用圖像作為輸入,然后經過骨干網絡提取特征,最后在頭部網絡經過3 個分支,一個分支預測中心點的位置(HeatMap),一個分支預測因下采樣過程帶來中心點位置誤差的修正量(offset),最后一個分支預測檢測框的大小(scale),其抽象結構見圖1.一般而言,輸入圖像可用I∈RW×H×3表示,其中W表示圖像的寬度,H表示圖像的高度,3為圖像的通道數,預測中心點的分支最后得到預測結果其中R代表下采樣率,C代表類別數,表示與檢測物體的中心點相關,=0則表示與背景相關,預測修正量的分支會得到大小的預測值來表示每個中心點的修正值,同樣的預測修正量的分支會得到大小的預測值來表示每個中心點的修正值,預測檢測框大小的分支會得到的預測值來表示檢測物體的寬和高.而骨干網絡一般采用Hourglass[18]、DLA[19]等多層特征融合的模型.

圖1 CenterNet的網絡結構圖
在訓練CenterNet 過程中,通常按以下方式設置ground truth和損失函數,記檢測物體在原圖上的中心點為p,計算圖像經下采樣后低分辨率的同一位置為對于HeatMap 分支設置ground truth為高斯核的分布形式:

其中,σp是標準差,Yxyc依據標注的中心點生成的高斯分布,、表示在x、y方向上的分量,此分支訓練過程通過focal loss[20]定義損失函數:

其中表示HeatMap 分支相對應的Yxyc的預測值,α、β是focal loss的參數,N代表中心點(檢測到的目標物體)數量,一般設置α=2,β=4.在offset 分支,為了恢復因下采樣造成的誤差,ground truth 設置為使用L1 loss 進行回歸:


最后對以上3 個分支的損失進行平衡:

式中,一般在實驗中設置λsize=0.1,λoff=1.
在Backbone的研究中,模型有效性是一個重要的概念,在目標檢測網絡中都需要一個特征提取層提取深度特征,一般的做法是對高層的語義特征和低層的細節特征進行融合,即FPN[21]結構,這樣用在檢測過程中可以提高位置檢測和分類的精度,但同時也會極大的增加參數量,致使檢測的速度降低,所以越來越多的FPN 結構嘗試在盡可能少的增加參數量的同時能保證一定的檢測精度,以滿足在嵌入式設備上的實時性要求.其中EffcientDet[22]提出加權融合的BiFPN 結構就可以有效的對下采樣或上采樣后的不同分辨率的特征圖進行有效的融合,其結構如圖2所示.圖中假設P3、P4、P5、P6、P7為經過在初始輸入圖像上逐級下采樣后得到的不同分辨率的特征圖,然后通過跳躍連接使雙向網絡層結構(top-down和bottom-up)提取的特征進行特征融合.此外在融合的過程中,為了區分不同特征層對最后輸出特征的不同貢獻和提高特征提取結構的有效性,可以通過對不同層級的特征進行加權實現:

圖2 BiFPN 結構示意圖

其中,Ii表示融合過程中的所有被融合前的特征圖,wi為其對應的權值,是一個可訓練的參數,Σjwj表示所有的權值之和,O表示融合后結果特征圖的輸出.以P6和P7融合的過程為例,設輸入的特征層為和,第6 層中間的特征設為,輸出特征設為,同理第6 層的輸出特征為,計算第6 層的輸出如下:

經過以上計算就能更加有效的提取到低層細節特征和高層語義特征的混合特征,用于頭部網絡的檢測和分類任務.
原CenterNet 使用的backbone是多層特征融合的DLA34和Hourglass101,這類模型參數量大,前向傳播速度較慢,不適合使用在嵌入式這類計算能力有限的設備上,所以根據BiFPN 結構提出一種新的特征提取結構,其參數量在嵌入式設備上可以滿足實時性的同時,保證了精度不會出現大幅降低,改進后的網絡結構如圖3所示,從網絡結構的圖中可以看出輸入圖像首先經過一個Conv1(卷積)→Bn1(批標準化)→ReLU(激活層)→maxpool(最大池化)的結構得到一個64 維的特征圖,然后使用ResBlock(殘差塊)進一步提取特征,分別將殘差塊下采樣輸出的特征相對應的按式(7),式(8)進行分辨率調整,并且按圖中BiFPN 結構進行融合,經過BiFPN 結構之后得到對應輸入的不同層融合之后的特征,將這些特征經過Conv (卷積),DeConv[23](可變形卷積)送入到頭部分支,最后再在不同的分支分別進行卷積,得到各個頭部檢測分支的對應結果,綜合3 個分支的結果即可得到最終的檢測結果.

圖3 基于CenterNet 改進的網絡結構
本文所提方法訓練時的輸入量和原CenterNet 網絡的輸入量相同,不過因行人這一檢測類別的特殊性進行微調,并改進其相應的損失函數.
針對行人之間容易出現遮擋的情況,如圖4所示,通過改進訓練過程中HeatMap的高斯核分布形式,來提高準確度,即將(1)式修改為:

圖4 行人之間的相互遮擋

其中,σx為原方差 σp,gw和gh為標注框ground truth對應的寬和高,HeatMap的變化如圖5所示,圖5(a)中采用的是式(1)中的分布形式,如果以這種形式表達行人中心點的分布,在預測過程中當行人的距離較近時,很容易在預測過程中導致兩個響應峰值距離較近,導致最后使用最大池化或soft-NMS[24]等過濾手段時將其過濾,即響應更為強烈的預測中心點將另一個中心點“吞并”,而如果按式(5)的形式繪制HeatMap,則會在響應圖5(b)上產生一條明顯的界限,避免因行人相互遮擋或距離較近產生漏檢.相應的在HeatMap 分支設置損失函數:

圖5 改進前后的高斯核分布形式

式(10)與(2)的不同之處在于,首先因為應用的是針對于行人這一個單類別的檢測,所以HeatMap的結構沒有類別對應的維度,僅在x、y方向是有效的,其次針對于HeatMap 上Yxy≠1的情況,由于改進后高斯核在兩個方向上的分布形式不同,所以僅在y方向上對focal loss 損失進行衰減,這有利于檢測行人時生成更加符合其長寬比的檢測框,提高模型的精度.
實驗過程中使用CityPerson[25]數據集首先進行30 個epoch的預訓練,然后使用CrowdHuman 行人數據集進行130 個epoch 訓練和評測.CrowdHuman 數據集是密度較高的行人檢測數據集,平均每張圖片有22.64 個行人檢測框,在訓練過程中使用15 000 張訓練集圖像和4370 張驗證集圖像進行訓練,使用5000 張測試集圖像進行評測.
實驗訓練過程中所用硬件環境Inter Core i7 9400,GPU2080Ti,操作系統為Ubuntu 16.04,訓練深度學習框架為MXNet 1.5.0,最終應用的嵌入式平臺為Jetson TX2,在模型移植過程中采用TensorRT 加速,訓練和推理過程圖片采用512的大小作為輸入.
在評價指標上主要采用平均精度(Average Precision,AP)作為主要的評價依據,其計算過程如式(11):

其中,P表示精確度,R表示召回率.精確度是指正確檢測到的物體在所有目標中所占的比例,而召回率是指正確檢測到的物體在所有檢測到的目標中所占的比例,式(12)表示精確度的計算,式(13)表示召回率的計算,兩式中TP(IoU不小于閾值)為正確檢測出目標,FP(IoU 小于閾值)為錯誤檢測目標,FN為沒有被檢測出目標.本文IoU 閾值設置為0.3,當IoU ≥0.3 時,則認為檢測正確,否則為錯誤.

參數量和檢測速度的評測采用固定大小圖片512×512 作為輸入,分別計算模型前向傳播過程的權重參數的總量及傳播時間來實現.
為了更好的對改進后的模型及輸入進行評估,分別設置了不同的對比實驗,首先針對模型結構的適應性進行評估,對其Backbone 分別使用DLA34、ResNet34、MobileNet_v2[26]及本文改進后的結構進行對比,訓練過程的損失曲線和精度曲線分別如圖6和圖7所示,幾個Backbone的參數量如表1所示,由于MobileNet_v2的參數量較少,所以很快訓練權重就完成擬合,但最后的損失也略大,所以精度較低,相比于ResNet34,DLA34 融合了更多高級語義信息和低層細節信息,所以DLA34在整個訓練過程中以比ResNet34更少的參數量達到更優的效果.最后從本文算法的損失曲線和精度曲線來看,雖然相比于DLA34、和ResNet34的精度略低,但從表1可以看出其參數量相較于其他兩個Backbone 分別少了34.4%和56.2%,充分說明了本文所用方法提取特征的有效性.

圖6 訓練損失變化曲線

圖7 訓練精度變化曲線

表1 不同Backbone的參數量
為了體現對行人檢測框訓練時HeatMap的改進及相應的損失函數的修改帶來的效果增益,首先用未改進HeatMap 輸入的方法進行檢測,從中挑選出128 處因遮擋導致漏檢的結果,如圖8(a)所示,然后使用改進后的訓練方式及損失函數進行重新訓練,得到的結果如圖8(b),改進前后在精度和因遮擋造成的評測如表2所示.
結合圖8和表2可以看出,經過對HeatMap 訓練的高斯核分布改進后,不僅能夠提高檢測精度和減少因遮擋造成的漏檢,而且因為新的高斯核分布形式與行人這一類別更加匹配,所以也會提高新人檢測的置信度.

圖8 高斯核改進前后檢測效果

表2 改進HeatMap 上高斯核的分布方式對行人遮擋效果的提升效果
最后為了準確的評估模型在傳播速度(FPS)來綜合比較經TensorRT 加速后在Jetson TX2 上的表現,其中在移植時,權重參數全部量化為float8,結果如表3所示.

表3 Jetson TX2 移植后的效果
從表3可以看出,相比于其他幾種Backbone在Jetson TX2 上的表現,本文所提方法精度僅略微降低,但68 ms的推理速度足以保證模型在嵌入式平臺Jetson TX2 上的實時性.
本文主要是針對原CenterNet 檢測網絡在嵌入式設備上檢測速度較慢,提出了一種滿足實時要求又不大幅降低檢測精度的網絡模型.然后針對于行人這一檢測類別通過改進頭部網絡HeatMap 分支的高斯核分布進一步降低因遮擋帶來漏檢的方法.實驗結果表明,本文所提方法在嵌入式設備上與其他方法相比具有一定的優勢,在保證檢測精度的同時,通過有效的檢測模型極大的減少了參數量并提高了檢測速度,同時在行人檢測的相互遮擋問題上進行了研究.如何進一步在現有部署框架上盡可能少的使精度下降,是下一階段的研究方向.