衛(wèi) 星,楊國強,陸 陽,魏 臻
(1.合肥工業(yè)大學 計算機與信息學院,安徽 合肥 230601;2.安全關鍵工業(yè)測控技術教育部工程研究中心,安徽 合肥 230009)
車輛行為分析一直是智能交通和稽查違法駕駛的重點,目前行車記錄儀或者交通錄像機已經(jīng)得到廣泛的應用,也采集了大量的車輛視頻數(shù)據(jù)。然而上述裝置中采集的視頻大多都是未經(jīng)修剪或處理的。駕駛違法行為是導致交通事故最直接、最主要的原因[1,2]。因而從上述裝置對未經(jīng)處理的視頻提取出車輛的不同行為對發(fā)現(xiàn)智慧交通的不足并完善具有重要的意義。
先前對視頻中的行為動作研究主要是人體行為,該研究主要依賴于手動進行特征標注,存在效率低下和檢測準確率低的缺點。由于人工智能中深度學習技術的蓬勃發(fā)展,傳統(tǒng)的高度依賴于手工的方式被基于深度學習的方法所取代。對視頻中的行為動作分析得到了長足的發(fā)展與進步。卷積神經(jīng)網(wǎng)絡和長短期記憶網(wǎng)絡(long short-term memory, LSTM)[3]對視頻中的動作行為分析中起到了至關重要的作用[4-6]。對未修剪的長視頻中檢測定位每個行為的起止時間,Li等[7]為視頻中的動作檢測引入了一種完全端到端的方法,該方法可以直接預測動作的時間范圍,模型基于遞歸神經(jīng)網(wǎng)絡的方法,并引入強化學習策略來對模型進行訓練。Shou等[8]提出一種用于時序動作定位的多階段3D卷積網(wǎng)絡,該方法首先使用滑窗的方法生成多種尺寸的視頻片段,再使用多階段的網(wǎng)絡來處理。SCNN主要包括3個子網(wǎng)絡,均使用了3D ConvNet,該模型在相關數(shù)據(jù)集上取得了較好的效果。但是該網(wǎng)絡中裁剪的大小是通過滑窗確定的,很可能不夠準確。Xiong等[9]針對這一問題提出了一種新穎的提議方案,其可以有效地生成具有準確的時間邊界的候選者。并且引入了級聯(lián)分類管道,該管道明確區(qū)分了候選實例的相關性和完整性,算法在相關數(shù)據(jù)集上取得了較好的效果。但是對于未修剪的長視頻中檢測出車輛相應行為的開始結束時間這種時序定位問題,尚且未有相應的研究。目前,對視頻中車輛檢測技術[10,11]已經(jīng)十分成熟。但視頻中的車輛的時序行為的邊界并不能很明確地定義,在車輛行為視頻中,大部分時間車輛都是直行,因此把直行行為視為背景行為,本文研究從未修剪的長視頻中檢測出車輛除了背景行為之外的車輛行為分析。
綜上所述,針對傳統(tǒng)依賴手工設計特征檢測車輛行為算法存在費力且檢測效率低下等情況,對應的目標檢測算法存在魯棒性低、檢測精度不足等問題。本文基于此提出了一種基于深度學習的車輛時序動作檢測算法,利用深度學習技術獲取并分析車輛行為視頻的時序信息,并準確識別視頻中的車輛行為和該行為的起止時間。
本文算法網(wǎng)絡模型如圖1所示,輸入的是包含車輛行為且未經(jīng)裁剪的視頻,輸出的是對車輛行為的判斷。考慮到車輛行駛過程中,直行時間占據(jù)了更大的比例,我們把車輛行為分為兩類,直行(背景行為)和非直行(左轉、右轉、左變道、右變道、調(diào)頭),本文的研究重點是從對車輛行為的檢測,是視頻中包含車輛的非直行行為檢測。圖1所示的車輛行為檢測算法包含兩階段,第一個階段是生成車輛行為的大概率提議,算法首先利用雙流卷積網(wǎng)絡[12]提取視頻中車輛行為特征和光流信息,并對提取到的行為動作進行計算打分,并對分數(shù)值歸一化為區(qū)間 (0,1),區(qū)間左右兩邊的數(shù)字分別代表車輛直行和非直行行為。利用雙流卷積神經(jīng)網(wǎng)絡對視頻中車輛行為的特征進行提取,然后對視頻中的車輛存在非背景行為的概率,最后把概率值轉化為動作得分波形actionness,同時利用設定的閾值與得分波形比較生成初級的車輛行為建議。第二階段是對第一階段的初級建議進行修剪,并最終精確檢測出視頻中的車輛行為。該階段通過利用雙向LSTM網(wǎng)絡來對上一步得到初步建議進行提取,分析出車輛行為的時序信息,進而對初步建議進行細化裁剪得到更為精準的車輛行為的類別。

