趙九霄, 劉 毅, 李國燕
(天津城建大學(xué) 計算機與信息工程學(xué)院,天津 300384)
視頻監(jiān)控已經(jīng)成為生活中不可或缺的一部分,其重點應(yīng)用于駕駛輔助系統(tǒng)、安檢等方面。行人檢測作為視頻監(jiān)控中的關(guān)鍵組成部分,其研究目的是在復(fù)雜場景下準確并且快速檢測出行人目標(biāo)?,F(xiàn)階段行人檢測特征提取方法主要分為傳統(tǒng)的基于人工設(shè)計的特征提取方法和基于神經(jīng)網(wǎng)絡(luò)的特征提取方法。
傳統(tǒng)目標(biāo)檢測方法[1,2]對淺層特征描述較好,對數(shù)據(jù)量較少的數(shù)據(jù)集具有良好的分辨能力,但對于數(shù)據(jù)量較多的數(shù)據(jù)集則顯示出計算能力的不足,且存在著不能體現(xiàn)深層次特征的問題?;谏窠?jīng)網(wǎng)絡(luò)方法[3]可以為視頻行人檢測提供較為深層次的特征,并且可以應(yīng)對數(shù)據(jù)集帶來的計算量過大的問題,但卻沒有解決幀與幀之間運動信息聯(lián)系的問題。
為了解決上述問題,Kang K等人[4]提出了一種基于靜止圖像的行人檢測框架,結(jié)合時間信息來規(guī)范檢測結(jié)果。隨著遞歸神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)在視覺和序列學(xué)習(xí)[5]、目標(biāo)跟蹤[6]、目標(biāo)識別[7]方面的成功應(yīng)用,文獻[8]為了解決當(dāng)輸入圖像為長序列時RNN體系結(jié)構(gòu)精度退化的問題,將可以產(chǎn)生高精度的長短期記憶(long short-term memory,LSTM)網(wǎng)絡(luò)引入到模型中,該方法具有較高的精度。Liu M等人[9]創(chuàng)建了一個交織的遞歸卷積體系結(jié)構(gòu),并提出了一個有效的瓶頸層,與常規(guī)LSTM相比,可以提高運算效率。文獻[10]提出了一種ConvLSTM結(jié)構(gòu),并利用它建立了端到端的可訓(xùn)練模型。Karpathy A等人[11]提出了一種用自然語言描述生成圖像的模型,構(gòu)建了一種多形態(tài)遞歸神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)??梢娔壳暗难芯恐羞€存在著計算量較大、準確率低且不能充分的解決跨幀的運動信息聯(lián)系問題。
本文提出了一種基于改進SSD的視頻行人目標(biāo)檢測方法。首先,改進經(jīng)典的SSD(single shot multibox detector),將基礎(chǔ)網(wǎng)絡(luò)VGG—16(visual geometry group network—16)替換為改進的MobileNet網(wǎng)絡(luò),并使用區(qū)域化密集連接,可以在避免梯度消失的同時增加網(wǎng)絡(luò)的運算效率。其次,將GRU(gate recurrent unit)與改進的SSD框架結(jié)合。GRU單元的反饋連接和門控機制使模型能記憶空間依賴關(guān)系,并選擇性地傳播相關(guān)運動信息,將上下幀的運動信息反饋給檢測網(wǎng)絡(luò)以提升檢測準確率,并減少運算量。
灰度世界算法[12]是基于灰度世界假設(shè)的,灰度世界算法在物理上假設(shè)自然界物體光的平均反射值通常是一個固定值,它近似于灰色。采用色彩平衡方法將該假設(shè)應(yīng)用于訓(xùn)練集中的圖像,可以從圖像中消除環(huán)境光的影響,從而達到增強圖像的效果。
本文選用的數(shù)據(jù)集來源于道路流量視頻,一共切分為3 120 幀連續(xù)圖像。為更好地發(fā)揮檢測框架的性能優(yōu)勢,將訓(xùn)練集中的圖像轉(zhuǎn)換為VOC2012格式,訓(xùn)練集圖像的長度被重新縮放到500個像素,并相應(yīng)地調(diào)整寬度,以保持原始的縱橫比,因為需要檢測的對象只有行人,所以類別為1。
通過對訓(xùn)練樣本旋轉(zhuǎn)來實現(xiàn)數(shù)據(jù)擴增。旋轉(zhuǎn)包括水平旋轉(zhuǎn)、垂直旋轉(zhuǎn)、鏡像旋轉(zhuǎn),旋轉(zhuǎn)的角度范圍為+30°~-30°,并對新增樣本進行篩選,去除劣質(zhì)樣本。
在經(jīng)過對圖像數(shù)據(jù)的預(yù)處理之后,得到的數(shù)據(jù)如表1所示,分為三類。第一類是原始圖像訓(xùn)練集,第二類是經(jīng)過圖像增強后的訓(xùn)練集,第三類是經(jīng)過樣本擴增后的訓(xùn)練集。
表1 訓(xùn)練集數(shù)量
Liu W等人[13]提出SSD是一種快速高效的目標(biāo)檢測方法,這種檢測算法是在YOLO(you only look once)和Faster R-CNN的研究基礎(chǔ)上衍生而來。SSD框架分為兩部分,第一部分是由經(jīng)典模型VGG—16[14]組成的特征提取部分,第二部分是由四層卷積層構(gòu)成的多尺度特征檢測部分。
SSD框架結(jié)構(gòu)圖如圖1所示。在Conv4_3,Conv7,Conv8_2,Conv9_2,Conv10_2和Conv11_2特征層的每一個單元中按照不同長寬比分別提取4~6個默認框。
圖1 SSD框架結(jié)構(gòu)
SSD的損失函數(shù)包括兩部分,第一部分是對應(yīng)搜索框的位置(loc)損失,第二部分是類別置信度(Conf)損失
(1)
(2)
(3)
式中c為置信度,l為預(yù)測框,g為真框,loc為位置損失,Conf為置信度損失,a為分類和回歸的誤差權(quán)重,N為匹配到默認框的數(shù)量。
傳統(tǒng)的SSD使用VGG—16作為基礎(chǔ)特征提取網(wǎng)絡(luò),但其存在著計算量較大的問題。通過將改進的MobileNet作為SSD的基礎(chǔ)特征提取網(wǎng)絡(luò)來解決以上問題。
為了在有限性能的硬件條件下提高效率,開發(fā)了輕量網(wǎng)絡(luò)MobileNet[15]。MobileNet[15]可以通過減少參數(shù),達到減少計算量的目的,并且不以犧牲精度為代價。圖2表明MobileNet是由可深度分離卷積構(gòu)成的,它包括深度層(Depthwise)和點向?qū)?Pointwise)。Depthwise是使用3×3卷積核的深卷積層,而Pointwise是使用1×1卷積核的卷積層,每個卷積結(jié)果均采用批量歸一化算法和線性整流函數(shù)(rectified linear unit,ReLU)進行處理。
圖2 標(biāo)準卷積與深度可分離卷積對比
在輸入輸出圖像尺寸不發(fā)生變化的情況下,傳統(tǒng)卷積核的計算量C1為
C1=Dk×Dk×M×N×DF×DF
(4)
式中DF為輸入與輸出特征圖的寬度與高度,M為輸入特征圖的通道數(shù),N為輸出特征圖的通道數(shù),Dk為卷積核的長和寬。相比之下,深度可分離卷積的總計算量C2為
C2=Dk×Dk×M×DF×DF+M×N×DF×DF
(5)
(6)
針對MobileNet網(wǎng)絡(luò)特征傳遞較弱以及梯度消失的問題,將密集連接加入到MobileNet網(wǎng)絡(luò)中。原理是將網(wǎng)絡(luò)中的所有層連接,并將前面所有層的特征映射連接,一方面可以緩解梯度消失,另一方面可以把每一層的特征圖依次傳遞給下一層,該方式不僅可以增強特征的傳遞,也可以在一定程度上減少參數(shù)量,從而減少運算量。
如圖3所示,將池化層之前的所有層分為三個區(qū)域,采用密集連接方式連接。通過該方法將所有層的特征映射連接起來,第一個區(qū)域的輸入為Input的輸出,第二個區(qū)域的輸入為第一個區(qū)域的輸出,第三個區(qū)域的輸入為第一、二個區(qū)域的輸出組合,該區(qū)域的卷積運算結(jié)果為第一、二、三區(qū)域的輸出組合,圖4為改進后SSD框架。
圖3 改進后的區(qū)域密集連接結(jié)構(gòu)
圖4 改進后SSD框架結(jié)構(gòu)
人類的思想具有連貫性,但神經(jīng)網(wǎng)絡(luò)并不具備這種連貫性,更無法將幀與幀之間的運動信息逐層傳遞,因此,將GRU引入到檢測框架中。
2.3.1 輸入端
使用的GRU架構(gòu)可以從輸入幀獲取到空間結(jié)構(gòu)。選擇改進的SSD作為前端檢測行人的框架,并將檢測的結(jié)果保留為c+4的位置類別得分向量。具體來說,向量是由c個對象類別分數(shù)和4個位置參數(shù)組成。
除了位置—分數(shù)向量外,因為需要檢測一些遠距離小目標(biāo),因此,選用ROI Pooling為每個檢測到的對象提取了一個固定大小的描述符。選用Conv6,Conv7,Conv8層以及FC層的特征映射,利用這四個層產(chǎn)生的特征映射作為ROI Pooling層,并將輸出框集中到這些特征映射上,以計算固定大小的特征描述符。每個檢測到的盒子都是從幾個層中得到的,以產(chǎn)生一個固定長度的s×s特征描述符。將輸出的參數(shù)設(shè)置為7,除了最后輸出的特征描述符的大小為7×7之外,還添加了一個歸一化過程,使不同尺度的特征位于同一個單位球上。
將不同對象的位置、類別分數(shù)向量以及特征描述符向量分別連接成二維N×D的幀級張量,其中D=(c+4)+(s×s),它是每個檢測對象的復(fù)合特征長度,并取當(dāng)前幀N個對象來形成幀級向量。
為了利用過去的幀,使GRU能夠選擇性地記住什么是有用的預(yù)測,需要將當(dāng)前的幀級張量與T-1幀向后疊加,得到一個具有T×N×D大小的疊加張量輸入,得到的幀級向量將被輸入到GRU體系結(jié)構(gòu)中。
2.3.2 輸出端
給定幀T中,x∈Rπ×N×D,使用關(guān)聯(lián)GRU輸出具有相同大小的改進預(yù)測x。其中,只考慮當(dāng)前幀Y的預(yù)測,當(dāng)前幀Y由n個對象預(yù)測組成,假設(shè)幀中的地面真實對象在數(shù)量上不超過n,可以用零向量進行填充,以保持所有輸出對象預(yù)測數(shù)值的不變。每個對象預(yù)測包括三個項,分別為通過四維表示的對象位置、類別分數(shù)c和s×s大小的關(guān)聯(lián)特征。SSD與GRU的結(jié)合如圖5所示。
圖5 改進后SSD與GRU結(jié)合框架
改進方法可以解決給定輸入張量的對象回歸和對象關(guān)聯(lián)問題?;貧w類別分數(shù)和對象位置是從GRU的每個時間步長中得到的,并且這些時間步長處于隱藏狀態(tài)。而關(guān)聯(lián)特征是在連續(xù)的兩個時間步長之間計算的。每個幀中的隱藏狀態(tài)完全取決于網(wǎng)絡(luò)的當(dāng)前輸入情況及其在時間t-1中的隱藏狀態(tài)??傮w算法流程如圖6所示。
圖6 檢測算法流程
訓(xùn)練采用的CPU為Intel?CoreTMi7—7700HQ CPU(內(nèi)含GPU),內(nèi)存為32G,操作系統(tǒng)為Microsoft Windows 10,訓(xùn)練需要安裝Tensorflow2.0,OpenCV,Python3.6.6等。
為了優(yōu)化調(diào)參過程以及快速選取糾正誤差項的最佳值。實驗使用非極大值抑制(non-maximum suppression,NMS)方法,如果超過某一閾值則被視為同一對象,分數(shù)最低的一個將被刪除,用式(7)計算IOU(intersection over union),B1和B2表示兩個包圍框
(7)
通常NMS中的閾值設(shè)置為0.3,但這里將閾值設(shè)置為0.1。使用較低值的原因是,當(dāng)創(chuàng)建可用作評估數(shù)據(jù)的集成數(shù)據(jù)時,會存在坐標(biāo)位移問題。因此,將正確的集合包圍框設(shè)置為公共包圍框的平均值,并將所有實驗中經(jīng)過非極大值抑制留下的候選區(qū)域數(shù)量設(shè)置為100(默認設(shè)置為300),其他設(shè)置保持不變,后續(xù)所有測試和訓(xùn)練都在以上設(shè)置的基礎(chǔ)上進行。對于GRU,模型學(xué)習(xí)率為0.003,最終的訓(xùn)練次數(shù)為1 500次。
采用基于Tensorflow2.0版本進行訓(xùn)練。圖7改進SSD框架對第132幀的檢測結(jié)果。
圖7 網(wǎng)絡(luò)訓(xùn)練檢測結(jié)果
由圖7可以看出,在類別為人的前提下,檢測的準確度都達到了80 %以上,檢測結(jié)果充分說明了方法的可行性。
表2為與目前各種主流的四種檢測算法速度對比??梢钥闯?,改進SSD方法耗費訓(xùn)練時間較少,所需硬件成本較低,使用普通電腦配置(酷睿i7,16 GB內(nèi)存,Tensorflow2.0),使用的視頻行人目標(biāo)數(shù)據(jù)集,訓(xùn)練一步所需時間僅為5 s左右,總訓(xùn)練時長為8h左右。相比之下,F(xiàn)aster—R—CNN,YOLO等傳統(tǒng)檢測方法的單步訓(xùn)練時長較長,因此,所用方法在低性能設(shè)備上也可以進行訓(xùn)練。相比傳統(tǒng)檢測模型,改進SSD方法可以減少訓(xùn)練時間,同時對設(shè)備的性能需求較低,非常適合于城市道路行人目標(biāo)識別。
表2 四種不同方法檢測速度比較
需要識別的種類只有行人,因此無需考慮其他類別,該方法使用的數(shù)據(jù)集標(biāo)準均為VOC2012。由表3可以看出,改進后的SSD方法的檢測準確率高于經(jīng)典的YOLO,SSD等檢測算法。
表3 四種不同方法檢測精度比較
通過替換SSD基礎(chǔ)特征提取網(wǎng)絡(luò)VGG—16為改進的MobileNet,以及將GRU與檢測框架相結(jié)合,使改進后的模型更適合于檢測視頻行人目標(biāo)。同時,在建立幀與幀之間的關(guān)聯(lián)性的同時減少了訓(xùn)練參數(shù)。改進后的SSD檢測框架在準確率提升以及檢測速度提高方面優(yōu)于經(jīng)典的檢測算法,實驗驗證了該方法的有效性。