趙九霄, 劉 毅, 李國燕
(天津城建大學 計算機與信息工程學院,天津 300384)
視頻監控已經成為生活中不可或缺的一部分,其重點應用于駕駛輔助系統、安檢等方面。行人檢測作為視頻監控中的關鍵組成部分,其研究目的是在復雜場景下準確并且快速檢測出行人目標。現階段行人檢測特征提取方法主要分為傳統的基于人工設計的特征提取方法和基于神經網絡的特征提取方法。
傳統目標檢測方法[1,2]對淺層特征描述較好,對數據量較少的數據集具有良好的分辨能力,但對于數據量較多的數據集則顯示出計算能力的不足,且存在著不能體現深層次特征的問題。基于神經網絡方法[3]可以為視頻行人檢測提供較為深層次的特征,并且可以應對數據集帶來的計算量過大的問題,但卻沒有解決幀與幀之間運動信息聯系的問題。
為了解決上述問題,Kang K等人[4]提出了一種基于靜止圖像的行人檢測框架,結合時間信息來規范檢測結果。隨著遞歸神經網絡(recurrent neural network,RNN)在視覺和序列學習[5]、目標跟蹤[6]、目標識別[7]方面的成功應用,文獻[8]為了解決當輸入圖像為長序列時RNN體系結構精度退化的問題,將可以產生高精度的長短期記憶(long short-term memory,LSTM)網絡引入到模型中,該方法具有較高的精度。Liu M等人[9]創建了一個交織的遞歸卷積體系結構,并提出了一個有效的瓶頸層,與常規LSTM相比,可以提高運算效率。文獻[10]提出了一種ConvLSTM結構,并利用它建立了端到端的可訓練模型。Karpathy A等人[11]提出了一種用自然語言描述生成圖像的模型,構建了一種多形態遞歸神經網絡體系結構。可見目前的研究中還存在著計算量較大、準確率低且不能充分的解決跨幀的運動信息聯系問題。
本文提出了一種基于改進SSD的視頻行人目標檢測方法。首先,改進經典的SSD(single shot multibox detector),將基礎網絡VGG—16(visual geometry group network—16)替換為改進的MobileNet網絡,并使用區域化密集連接,可以在避免梯度消失的同時增加網絡的運算效率。其次,將GRU(gate recurrent unit)與改進的SSD框架結合。GRU單元的反饋連接和門控機制使模型能記憶空間依賴關系,并選擇性地傳播相關運動信息,將上下幀的運動信息反饋給檢測網絡以提升檢測準確率,并減少運算量。
灰度世界算法[12]是基于灰度世界假設的,灰度世界算法在物理上假設自然界物體光的平均反射值通常是一個固定值,它近似于灰色。采用色彩平衡方法將該假設應用于訓練集中的圖像,可以從圖像中消除環境光的影響,從而達到增強圖像的效果。
本文選用的數據集來源于道路流量視頻,一共切分為3 120 幀連續圖像。為更好地發揮檢測框架的性能優勢,將訓練集中的圖像轉換為VOC2012格式,訓練集圖像的長度被重新縮放到500個像素,并相應地調整寬度,以保持原始的縱橫比,因為需要檢測的對象只有行人,所以類別為1。
通過對訓練樣本旋轉來實現數據擴增。旋轉包括水平旋轉、垂直旋轉、鏡像旋轉,旋轉的角度范圍為+30°~-30°,并對新增樣本進行篩選,去除劣質樣本。
在經過對圖像數據的預處理之后,得到的數據如表1所示,分為三類。第一類是原始圖像訓練集,第二類是經過圖像增強后的訓練集,第三類是經過樣本擴增后的訓練集。

表1 訓練集數量
Liu W等人[13]提出SSD是一種快速高效的目標檢測方法,這種檢測算法是在YOLO(you only look once)和Faster R-CNN的研究基礎上衍生而來。SSD框架分為兩部分,第一部分是由經典模型VGG—16[14]組成的特征提取部分,第二部分是由四層卷積層構成的多尺度特征檢測部分。
SSD框架結構圖如圖1所示。在Conv4_3,Conv7,Conv8_2,Conv9_2,Conv10_2和Conv11_2特征層的每一個單元中按照不同長寬比分別提取4~6個默認框。