圖1 車輛時序行為檢測網(wǎng)絡模型
雙流卷積神經(jīng)網(wǎng)絡已經(jīng)被廣泛使用,主要用來提取視頻中行為特征,該類行為一般為時序行為,僅對單幀圖片進行提取難以體現(xiàn)時序性,雙流卷積在解決該類問題取得了良好的效果,車輛行為與此類似,也同樣具有時序性。紅綠燈、車輛轉向燈等信息與車輛行為密切相關,因此此處利用雙流卷積網(wǎng)絡來對視頻中的時間和空間特征進行提取[13],并給出對車輛行為的得分值。同時利用光流神經(jīng)網(wǎng)絡對視頻序列中車輛行為在時間域上的變化進行學習,從而計算出車輛行為的運動信息。
對于卷積神經(jīng)網(wǎng)絡可以通過增加網(wǎng)絡層數(shù)提高模型效果,這是因為深層的網(wǎng)絡可以提取到更多豐富的信息,這也容易導致網(wǎng)絡退化,ResNet網(wǎng)絡[14]的出現(xiàn)解決了這一問題。后來DenseNet網(wǎng)絡[15]則繼承了上述網(wǎng)絡的優(yōu)點,在對輸入視頻幀的處理過程中更加保留了其中的細節(jié)和特性,也不用為了提高提取特征的效果而增加卷積層的大小使得參數(shù)量的大小增加了很多。DenseNet中的核心組成單元是密集塊,具體如圖2所示。對于每一個密集塊的輸入都由前面所有密集塊的輸出。用xl表示網(wǎng)絡l層的輸出,xl-1表示輸入l層的數(shù)據(jù)[13],Hl(∴) 表示非線性映射函數(shù),則網(wǎng)絡傳播的過程可用式(1)表示

圖2 密集連接塊
xl=Hl(xl-1)
(1)
對于ResNet,其核心思想是引入一個恒等映射,即輸入和輸出直接相連,具體公式見式(2)所示
xl=Hl(xl-1)+xl-1
(2)
DenseNet網(wǎng)絡每一層的輸入都是前面所有層輸出的并集,并且該層所學習的特征圖也會被直接傳給后面所有層作為輸入。緩解了消失梯度問題,加強了特征傳播,鼓勵特征重用,并大大減少了參數(shù)的數(shù)量,網(wǎng)絡可形式化為式(3)
xl=Hl([x0,x1,…,xl-1])
(3)
式中:Hl表示非線性轉換函數(shù),包含有批量歸一化(batch normalization,BN)、激活函數(shù)Relu和卷積運算。采用了這樣的設計,使得DenseNet網(wǎng)絡層中的參數(shù)量大大的縮減了的同時也增強了特征之間的傳遞。當特征映射大小改變時,式(3)中的連接操作是不可行,為解決這個問題,在不同的密集塊之間加入了過渡層,作用是執(zhí)行卷積和合并運算。過渡模塊同樣包含有批量標準化、激活函數(shù)、卷積層,同時添加了池化層。雙流卷積神經(jīng)網(wǎng)絡的網(wǎng)絡結構參數(shù)見表1,其中conv表示的是BN-Relu-conv操作,視頻經(jīng)過雙流卷積神經(jīng)網(wǎng)絡可以提取出車輛行為的空間和時間特征[13],再利用concat算法將上述兩種特征進行融合。之后把特征融合得到的結果送入全連接層,經(jīng)過SIGMOD函數(shù)來對得到的結果進行打分,分數(shù)統(tǒng)一歸一化到區(qū)間 [0,1],表示車輛行為是非直行的概率,并基于此得到actionness曲線。

