衛(wèi) 星,楊國強(qiáng),陸 陽,魏 臻
(1.合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院,安徽 合肥 230601;2.安全關(guān)鍵工業(yè)測控技術(shù)教育部工程研究中心,安徽 合肥 230009)
車輛行為分析一直是智能交通和稽查違法駕駛的重點(diǎn),目前行車記錄儀或者交通錄像機(jī)已經(jīng)得到廣泛的應(yīng)用,也采集了大量的車輛視頻數(shù)據(jù)。然而上述裝置中采集的視頻大多都是未經(jīng)修剪或處理的。駕駛違法行為是導(dǎo)致交通事故最直接、最主要的原因[1,2]。因而從上述裝置對未經(jīng)處理的視頻提取出車輛的不同行為對發(fā)現(xiàn)智慧交通的不足并完善具有重要的意義。
先前對視頻中的行為動(dòng)作研究主要是人體行為,該研究主要依賴于手動(dòng)進(jìn)行特征標(biāo)注,存在效率低下和檢測準(zhǔn)確率低的缺點(diǎn)。由于人工智能中深度學(xué)習(xí)技術(shù)的蓬勃發(fā)展,傳統(tǒng)的高度依賴于手工的方式被基于深度學(xué)習(xí)的方法所取代。對視頻中的行為動(dòng)作分析得到了長足的發(fā)展與進(jìn)步。卷積神經(jīng)網(wǎng)絡(luò)和長短期記憶網(wǎng)絡(luò)(long short-term memory, LSTM)[3]對視頻中的動(dòng)作行為分析中起到了至關(guān)重要的作用[4-6]。對未修剪的長視頻中檢測定位每個(gè)行為的起止時(shí)間,Li等[7]為視頻中的動(dòng)作檢測引入了一種完全端到端的方法,該方法可以直接預(yù)測動(dòng)作的時(shí)間范圍,模型基于遞歸神經(jīng)網(wǎng)絡(luò)的方法,并引入強(qiáng)化學(xué)習(xí)策略來對模型進(jìn)行訓(xùn)練。Shou等[8]提出一種用于時(shí)序動(dòng)作定位的多階段3D卷積網(wǎng)絡(luò),該方法首先使用滑窗的方法生成多種尺寸的視頻片段,再使用多階段的網(wǎng)絡(luò)來處理。SCNN主要包括3個(gè)子網(wǎng)絡(luò),均使用了3D ConvNet,該模型在相關(guān)數(shù)據(jù)集上取得了較好的效果。但是該網(wǎng)絡(luò)中裁剪的大小是通過滑窗確定的,很可能不夠準(zhǔn)確。Xiong等[9]針對這一問題提出了一種新穎的提議方案,其可以有效地生成具有準(zhǔn)確的時(shí)間邊界的候選者。并且引入了級聯(lián)分類管道,該管道明確區(qū)分了候選實(shí)例的相關(guān)性和完整性,算法在相關(guān)數(shù)據(jù)集上取得了較好的效果。但是對于未修剪的長視頻中檢測出車輛相應(yīng)行為的開始結(jié)束時(shí)間這種時(shí)序定位問題,尚且未有相應(yīng)的研究。目前,對視頻中車輛檢測技術(shù)[10,11]已經(jīng)十分成熟。但視頻中的車輛的時(shí)序行為的邊界并不能很明確地定義,在車輛行為視頻中,大部分時(shí)間車輛都是直行,因此把直行行為視為背景行為,本文研究從未修剪的長視頻中檢測出車輛除了背景行為之外的車輛行為分析。
綜上所述,針對傳統(tǒng)依賴手工設(shè)計(jì)特征檢測車輛行為算法存在費(fèi)力且檢測效率低下等情況,對應(yīng)的目標(biāo)檢測算法存在魯棒性低、檢測精度不足等問題。本文基于此提出了一種基于深度學(xué)習(xí)的車輛時(shí)序動(dòng)作檢測算法,利用深度學(xué)習(xí)技術(shù)獲取并分析車輛行為視頻的時(shí)序信息,并準(zhǔn)確識別視頻中的車輛行為和該行為的起止時(shí)間。
本文算法網(wǎng)絡(luò)模型如圖1所示,輸入的是包含車輛行為且未經(jīng)裁剪的視頻,輸出的是對車輛行為的判斷。考慮到車輛行駛過程中,直行時(shí)間占據(jù)了更大的比例,我們把車輛行為分為兩類,直行(背景行為)和非直行(左轉(zhuǎn)、右轉(zhuǎn)、左變道、右變道、調(diào)頭),本文的研究重點(diǎn)是從對車輛行為的檢測,是視頻中包含車輛的非直行行為檢測。圖1所示的車輛行為檢測算法包含兩階段,第一個(gè)階段是生成車輛行為的大概率提議,算法首先利用雙流卷積網(wǎng)絡(luò)[12]提取視頻中車輛行為特征和光流信息,并對提取到的行為動(dòng)作進(jìn)行計(jì)算打分,并對分?jǐn)?shù)值歸一化為區(qū)間 (0,1),區(qū)間左右兩邊的數(shù)字分別代表車輛直行和非直行行為。利用雙流卷積神經(jīng)網(wǎng)絡(luò)對視頻中車輛行為的特征進(jìn)行提取,然后對視頻中的車輛存在非背景行為的概率,最后把概率值轉(zhuǎn)化為動(dòng)作得分波形actionness,同時(shí)利用設(shè)定的閾值與得分波形比較生成初級的車輛行為建議。第二階段是對第一階段的初級建議進(jìn)行修剪,并最終精確檢測出視頻中的車輛行為。該階段通過利用雙向LSTM網(wǎng)絡(luò)來對上一步得到初步建議進(jìn)行提取,分析出車輛行為的時(shí)序信息,進(jìn)而對初步建議進(jìn)行細(xì)化裁剪得到更為精準(zhǔn)的車輛行為的類別。
圖1 車輛時(shí)序行為檢測網(wǎng)絡(luò)模型
雙流卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)被廣泛使用,主要用來提取視頻中行為特征,該類行為一般為時(shí)序行為,僅對單幀圖片進(jìn)行提取難以體現(xiàn)時(shí)序性,雙流卷積在解決該類問題取得了良好的效果,車輛行為與此類似,也同樣具有時(shí)序性。紅綠燈、車輛轉(zhuǎn)向燈等信息與車輛行為密切相關(guān),因此此處利用雙流卷積網(wǎng)絡(luò)來對視頻中的時(shí)間和空間特征進(jìn)行提取[13],并給出對車輛行為的得分值。同時(shí)利用光流神經(jīng)網(wǎng)絡(luò)對視頻序列中車輛行為在時(shí)間域上的變化進(jìn)行學(xué)習(xí),從而計(jì)算出車輛行為的運(yùn)動(dòng)信息。
對于卷積神經(jīng)網(wǎng)絡(luò)可以通過增加網(wǎng)絡(luò)層數(shù)提高模型效果,這是因?yàn)樯顚拥木W(wǎng)絡(luò)可以提取到更多豐富的信息,這也容易導(dǎo)致網(wǎng)絡(luò)退化,ResNet網(wǎng)絡(luò)[14]的出現(xiàn)解決了這一問題。后來DenseNet網(wǎng)絡(luò)[15]則繼承了上述網(wǎng)絡(luò)的優(yōu)點(diǎn),在對輸入視頻幀的處理過程中更加保留了其中的細(xì)節(jié)和特性,也不用為了提高提取特征的效果而增加卷積層的大小使得參數(shù)量的大小增加了很多。DenseNet中的核心組成單元是密集塊,具體如圖2所示。對于每一個(gè)密集塊的輸入都由前面所有密集塊的輸出。用xl表示網(wǎng)絡(luò)l層的輸出,xl-1表示輸入l層的數(shù)據(jù)[13],Hl(∴) 表示非線性映射函數(shù),則網(wǎng)絡(luò)傳播的過程可用式(1)表示
圖2 密集連接塊
xl=Hl(xl-1)
(1)
對于ResNet,其核心思想是引入一個(gè)恒等映射,即輸入和輸出直接相連,具體公式見式(2)所示
xl=Hl(xl-1)+xl-1
(2)
DenseNet網(wǎng)絡(luò)每一層的輸入都是前面所有層輸出的并集,并且該層所學(xué)習(xí)的特征圖也會(huì)被直接傳給后面所有層作為輸入。緩解了消失梯度問題,加強(qiáng)了特征傳播,鼓勵(lì)特征重用,并大大減少了參數(shù)的數(shù)量,網(wǎng)絡(luò)可形式化為式(3)
xl=Hl([x0,x1,…,xl-1])
(3)
式中:Hl表示非線性轉(zhuǎn)換函數(shù),包含有批量歸一化(batch normalization,BN)、激活函數(shù)Relu和卷積運(yùn)算。采用了這樣的設(shè)計(jì),使得DenseNet網(wǎng)絡(luò)層中的參數(shù)量大大的縮減了的同時(shí)也增強(qiáng)了特征之間的傳遞。當(dāng)特征映射大小改變時(shí),式(3)中的連接操作是不可行,為解決這個(gè)問題,在不同的密集塊之間加入了過渡層,作用是執(zhí)行卷積和合并運(yùn)算。過渡模塊同樣包含有批量標(biāo)準(zhǔn)化、激活函數(shù)、卷積層,同時(shí)添加了池化層。雙流卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)見表1,其中conv表示的是BN-Relu-conv操作,視頻經(jīng)過雙流卷積神經(jīng)網(wǎng)絡(luò)可以提取出車輛行為的空間和時(shí)間特征[13],再利用concat算法將上述兩種特征進(jìn)行融合。之后把特征融合得到的結(jié)果送入全連接層,經(jīng)過SIGMOD函數(shù)來對得到的結(jié)果進(jìn)行打分,分?jǐn)?shù)統(tǒng)一歸一化到區(qū)間 [0,1],表示車輛行為是非直行的概率,并基于此得到actionness曲線。
表1 雙流卷積網(wǎng)絡(luò)參數(shù)
為得到初級的粗糙區(qū)域提議,本文的主要思路是利用actionness曲線圖,對其中連續(xù)得分較高的片段進(jìn)行提取,并作為初級建議輸出結(jié)果。實(shí)驗(yàn)初始階段設(shè)定閾值m=0.4, 從曲線圖中選取一個(gè)大于給定閾值作為提議的起點(diǎn),利用該起點(diǎn)吸收鄰近的視頻片段來擴(kuò)充,擴(kuò)充停止的條件是當(dāng)擴(kuò)充完全的序列中包含低于閾值部分的占據(jù)整個(gè)序列一半時(shí),此時(shí)該集合便成為候選片段。實(shí)驗(yàn)中發(fā)現(xiàn)存在一部分候選片段是對車輛同一行為的描述,這使得檢測效率大大降低,為此引入非極大值抑制策略來提高效率,實(shí)驗(yàn)結(jié)果驗(yàn)證當(dāng)選擇設(shè)定IoU的閾值為0.7時(shí),效果較好。
上述得到的僅僅是初級的區(qū)域提議,然而初級的區(qū)域提議在準(zhǔn)確性方面存在一定的不足,因而精確的區(qū)域提議顯得尤為重要,在時(shí)序建模學(xué)習(xí)領(lǐng)域,LSTM網(wǎng)絡(luò)框架更合適結(jié)合上下文信息處理序列方面問題。本文選擇LSTM網(wǎng)絡(luò)框架對車輛行為進(jìn)行建模。LSTM的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,LSTM的定義參見文獻(xiàn)[3]。則LSTM單元在t時(shí)刻的更新過程如下
圖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表示在時(shí)間t下的輸入,Wi,Wf,Wo,Wc表示權(quán)重矩陣;bi,bf,bo,bc表示偏置向量,σ表示為sigmoid激活函數(shù),Ht為單元t時(shí)刻的輸出。Ct表示記憶單元在t時(shí)刻的狀態(tài)。
為了更有效提取視頻序列中車輛行為的語義信息,本文采用了一種雙向的LSTM模型。該模型不同于單向LSTM網(wǎng)路,可以從正向和反向提取視頻中序列信息,提取的特征信息更為細(xì)膩。該模型由兩個(gè)大小相同,方向相反的LSTM模塊組成,模型多個(gè)地方共享權(quán)值,模型初始運(yùn)行分別從雙向LSTM的始端和末端,添加的逆向LSTM單元在t時(shí)刻的更新如以下公式所示
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)
由于采用了上述的設(shè)計(jì),模型同時(shí)可以捕獲前向與反向的上下文,這使得模型對于視頻中車輛行為的檢測會(huì)更加的精確,如車輛的左轉(zhuǎn)、右轉(zhuǎn)等。由于判定車輛行為的轉(zhuǎn)變是非常模糊的,即邊界不確定,而雙向LSTM采用的結(jié)構(gòu)在初級區(qū)域提議則可以解決這一問題,對不同行為邊緣進(jìn)一步裁剪,最終產(chǎn)生更加精準(zhǔn)的提議。雙向LSTM網(wǎng)絡(luò)的輸出為正向和反向LSTM網(wǎng)絡(luò)輸出的隱藏狀態(tài)的聯(lián)合。
對視頻中的車輛行為得到初步提議后,下一步需要對該提議進(jìn)行細(xì)化裁剪分類。結(jié)構(gòu)模型如圖4所示,模型中包含有雙向LSTM網(wǎng)絡(luò)。通過輸入多個(gè)初級提議的特征向量,并經(jīng)過Softmax分類器,輸出對初級提議每一幀的細(xì)化裁剪分類。最后選擇輸出結(jié)果最多的行為作為最終分類的結(jié)果。為了得到視頻中車輛行為的發(fā)生起止時(shí)間,首先找到正確識別出該行為的視頻幀,選出其中最大的部分,通過向左右兩邊擴(kuò)散吸收。設(shè)定吸收錯(cuò)誤行為的閾值為10%,當(dāng)超過這一閾值時(shí),停止吸收,得到包含發(fā)生車輛行為的視頻幀,并輸出。
圖4 提議裁剪分類
為了訓(xùn)練基于深度學(xué)習(xí)的車輛時(shí)序動(dòng)作檢測算法,采用了大量的車輛行為視頻數(shù)據(jù),該數(shù)據(jù)來源于自己拍攝的和相關(guān)公司提供。數(shù)據(jù)集含有2218個(gè)已經(jīng)被分類裁剪好的短視頻和全長十幾個(gè)小時(shí)的未裁剪視頻,其中短視頻包含的車輛行為有6種,分別是直行、左轉(zhuǎn)、右轉(zhuǎn)、左變道、右變道和掉頭,對于其中的單個(gè)類別包含的視頻有300多個(gè)。按照2∶1∶1劃分為訓(xùn)練集、驗(yàn)證集和測試集。對未裁剪視頻處理后分為130段訓(xùn)練視頻和70段測試視頻[13]。實(shí)驗(yàn)首先使用ImageNet數(shù)據(jù)集[16]對雙流卷積網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練;然后利用完成裁剪分類的視頻訓(xùn)練車輛行為識別網(wǎng)絡(luò);最后,為得到車輛行為的細(xì)化檢測提議,利用未裁剪視頻中的訓(xùn)練集來訓(xùn)練雙向LSTM,使用裁剪好的訓(xùn)練集有背景行為的片段來訓(xùn)練LSTM的網(wǎng)絡(luò)裁剪能力。
4.2.1環(huán)境配置及超參數(shù)設(shè)置
本文實(shí)驗(yàn)環(huán)境配置為Linux64位Ubuntu16.04操作系統(tǒng),GPU為GeForceGTX1080Ti,深度學(xué)習(xí)框架為PyTorch。首先使用ImageNet數(shù)據(jù)集對雙流卷積網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,然后使用采集得到數(shù)據(jù)集對雙流卷積和雙向LSTM進(jìn)行訓(xùn)練,網(wǎng)絡(luò)訓(xùn)練的超參數(shù)如下:
對雙流卷積的空間網(wǎng)絡(luò)的最大迭代次數(shù)為3000次,初始學(xué)習(xí)率設(shè)為0.001,隨迭代次數(shù)學(xué)習(xí)率線性衰減到0.0007;對時(shí)間網(wǎng)絡(luò)的最大迭代次數(shù)為60000次,初始學(xué)習(xí)率設(shè)為0.005,隨迭代次數(shù)學(xué)習(xí)率線性衰減到0.0003;堆疊光流的L=10。使用隱含層的維度為1024的雙向LSTM來精剪提議,在訓(xùn)練LSTM網(wǎng)絡(luò)采用的優(yōu)化器是Adam優(yōu)化算法,batchsize大小設(shè)為12,初始學(xué)習(xí)率設(shè)為10e-5,權(quán)重衰減設(shè)為10e-4,epoch的次數(shù)為100。
4.2.2評估標(biāo)準(zhǔn)
實(shí)驗(yàn)評估標(biāo)準(zhǔn)用到的分類混淆矩陣如圖5所示。
圖5 分類混淆矩陣
召回率(Recall)表示的是樣本中的正例有多少被預(yù)測正確了,在這里表示正確檢測出車輛非直行行為的數(shù)量占據(jù)所有非直行行為數(shù)量的比例,公式如下所示
(14)
精確度(Precision)表示預(yù)測為正的樣本中有多少是真正的正樣本,在這里是指檢測出總的車輛行為中,非直行行為占據(jù)的比例,計(jì)算公式如下
(15)
平均精度(average-precision,AP)是召回率-精確度曲線下面的面積,是對精確度進(jìn)行平均得到的結(jié)果。mAP則表示所有類別的平均精度除以所有類別總數(shù)。
IoU(交并比)是深度學(xué)習(xí)中的一種重要度量指標(biāo),簡單來說是計(jì)算兩個(gè)集合的交集與并集之比,表示預(yù)測區(qū)域和真實(shí)區(qū)域的重合度,值越大則表明重合度越高,預(yù)測的結(jié)果越精確,tIoU表示時(shí)間維度上的檢測標(biāo)準(zhǔn)。
4.3.1堆疊光流實(shí)驗(yàn)
圖6展示了堆疊光流實(shí)驗(yàn),左下角是對車輛運(yùn)動(dòng)方向區(qū)域的劃分,左側(cè)部分代表的是車輛向左移動(dòng),右側(cè)部分代表的部分是車輛向右移動(dòng),亮度值反映了車輛移動(dòng)速度的大小。由圖6可知,當(dāng)L=1時(shí),單幀光流圖難以較好反應(yīng)出車輛行為信息,且伴隨著較多干擾噪聲。因此實(shí)驗(yàn)過程中逐漸增加光流幀信息,以便于更好地獲取車輛行為信息,提高分類的準(zhǔn)確率。當(dāng)設(shè)定的L=5時(shí),能夠較為清晰顯示出車輛的運(yùn)動(dòng)行為信息,并且排除了很多的背景噪聲。當(dāng)設(shè)定的L=10時(shí),可以更加清晰顯示車輛的行為信息,但是相比于L=5時(shí)的提升的力度緩慢。
圖6 多幀光流堆疊
車輛的行為信息可以通過疊加后的光流來體現(xiàn),實(shí)驗(yàn)中將數(shù)據(jù)按照7∶3的比例劃分訓(xùn)練集和測試集,對不同車輛行為圖片進(jìn)行光流疊加。實(shí)驗(yàn)結(jié)果見表2,從表中我們可以看出進(jìn)行光流堆疊處理后,時(shí)間卷積神經(jīng)網(wǎng)絡(luò)識別率有了較大的提高,光流堆疊(L=10)比光流堆疊(L=5)高了3.5%,比單幀光流識別率高了近13%。從實(shí)驗(yàn)中我們可以看出,采用的光流堆疊(L=15)時(shí),時(shí)間卷積網(wǎng)絡(luò)識別率相對于光流堆疊(L=10)提升不明顯,并且降低了計(jì)算效率。因此,本文將實(shí)驗(yàn)過程中時(shí)間卷積網(wǎng)絡(luò)的光流堆疊L設(shè)為10。
表2 堆疊光流實(shí)驗(yàn)結(jié)果
4.3.2 生成提議結(jié)果
行為提議是指通過輸入視頻后輸出的是車輛非直行行為的視頻的起點(diǎn)和終點(diǎn),因此查全率(Recall)的高低反應(yīng)了本文方法是否優(yōu)良。平均召回率隨提議數(shù)量的變化如圖7左圖所示。由圖可知平均召回率隨著平均提議數(shù)量的提高而逐步上升,當(dāng)平均數(shù)量達(dá)到200左右的時(shí)候,平均召回率固定在穩(wěn)定的數(shù)值。右圖展示了在平均提議數(shù)量設(shè)為100時(shí),使用不同的tIoU得到的召回率,當(dāng)tIoU>0.7的時(shí)候仍具有較好的召回率,這表明本文所提算法能夠較好提取車輛行為視頻中非直行行為。
圖7 平均召回率
4.3.3 行為檢測對比
本文也與現(xiàn)有的一些時(shí)序行為檢測算法進(jìn)行了對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表3,我們將時(shí)間重疊率(tIoU)的閾值的范圍設(shè)定在[0.3,0.7],從表中可以看出,本文所提算法與其它算法相比具有較好的mAP,與Xiong等[9]所提的算法相比,當(dāng)閾值α≥0.5時(shí),本文所提算法具有更加明顯的優(yōu)勢,這也展示了本文所提算法的優(yōu)越性。
表3 車輛時(shí)序行為檢測方法mAP/%
本文也對不同類別的非直行行為的檢測結(jié)果精度進(jìn)行了計(jì)算,實(shí)驗(yàn)結(jié)果見表4。從表中可以看出算法對掉頭行為的檢測結(jié)果最好,這是因?yàn)榈纛^行為在視頻中變化非常明顯,具有較強(qiáng)的特征;對變道行為檢測的結(jié)果最差,這是因?yàn)樽兊涝谝曨l中變化不明顯。當(dāng)tIoU閾值,算法的mAP為18.7%;當(dāng)tIoU閾值為0.9時(shí),算法的mAP為3.98%,從這方面可以看出,本文所提算法在車輛行為檢測方面具有明顯優(yōu)勢。
表4 各類非直行行為AP/%
針對視頻中車輛行為檢測的問題,本文提出了一種基于深度學(xué)習(xí)的車輛時(shí)序行為檢測算法。算法首先利用雙流卷積神經(jīng)網(wǎng)絡(luò)提取視頻中車輛行為的特征信息和光流特征信息,并給出車輛行為檢測初步提取的結(jié)果;然后利用雙向長短記憶網(wǎng)絡(luò)對得到的初級區(qū)域提議進(jìn)行細(xì)化裁剪分類操作。實(shí)驗(yàn)結(jié)果表明,本文方法成功檢測出長視頻中車輛行為,與現(xiàn)有時(shí)序檢測算法對比,也展現(xiàn)了本文算法的有效性和優(yōu)越性。但是,當(dāng)前方有多臺車輛的時(shí)候,算法在實(shí)時(shí)有效的檢測方面則顯得匱乏。因此下一步的研究計(jì)劃是在保證精度一定的同時(shí)對長視頻中多輛車行為進(jìn)行預(yù)測。