圖1 SSD框架結構
SSD的損失函數包括兩部分,第一部分是對應搜索框的位置(loc)損失,第二部分是類別置信度(Conf)損失
(1)
(2)
(3)
式中c為置信度,l為預測框,g為真框,loc為位置損失,Conf為置信度損失,a為分類和回歸的誤差權重,N為匹配到默認框的數量。
傳統的SSD使用VGG—16作為基礎特征提取網絡,但其存在著計算量較大的問題。通過將改進的MobileNet作為SSD的基礎特征提取網絡來解決以上問題。
為了在有限性能的硬件條件下提高效率,開發了輕量網絡MobileNet[15]。MobileNet[15]可以通過減少參數,達到減少計算量的目的,并且不以犧牲精度為代價。圖2表明MobileNet是由可深度分離卷積構成的,它包括深度層(Depthwise)和點向層(Pointwise)。Depthwise是使用3×3卷積核的深卷積層,而Pointwise是使用1×1卷積核的卷積層,每個卷積結果均采用批量歸一化算法和線性整流函數(rectified linear unit,ReLU)進行處理。

圖2 標準卷積與深度可分離卷積對比
在輸入輸出圖像尺寸不發生變化的情況下,傳統卷積核的計算量C1為
C1=Dk×Dk×M×N×DF×DF
(4)
式中DF為輸入與輸出特征圖的寬度與高度,M為輸入特征圖的通道數,N為輸出特征圖的通道數,Dk為卷積核的長和寬。相比之下,深度可分離卷積的總計算量C2為
C2=Dk×Dk×M×DF×DF+M×N×DF×DF
(5)
(6)

針對MobileNet網絡特征傳遞較弱以及梯度消失的問題,將密集連接加入到MobileNet網絡中。原理是將網絡中的所有層連接,并將前面所有層的特征映射連接,一方面可以緩解梯度消失,另一方面可以把每一層的特征圖依次傳遞給下一層,該方式不僅可以增強特征的傳遞,也可以在一定程度上減少參數量,從而減少運算量。
如圖3所示,將池化層之前的所有層分為三個區域,采用密集連接方式連接。通過該方法將所有層的特征映射連接起來,第一個區域的輸入為Input的輸出,第二個區域的輸入為第一個區域的輸出,第三個區域的輸入為第一、二個區域的輸出組合,該區域的卷積運算結果為第一、二、三區域的輸出組合,圖4為改進后SSD框架。

圖3 改進后的區域密集連接結構

圖4 改進后SSD框架結構
人類的思想具有連貫性,但神經網絡并不具備這種連貫性,更無法將幀與幀之間的運動信息逐層傳遞,因此,將GRU引入到檢測框架中。
2.3.1 輸入端
使用的GRU架構可以從輸入幀獲取到空間結構。選擇改進的SSD作為前端檢測行人的框架,并將檢測的結果保留為c+4的位置類別得分向量。具體來說,向量是由c個對象類別分數和4個位置參數組成。
除了位置—分數向量外,因為需要檢測一些遠距離小目標,因此,選用ROI Pooling為每個檢測到的對象提取了一個固定大小的描述符。選用Conv6,Conv7,Conv8層以及FC層的特征映射,利用這四個層產生的特征映射作為ROI Pooling層,并將輸出框集中到這些特征映射上,以計算固定大小的特征描述符。每個檢測到的盒子都是從幾個層中得到的,以產生一個固定長度的s×s特征描述符。將輸出的參數設置為7,除了最后輸出的特征描述符的大小為7×7之外,還添加了一個歸一化過程,使不同尺度的特征位于同一個單位球上。
將不同對象的位置、類別分數向量以及特征描述符向量分別連接成二維N×D的幀級張量,其中D=(c+4)+(s×s),它是每個檢測對象的復合特征長度,并取當前幀N個對象來形成幀級向量。
為了利用過去的幀,使GRU能夠選擇性地記住什么是有用的預測,需要將當前的幀級張量與T-1幀向后疊加,得到一個具有T×N×D大小的疊加張量輸入,得到的幀級向量將被輸入到GRU體系結構中。
2.3.2 輸出端
給定幀T中,x∈Rπ×N×D,使用關聯GRU輸出具有相同大小的改進預測x。其中,只考慮當前幀Y的預測,當前幀Y由n個對象預測組成,假設幀中的地面真實對象在數量上不超過n,可以用零向量進行填充,以保持所有輸出對象預測數值的不變。每個對象預測包括三個項,分別為通過四維表示的對象位置、類別分數c和s×s大小的關聯特征。SSD與GRU的結合如圖5所示。