表1 雙流卷積網(wǎng)絡參數(shù)
為得到初級的粗糙區(qū)域提議,本文的主要思路是利用actionness曲線圖,對其中連續(xù)得分較高的片段進行提取,并作為初級建議輸出結果。實驗初始階段設定閾值m=0.4, 從曲線圖中選取一個大于給定閾值作為提議的起點,利用該起點吸收鄰近的視頻片段來擴充,擴充停止的條件是當擴充完全的序列中包含低于閾值部分的占據(jù)整個序列一半時,此時該集合便成為候選片段。實驗中發(fā)現(xiàn)存在一部分候選片段是對車輛同一行為的描述,這使得檢測效率大大降低,為此引入非極大值抑制策略來提高效率,實驗結果驗證當選擇設定IoU的閾值為0.7時,效果較好。
上述得到的僅僅是初級的區(qū)域提議,然而初級的區(qū)域提議在準確性方面存在一定的不足,因而精確的區(qū)域提議顯得尤為重要,在時序建模學習領域,LSTM網(wǎng)絡框架更合適結合上下文信息處理序列方面問題。本文選擇LSTM網(wǎng)絡框架對車輛行為進行建模。LSTM的網(wǎng)絡結構如圖3所示,LSTM的定義參見文獻[3]。則LSTM單元在t時刻的更新過程如下

