趙 維, 沈柏杉, 張 宇, 孔 俊
(1.吉林警察學院 信息工程系, 長春130117; 2.東北師范大學 信息科學與技術(shù)學院, 長春130117)
行車安全已成為目前我國威脅公共安全、 建設(shè)平安中國的主要因素之一。 作為道路交通的主導者, 很多駕駛?cè)藛T會覺得沒有嚴重的交通違法行為, 行車就一定安全。 其實許多的交通事故正是因為平常狀態(tài)下的一些難以察覺的駕駛行為習慣造成的。 基于車載監(jiān)控視頻的駕駛員行為分析是新興科研與應(yīng)用的結(jié)合。 國內(nèi)外眾多學者基于計算機視覺對輔助安全駕駛進行了大量研究[1-3],一些研究機構(gòu)開發(fā)了臉部疲勞狀態(tài)檢測系統(tǒng)用于輔助安全駕駛[4-5], 另一些學者也從觀察駕駛員身體活動狀態(tài)的角度出發(fā), 對駕駛員行為進行識別檢測[6]。 隨著大數(shù)據(jù)、 云計算、 “ 互聯(lián)網(wǎng)+” 時代的到來, 利用人工智能與機器視覺自動檢測與分析駕駛?cè)藛T異常行為以減少交通事故的研究越來越多[7]。 但還是面臨一些困難, 現(xiàn)實的環(huán)境中, 不同的場景存在雜亂背景、 阻擋和視角變化等情況,而目前方法都是基于一些具體且固定的應(yīng)用場景假設(shè)上的, 如目標只有小的尺度變化或視覺改變等, 而這在現(xiàn)實世界中是很難滿足的。 以往的報道研究只使用了單獨的一個角度, 或從疲勞駕駛,手持電話等單一行為進行編碼, 普適性較低。 為此筆者提出了一種多角度行為識別方法, 從3 個角度同步捕捉駕駛?cè)藛T行為的視頻, 構(gòu)建多角度駕駛行為的視頻和數(shù)據(jù)集, 利用深度卷積神經(jīng)網(wǎng)絡(luò),構(gòu)建了2 維, 3 維, 混合卷積等網(wǎng)絡(luò)架構(gòu)對視頻數(shù)據(jù)進行分類實驗, 在2 加1 維網(wǎng)絡(luò)中對多角度駕駛?cè)藛T行為識別精度達到87% 。
駕駛危險行為指的是在駕駛過程中駕駛?cè)藛T的一些可能造成交通事故的行為, 如接打電話、 抽煙等會對駕駛過程造成一定的影響。 對危險的駕駛行為進行識別和檢測, 需要對其特征進行建模。 在日常駕駛中, 駕駛員大多存在以下幾種危險的駕駛習慣: 1) 接打電話; 2) 與乘車人員交談; 3) 疲勞駕駛;4) 車外拋物; 5) 抽煙。 根據(jù)這些行為的特點, 可將駕駛?cè)藛T行為識別歸為場景單一情況下的行為識別。目前針對視頻中的行為典型的識別方法步驟如圖1 所示, 首先對視頻進行剪輯或抽取隨機幀的預處理,然后進行目標檢測, 運動追蹤, 特征提取和描述, 最后進行識別分類或行為理解。
圖1 視頻中行為識別基本流程圖Fig.1 Basic flow of behavior recognition in video
在構(gòu)建卷積網(wǎng)絡(luò)時, 網(wǎng)絡(luò)的深度越高, 可抽取的特征層次就越豐富。 所以一般人們都會傾向于使用更深層次的網(wǎng)絡(luò)結(jié)構(gòu), 以取得更高層次的特征。 但是在使用深層次的網(wǎng)絡(luò)結(jié)構(gòu)時會遇到兩個問題, 即梯度消失、 爆炸和網(wǎng)絡(luò)退化問題。 He 等[8]實驗證明, 時間復雜度相同的兩種網(wǎng)絡(luò)結(jié)構(gòu), 深度較深的網(wǎng)絡(luò)性能會有相對的提升。 然而, 網(wǎng)絡(luò)并非越深越好。 拋開計算代價問題, 在網(wǎng)絡(luò)深度較深時, 繼續(xù)增加層數(shù)并不能提高性能, 訓練誤差也隨著層數(shù)增加而提升。 基于此問題He 等[8]提出了深度殘差網(wǎng)絡(luò)結(jié)構(gòu)。 殘差網(wǎng)絡(luò)更容易優(yōu)化, 并且能通過增加相當?shù)纳疃忍岣邷蚀_率。 核心是解決了增加深度的副作用( 退化問題), 這樣能通過單純地增加網(wǎng)絡(luò)深度提高網(wǎng)絡(luò)性能。 殘差在數(shù)理統(tǒng)計中是指實際觀察值與估計值( 擬合值) 之間的差, 可將殘差看作誤差的觀測值。 多層的神經(jīng)網(wǎng)絡(luò)理論上可以擬合任意函數(shù), 但是直接讓一些層去擬合一個潛在的恒等映射函數(shù)H( x) = x 比較困難, 如果把網(wǎng)絡(luò)設(shè)計或H( x) = F( x) + x, 可轉(zhuǎn)換為學習一個殘差函數(shù)F( x)= H( x)-x。
如圖2 所示, x 代表輸入, F(x) 為表示殘差塊在第2 層激活函數(shù)前的輸出。 對于一個堆積層結(jié)構(gòu)(幾層網(wǎng)絡(luò)堆積而成) 當輸入為x 時其學習到的特征記為H(x), 現(xiàn)在希望其可以學習到殘差F( x)=H(x)-x, 即原始的學習特征是F(x)+x。 當殘差為0 時, 此時堆積層僅僅做了恒等映射(shortcut), 至少網(wǎng)絡(luò)性能不會下降, 實際上殘差不會為0, 這也會使堆積層在輸入特征基礎(chǔ)上學習到新的特征, 從而擁有更好的性能。
圖2 殘差單元示意圖Fig.2 Shortcut connection
F(x)由下式給出
其中W1,W2為第1 層和第2 層的權(quán)重,σ為Relu 激活函數(shù)。 然后通過一個shortcut 和第2 個Relu 激活函數(shù), 獲得輸出y為
當需要對輸入和輸出維數(shù)進行變化時(如改變通道數(shù)目), 可在shortcut 時對x做一個線性變換Ws
2.2.1 2 維卷積(R2D)
處理輸入為視頻的R2D CNN[9]是將其輸入尺寸為3 ×L×H×W( RGB 通道數(shù), 幀數(shù), 高, 寬) 的4D 張量x 調(diào)整為尺寸為3L×H×W的3D 張量。 所以沒有考慮視頻中的時間排序并且將L幀作為通道數(shù)。 每個濾波器都是3D 的, 其尺寸為Ni-1×d×d, 其中d表示空間寬度和高度。 因此, 第i個殘差塊的輸出zi也是3D 張量, 其大小為Ni×Hi×Wi, 其中Ni表示在第i個塊中應(yīng)用的卷積濾波器的數(shù)量,Hi,Wi是空間維度。 盡管濾波器是3 維的, 但它僅在zi-1 的空間維度上以2D 進行卷積。 每個濾波器產(chǎn)生單通道輸出。 R2D 中的卷積層將視頻的整個時間信息堆疊到單通道特征圖中。 這種類型的CNN 架構(gòu)如圖3a 所示。
2.2.2 混合卷積MCx(Mixed 3D-2D Donvolutions)
針對視頻中對運動的建模有一種假設(shè)是運動建模(3D 卷積)在早期層中可能特別有用, 而在較高級別的語義抽象(后期層)中, 運動或時間建模不是必需的。 因此, 合理的架構(gòu)可以從3D 卷積開始并切換到在頂層中使用2D 卷積。 這項工作中考慮的3D ResNets(R3D)有5 組卷積, 第1 個設(shè)計是用2D 卷積替換5 組中的第3 組到第5 組中的3D 卷積, 用MC3(混合卷積a)表示這種架構(gòu), 并且設(shè)計了在第2 組到第5 組中使用2D 卷積, 將此模型命名為MC2(意思是從第2 組到更深層的所有卷積都是2D 卷積), 如圖3b,圖3c 所示。
2.2.3 3 維卷積(R3D)
基于殘差的3D 卷積神經(jīng)網(wǎng)絡(luò)(R3D CNN)[10-11]是利用3D 的卷積核對視頻序列進行卷積, 每個濾波器都是4 維的, 它的大小為Ni-1×t×d×d, 其中t表示濾波器的時間范圍(在本文中, 設(shè)置t= 3)。 張量zi在這種情況下是4D 的, 尺寸為Ni×L×Hi×Wi, 其中Ni是在第i個塊中使用的濾波器的數(shù)量。 R3DCNN 保留了全部的時間信息。 這種類型的CNN 架構(gòu)如圖3d 所示。
圖3 卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)Fig.3 The architecture of convolutions
2.2.4 2 加1 維卷積(R(2+1)D)
圖4 R3D / R(2+1) D 卷積操作示意圖Fig.4 Diagram of R3D / R(2+1) D convolution operation
R(2+1) D 模型為R3DCNN 的一種變形, 是將3DCNN 的卷積過程分解為2D 卷積和1D 卷積。將空間和時間建模分解為兩個單獨的步驟。 該網(wǎng)絡(luò)將大小為Ni-1×t×d×d的Ni個3D 卷積核替換成大小為Ni-1×1 ×d×d的Mi個二維卷積濾波器和尺寸為Mi×t×1×1的時間卷積濾波器。 這種時空分解可以應(yīng)用于任何3D 卷積層。 圖4 給出了R3D 和R(2+1 ) D 卷積過程的簡單示意圖, 其中輸入張量Zi-1包含單個通道( 即Ni-1= 1), 圖4a 中使用尺寸為t×d×d的濾波器進行全3D 卷積, 其中t表示時間范圍,d是空間寬度和高度。 圖4b 中R(2+1) D卷積塊將計算分成空間2D 卷積, 然后是時間1D卷積。 令2D 濾波器的數(shù)量為Mi, 使得R(2 +1) D塊中的參數(shù)數(shù)量與完整的3D 卷積塊的參數(shù)數(shù)量相同, 則有
筆者創(chuàng)建了一個用于駕駛員不良駕駛行為分類的數(shù)據(jù)集。 錄制這個數(shù)據(jù)集主要是針對不良駕駛行為可能造成交通事故等問題, 并可以促進多角度下行為識別方面的研究。 數(shù)據(jù)由35 個受試者執(zhí)行。 每個動作持續(xù)大概20 s, 并且有3 個鏡頭同時錄制, 如圖5 所示。 把錄制好的樣片進行剪輯, 得到每個類別里3 個角度下的100 個左右的視頻樣本, 共計489 個視頻。 由于類間差異比較小, 因此該數(shù)據(jù)集具有一定的挑戰(zhàn)性。 其中部分視頻樣例如圖6 所示。
圖5 攝像頭設(shè)置示意圖Fig.5 Schematic diagram of camera setting
圖6 多視角駕駛員行為數(shù)據(jù)集視頻樣例Fig.6 Multi-view driver behavior data set
近年來, 為了驗證視頻中人類行為識別方法的性能, 許多研究者制作并且公開了大量的數(shù)據(jù)集。 早期的有KTH[12]、 Weizmann[13-15], 近期的則有HMDB51[16]。 筆者使用Kinetics[17]作為預訓練數(shù)據(jù)集, 因為他們足夠大, 可以從頭開始訓練深層模型。 由于良好的視頻模型還必須支持對其他數(shù)據(jù)集進行有效的遷移學習, 因此將預訓練好的模型在UCF101[18]和多視角駕駛員數(shù)據(jù)集上對它們進行微調(diào)。
3.2.1 訓練過程
將所有網(wǎng)絡(luò)設(shè)置為18 層, 并用Kinetics 從頭開始訓練。 視頻幀被縮放到128×171 的大小, 然后通過隨機裁剪大小為112×112 的窗口生成每個剪輯。 在訓練時隨機劃取視頻中的L 個連續(xù)幀, 嘗試了兩種設(shè)置: 模型在8 幀剪輯(L = 8) 和16 幀剪輯(L = 16) 上進行訓練。 批量標準化應(yīng)用于所有卷積層。 盡管Kinetics 只有大約240 kByte 的訓練視頻, 但將時間尺寸設(shè)置為1 min。 初始學習率設(shè)置為0.01 并且每10 個時期減小10 倍, 使用caffe2 在GPU 上使用SGD 進行訓練, 最后將預訓練好的參數(shù)保存, 并且在UCF 和駕駛?cè)藛T數(shù)據(jù)集上進行微調(diào)。
3.3.1 時空卷積及輸入剪輯的幀數(shù)比較
表1 給出了Kinetics 數(shù)據(jù)集上的分類準確度。 所有的模型都基于18 層的殘差結(jié)構(gòu), 且具有相同的輸入并處理每個剪輯中的所有幀(輸入分為8×112×112 和16×112×112)。
與通過剪輯執(zhí)行時間推理的3D 或MCx 模型相比, R2D 在第1 個殘差塊后堆疊時間信息, 而R2Df計算來自各個幀的靜止圖像特征。 從這些結(jié)果可以推斷出2D、 ResNets( f-R2D 和R2D) 的性能與R3D或混合卷積模型(MC2 和MC3)的性能之間存在明顯差距。 在8 幀輸入設(shè)置中, R2D 和R3D 精度相差2.3% ~3.8%, 當模型在16 幀剪輯上作為輸入進行訓練時, 該差距變大(即5.3% ~8.9%)。 這表明運動建模對于動作識別很重要。 在不同的3D 卷積模型中, R(2+1) D 顯然表現(xiàn)最佳。 在8 幀設(shè)置中,比R3D 高出3.0% ~4.8%, 比MC2 高出2.3% ~3.6%, 在16 幀輸入設(shè)置中比R3D 和MC2 高出3.8% ~5.9%, 表明在單獨的空間和時間卷積中分解3D 卷積比通過混合3D-2D 卷積建模時空信息更好。
表1 Kinetics 數(shù)據(jù)集上動作識別精度Tab.1 Action recognition accuracy on Kinetics dataset
表2 UCF101 數(shù)據(jù)集上動作識別精度Tab.2 Action recognition accuracy on UCF101 dataset
表2 給出了UCF101 在Kinetics 數(shù)據(jù)集上預訓練后的模型上的動作識別精度, 在預訓練模型上UCF 的訓練時間大幅減小, 得到的結(jié)論也與上述一致, R( 2 + 1 ) D 模型的表現(xiàn)最好。 根據(jù)Varol 等[19]的研究發(fā)現(xiàn), 使用長期卷積( LTC) 在較長的輸入剪輯( 例如, 100 幀) 上訓練視頻CNN, 可以獲得準確度增益。 筆者也對輸入剪輯的幀數(shù)進行了比較, 如圖12 和圖13 所示, 大部分模型在將8 幀為一個剪輯設(shè)置成16 幀為一個剪輯后, 識別精度均有提升。 針對此問題做了2 個實驗, 在第1 個實驗中, 采用8 幀的剪輯訓練的模型, 并使用32 幀的剪輯作為輸入進行測試。 結(jié)果發(fā)現(xiàn), 與8 幀剪輯相比, 識別精度下降5.8% 。 在第2 個實驗中, 使用在8 幀的剪輯預訓練后的模型參數(shù)微調(diào)32 幀模型。 在這種情況下, 網(wǎng)絡(luò)實現(xiàn)的結(jié)果幾乎與在32 幀剪輯中從頭學習(68.0% 對比69.4% ) 時的結(jié)果相同。 然而, 從8 幀預訓練參數(shù)中微調(diào)32 幀模型大大縮短了總訓練時間。 上述2 個實驗表明, 對較長剪輯進行訓練會產(chǎn)生不同( 更好) 的模型, 因為模型會學習更長的時間信息。 表3 給出了Kinetics 數(shù)據(jù)集上在不同長度的剪輯上訓練和評估的18 層R(2 +1) D 的總訓練時間和準確度。
圖7 Kinetics 數(shù)據(jù)集不同模型下不同 輸入的識別精度Fig.7 The identification accuracy of different inputs in different Kinetics data sets under different models
圖8 UCF 數(shù)據(jù)集不同模型下不同 輸入的識別精度Fig.8 The identification accuracy of different inputs in different UFC data sets under different models
表3 Kinetics 數(shù)據(jù)集上不同剪輯在18 層R(2+1)D 模型上的訓練時間與識別精度Tab.3 Training time and recognition accuracy of different clips on 18-layer R(2+1)D model in Kinetics data set
3.3.2 多角度駕駛?cè)藛T行為識別
使用Kinetics 上預訓練的參數(shù)在多角度駕駛?cè)藛T數(shù)據(jù)集上進行微調(diào), 在不同模型中, 仍然是R(2+1)D模型表現(xiàn)最好。 在加深網(wǎng)絡(luò)層數(shù)的基礎(chǔ)上, 設(shè)置32 幀為一剪輯輸入。 這是當前環(huán)境下(單個1 080 GPU)的極限, 可以達到87% 的精度。 雖然精度隨著層數(shù)的增加而增加, 但模型復雜度也隨著層數(shù)的增加而變大, 計算代價也隨著幀數(shù)的增多而變大。 在考慮到上述問題后, 將R(2+1)D 模型最終的層數(shù)定為34 層, 輸入為32×112×112。 如表4 所示, 多角度的識別率可達到87.00%。 顯著優(yōu)于單獨視角下的實驗結(jié)果。
表4 單獨角度和多角度的駕駛?cè)藛T行為識別精度Tab.4 Single angle and multiple angle driver behavior recognition accuracy
筆者針對視頻中行為識別的問題出發(fā), 著手于駕駛員駕駛真實場景, 構(gòu)建了一個多角度的駕駛?cè)藛T行為數(shù)據(jù)集, 對駕駛員行車過程中可能出現(xiàn)的危險行為進行檢測捕捉, 分別在2 維卷積神經(jīng)網(wǎng)絡(luò)、3 維卷積神經(jīng)網(wǎng)絡(luò)、 混合卷積神經(jīng)網(wǎng)絡(luò)和2 加1 維卷積神經(jīng)網(wǎng)絡(luò)上進行實驗檢驗, 并在2 加1 維神經(jīng)網(wǎng)絡(luò)上得到了87% 的識別效果。
實驗結(jié)果表明, 3 維卷積神經(jīng)網(wǎng)絡(luò)在視頻中的行為識別優(yōu)于2 維卷積神經(jīng)網(wǎng)絡(luò)的性能, 隨著網(wǎng)絡(luò)層數(shù)的增加精度會提升, 但模型復雜度同樣會增大。 同樣, 網(wǎng)絡(luò)輸入的剪輯數(shù)越大, 精度提升越高, 計算量也會隨之增加。 在多個視角的數(shù)據(jù)集下、 復雜度和精度的平衡中, 2 加1 維卷積神經(jīng)網(wǎng)絡(luò)性能最優(yōu)。