圖5 改進后SSD與GRU結合框架
改進方法可以解決給定輸入張量的對象回歸和對象關聯問題。回歸類別分數和對象位置是從GRU的每個時間步長中得到的,并且這些時間步長處于隱藏狀態。而關聯特征是在連續的兩個時間步長之間計算的。每個幀中的隱藏狀態完全取決于網絡的當前輸入情況及其在時間t-1中的隱藏狀態。總體算法流程如圖6所示。

圖6 檢測算法流程
訓練采用的CPU為Intel?CoreTMi7—7700HQ CPU(內含GPU),內存為32G,操作系統為Microsoft Windows 10,訓練需要安裝Tensorflow2.0,OpenCV,Python3.6.6等。
為了優化調參過程以及快速選取糾正誤差項的最佳值。實驗使用非極大值抑制(non-maximum suppression,NMS)方法,如果超過某一閾值則被視為同一對象,分數最低的一個將被刪除,用式(7)計算IOU(intersection over union),B1和B2表示兩個包圍框
(7)
通常NMS中的閾值設置為0.3,但這里將閾值設置為0.1。使用較低值的原因是,當創建可用作評估數據的集成數據時,會存在坐標位移問題。因此,將正確的集合包圍框設置為公共包圍框的平均值,并將所有實驗中經過非極大值抑制留下的候選區域數量設置為100(默認設置為300),其他設置保持不變,后續所有測試和訓練都在以上設置的基礎上進行。對于GRU,模型學習率為0.003,最終的訓練次數為1 500次。
采用基于Tensorflow2.0版本進行訓練。圖7改進SSD框架對第132幀的檢測結果。

圖7 網絡訓練檢測結果
由圖7可以看出,在類別為人的前提下,檢測的準確度都達到了80 %以上,檢測結果充分說明了方法的可行性。
表2為與目前各種主流的四種檢測算法速度對比。可以看出,改進SSD方法耗費訓練時間較少,所需硬件成本較低,使用普通電腦配置(酷睿i7,16 GB內存,Tensorflow2.0),使用的視頻行人目標數據集,訓練一步所需時間僅為5 s左右,總訓練時長為8h左右。相比之下,Faster—R—CNN,YOLO等傳統檢測方法的單步訓練時長較長,因此,所用方法在低性能設備上也可以進行訓練。相比傳統檢測模型,改進SSD方法可以減少訓練時間,同時對設備的性能需求較低,非常適合于城市道路行人目標識別。

表2 四種不同方法檢測速度比較
需要識別的種類只有行人,因此無需考慮其他類別,該方法使用的數據集標準均為VOC2012。由表3可以看出,改進后的SSD方法的檢測準確率高于經典的YOLO,SSD等檢測算法。

表3 四種不同方法檢測精度比較
通過替換SSD基礎特征提取網絡VGG—16為改進的MobileNet,以及將GRU與檢測框架相結合,使改進后的模型更適合于檢測視頻行人目標。同時,在建立幀與幀之間的關聯性的同時減少了訓練參數。改進后的SSD檢測框架在準確率提升以及檢測速度提高方面優于經典的檢測算法,實驗驗證了該方法的有效性。