圖3 LSTM記憶單元
It=σ(Wi×[Ht-1,xt]+bi)
(4)
Ft=σ(Wf×([Ht-1,xt]+bf)
(5)
Ot=σ(Wo×[Ht-1,xt]+bo)
(6)
Ct=Ft×Ct-1+It×tanh(Wc×[Ht-1,xt]+bc)
(7)
Ht=Ot×tanh(Ct)
(8)
上述公式中It、Ot、Ft分別表示輸入門、輸出門、遺忘門。xt表示在時間t下的輸入,Wi,Wf,Wo,Wc表示權重矩陣;bi,bf,bo,bc表示偏置向量,σ表示為sigmoid激活函數(shù),Ht為單元t時刻的輸出。Ct表示記憶單元在t時刻的狀態(tài)。
為了更有效提取視頻序列中車輛行為的語義信息,本文采用了一種雙向的LSTM模型。該模型不同于單向LSTM網(wǎng)路,可以從正向和反向提取視頻中序列信息,提取的特征信息更為細膩。該模型由兩個大小相同,方向相反的LSTM模塊組成,模型多個地方共享權值,模型初始運行分別從雙向LSTM的始端和末端,添加的逆向LSTM單元在t時刻的更新如以下公式所示
It=σ(Wi×[Ht+1,xt]+bi)
(9)
Ft=σ(Wf×[Ht+1,xt]+bf)
(10)
Ot=σ(Wo×[Ht+1,xt]+bo)
(11)
Ct=Ft×Ct+1+It×tanh(Wc×[Ht+1,xt]+bc)
(12)
Ht=Ot×tanh(Ct)
(13)
由于采用了上述的設計,模型同時可以捕獲前向與反向的上下文,這使得模型對于視頻中車輛行為的檢測會更加的精確,如車輛的左轉、右轉等。由于判定車輛行為的轉變是非常模糊的,即邊界不確定,而雙向LSTM采用的結構在初級區(qū)域提議則可以解決這一問題,對不同行為邊緣進一步裁剪,最終產(chǎn)生更加精準的提議。雙向LSTM網(wǎng)絡的輸出為正向和反向LSTM網(wǎng)絡輸出的隱藏狀態(tài)的聯(lián)合。
對視頻中的車輛行為得到初步提議后,下一步需要對該提議進行細化裁剪分類。結構模型如圖4所示,模型中包含有雙向LSTM網(wǎng)絡。通過輸入多個初級提議的特征向量,并經(jīng)過Softmax分類器,輸出對初級提議每一幀的細化裁剪分類。最后選擇輸出結果最多的行為作為最終分類的結果。為了得到視頻中車輛行為的發(fā)生起止時間,首先找到正確識別出該行為的視頻幀,選出其中最大的部分,通過向左右兩邊擴散吸收。設定吸收錯誤行為的閾值為10%,當超過這一閾值時,停止吸收,得到包含發(fā)生車輛行為的視頻幀,并輸出。

圖4 提議裁剪分類
為了訓練基于深度學習的車輛時序動作檢測算法,采用了大量的車輛行為視頻數(shù)據(jù),該數(shù)據(jù)來源于自己拍攝的和相關公司提供。數(shù)據(jù)集含有2218個已經(jīng)被分類裁剪好的短視頻和全長十幾個小時的未裁剪視頻,其中短視頻包含的車輛行為有6種,分別是直行、左轉、右轉、左變道、右變道和掉頭,對于其中的單個類別包含的視頻有300多個。按照2∶1∶1劃分為訓練集、驗證集和測試集。對未裁剪視頻處理后分為130段訓練視頻和70段測試視頻[13]。實驗首先使用ImageNet數(shù)據(jù)集[16]對雙流卷積網(wǎng)絡進行預訓練;然后利用完成裁剪分類的視頻訓練車輛行為識別網(wǎng)絡;最后,為得到車輛行為的細化檢測提議,利用未裁剪視頻中的訓練集來訓練雙向LSTM,使用裁剪好的訓練集有背景行為的片段來訓練LSTM的網(wǎng)絡裁剪能力。
4.2.1環(huán)境配置及超參數(shù)設置
本文實驗環(huán)境配置為Linux64位Ubuntu16.04操作系統(tǒng),GPU為GeForceGTX1080Ti,深度學習框架為PyTorch。首先使用ImageNet數(shù)據(jù)集對雙流卷積網(wǎng)絡進行預訓練,然后使用采集得到數(shù)據(jù)集對雙流卷積和雙向LSTM進行訓練,網(wǎng)絡訓練的超參數(shù)如下:
對雙流卷積的空間網(wǎng)絡的最大迭代次數(shù)為3000次,初始學習率設為0.001,隨迭代次數(shù)學習率線性衰減到0.0007;對時間網(wǎng)絡的最大迭代次數(shù)為60000次,初始學習率設為0.005,隨迭代次數(shù)學習率線性衰減到0.0003;堆疊光流的L=10。使用隱含層的維度為1024的雙向LSTM來精剪提議,在訓練LSTM網(wǎng)絡采用的優(yōu)化器是Adam優(yōu)化算法,batchsize大小設為12,初始學習率設為10e-5,權重衰減設為10e-4,epoch的次數(shù)為100。
4.2.2評估標準
實驗評估標準用到的分類混淆矩陣如圖5所示。

圖5 分類混淆矩陣
召回率(Recall)表示的是樣本中的正例有多少被預測正確了,在這里表示正確檢測出車輛非直行行為的數(shù)量占據(jù)所有非直行行為數(shù)量的比例,公式如下所示
(14)
精確度(Precision)表示預測為正的樣本中有多少是真正的正樣本,在這里是指檢測出總的車輛行為中,非直行行為占據(jù)的比例,計算公式如下
(15)
平均精度(average-precision,AP)是召回率-精確度曲線下面的面積,是對精確度進行平均得到的結果。mAP則表示所有類別的平均精度除以所有類別總數(shù)。
IoU(交并比)是深度學習中的一種重要度量指標,簡單來說是計算兩個集合的交集與并集之比,表示預測區(qū)域和真實區(qū)域的重合度,值越大則表明重合度越高,預測的結果越精確,tIoU表示時間維度上的檢測標準。
4.3.1堆疊光流實驗
圖6展示了堆疊光流實驗,左下角是對車輛運動方向區(qū)域的劃分,左側部分代表的是車輛向左移動,右側部分代表的部分是車輛向右移動,亮度值反映了車輛移動速度的大小。由圖6可知,當L=1時,單幀光流圖難以較好反應出車輛行為信息,且伴隨著較多干擾噪聲。因此實驗過程中逐漸增加光流幀信息,以便于更好地獲取車輛行為信息,提高分類的準確率。當設定的L=5時,能夠較為清晰顯示出車輛的運動行為信息,并且排除了很多的背景噪聲。當設定的L=10時,可以更加清晰顯示車輛的行為信息,但是相比于L=5時的提升的力度緩慢。

圖6 多幀光流堆疊
車輛的行為信息可以通過疊加后的光流來體現(xiàn),實驗中將數(shù)據(jù)按照7∶3的比例劃分訓練集和測試集,對不同車輛行為圖片進行光流疊加。實驗結果見表2,從表中我們可以看出進行光流堆疊處理后,時間卷積神經(jīng)網(wǎng)絡識別率有了較大的提高,光流堆疊(L=10)比光流堆疊(L=5)高了3.5%,比單幀光流識別率高了近13%。從實驗中我們可以看出,采用的光流堆疊(L=15)時,時間卷積網(wǎng)絡識別率相對于光流堆疊(L=10)提升不明顯,并且降低了計算效率。因此,本文將實驗過程中時間卷積網(wǎng)絡的光流堆疊L設為10。

表2 堆疊光流實驗結果
4.3.2 生成提議結果
行為提議是指通過輸入視頻后輸出的是車輛非直行行為的視頻的起點和終點,因此查全率(Recall)的高低反應了本文方法是否優(yōu)良。平均召回率隨提議數(shù)量的變化如圖7左圖所示。由圖可知平均召回率隨著平均提議數(shù)量的提高而逐步上升,當平均數(shù)量達到200左右的時候,平均召回率固定在穩(wěn)定的數(shù)值。右圖展示了在平均提議數(shù)量設為100時,使用不同的tIoU得到的召回率,當tIoU>0.7的時候仍具有較好的召回率,這表明本文所提算法能夠較好提取車輛行為視頻中非直行行為。

圖7 平均召回率
4.3.3 行為檢測對比
本文也與現(xiàn)有的一些時序行為檢測算法進行了對比實驗,實驗結果見表3,我們將時間重疊率(tIoU)的閾值的范圍設定在[0.3,0.7],從表中可以看出,本文所提算法與其它算法相比具有較好的mAP,與Xiong等[9]所提的算法相比,當閾值α≥0.5時,本文所提算法具有更加明顯的優(yōu)勢,這也展示了本文所提算法的優(yōu)越性。

表3 車輛時序行為檢測方法mAP/%
本文也對不同類別的非直行行為的檢測結果精度進行了計算,實驗結果見表4。從表中可以看出算法對掉頭行為的檢測結果最好,這是因為掉頭行為在視頻中變化非常明顯,具有較強的特征;對變道行為檢測的結果最差,這是因為變道在視頻中變化不明顯。當tIoU閾值,算法的mAP為18.7%;當tIoU閾值為0.9時,算法的mAP為3.98%,從這方面可以看出,本文所提算法在車輛行為檢測方面具有明顯優(yōu)勢。

表4 各類非直行行為AP/%
針對視頻中車輛行為檢測的問題,本文提出了一種基于深度學習的車輛時序行為檢測算法。算法首先利用雙流卷積神經(jīng)網(wǎng)絡提取視頻中車輛行為的特征信息和光流特征信息,并給出車輛行為檢測初步提取的結果;然后利用雙向長短記憶網(wǎng)絡對得到的初級區(qū)域提議進行細化裁剪分類操作。實驗結果表明,本文方法成功檢測出長視頻中車輛行為,與現(xiàn)有時序檢測算法對比,也展現(xiàn)了本文算法的有效性和優(yōu)越性。但是,當前方有多臺車輛的時候,算法在實時有效的檢測方面則顯得匱乏。因此下一步的研究計劃是在保證精度一定的同時對長視頻中多輛車行為進行預測。