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