高尚兵,張瑩瑩,王 騰,張秦濤,劉 宇
(1.淮陰工學(xué)院 計(jì)算機(jī)與軟件工程學(xué)院,江蘇 淮安 223003;2.江蘇省物聯(lián)網(wǎng)移動(dòng)互聯(lián)網(wǎng)技術(shù)工程實(shí)驗(yàn)室,江蘇 淮安 223001)
全球每年在交通事故中受傷的人數(shù)超過1 000萬(wàn)人[1],許多交通事故是分心駕駛導(dǎo)致,中國(guó)交通年鑒的統(tǒng)計(jì)數(shù)據(jù)顯示,我國(guó)大部分的交通事故是由于駕駛員的駕駛行為不當(dāng)或者行為違規(guī)造成的,根據(jù)美國(guó)高速公路安全管理局(national highway traffic safety administration,NHTSA)發(fā)布的調(diào)查結(jié)果顯示,因駕駛員分心而導(dǎo)致的交通事故人員傷亡占死亡人數(shù)的64.4%[2]。無(wú)論國(guó)內(nèi)外,在駕駛員行車過程中對(duì)其行為進(jìn)行識(shí)別都非常重要,識(shí)別的實(shí)時(shí)性和準(zhǔn)確性則是輔助駕駛安全的要素之一,可以在一定程度上減少交通事故的發(fā)生。因此,駕駛員分心行為檢測(cè)在自動(dòng)駕駛領(lǐng)域和計(jì)算機(jī)視覺方向上都有廣闊的研究前景[3]。
盡管駕駛員分心行為識(shí)別是人類動(dòng)作識(shí)別[4]的一個(gè)通用問題,但是由于駕駛員分心時(shí)體態(tài)差異細(xì)微,目前用于人體動(dòng)作識(shí)別的方法并不適用于駕駛員分心識(shí)別。雖然很多研究都致力于對(duì)各種分心行為進(jìn)行檢測(cè),且具有一定的效果[5-6],但是大多都采用CNN結(jié)構(gòu)對(duì)駕駛員行為進(jìn)行檢測(cè)[7],一方面模型較大而且檢測(cè)精度不高;另一方面通過CNN結(jié)構(gòu)更多提取到的是局部特征,不能全面地檢測(cè)駕駛員行為,而有些研究者通過加大卷積核尺寸來(lái)擴(kuò)大感受野,這會(huì)加重網(wǎng)絡(luò)負(fù)擔(dān)。
提出了一種基于BiViTNet的駕駛員行為識(shí)別方法,具體貢獻(xiàn)如下:①大部分的CNN結(jié)構(gòu)為了擴(kuò)大感受野而選用更大尺寸的卷積核,參數(shù)量和計(jì)算量也隨之成倍地增加,因此筆者提出了雙分支并行的輕量級(jí)神經(jīng)網(wǎng)絡(luò),將基于CNN的局部特征和基于ViT的全局特征相結(jié)合,以增強(qiáng)表示學(xué)習(xí);②采用雙分支并行結(jié)構(gòu),CNN Branch和ViT Branch可以最大限度地保留局部特征和全局表示;③為了使網(wǎng)絡(luò)更貼合實(shí)際,數(shù)據(jù)集來(lái)自于交通監(jiān)管平臺(tái)的車內(nèi)多視角監(jiān)控視頻,不僅基于真實(shí)的駕駛環(huán)境,而且多視角監(jiān)控相對(duì)于單一攝像頭所采集的數(shù)據(jù)而言更加全面。
駕駛員分心行為檢測(cè)已經(jīng)得到了廣泛的關(guān)注,過去幾年研究者已經(jīng)提出了多種方法。
根據(jù)數(shù)據(jù)采集方式的不同,可以分為接觸式傳感器識(shí)別法和非接觸式傳感器識(shí)別法[8]。接觸式傳感器識(shí)別法需要駕駛員佩戴特殊的設(shè)備來(lái)采集駕駛員的生理信息和肢體運(yùn)動(dòng)狀態(tài),這種方法可能會(huì)對(duì)駕駛員的正常駕駛行為造成一定的干擾。非接觸式傳感器識(shí)別法主要通過相機(jī)、壓力傳感器等來(lái)采集數(shù)據(jù),分析駕駛員的駕駛狀態(tài),這種方法具有良好的部署便利性。采用的是非接觸式傳感器識(shí)別法,通過單目相機(jī)采集駕駛數(shù)據(jù)。
根據(jù)所采用的算法不同,可以分為傳統(tǒng)機(jī)器學(xué)習(xí)方法和深度學(xué)習(xí)方法。在之前的研究中,很多研究者通過傳統(tǒng)機(jī)器學(xué)習(xí)的方法對(duì)駕駛員分心行為進(jìn)行檢測(cè),YAN Chao等[9]通過金字塔方向梯度直方圖和隨機(jī)森林分類器對(duì)駕駛員的分心行為進(jìn)行檢測(cè)。
近年來(lái),由于卷積神經(jīng)網(wǎng)絡(luò)已在多個(gè)領(lǐng)域取得了巨大成功,很多研究者也將其用在駕駛員分心行為檢測(cè)任務(wù)上,PENG Xishuai等[10]先通過VGG-19網(wǎng)絡(luò)從采集的駕駛數(shù)據(jù)中提取單一時(shí)刻的語(yǔ)義信息,再通過LSTM(long short term memory)網(wǎng)絡(luò)對(duì)駕駛員的分心行為進(jìn)行檢測(cè);HU Yaocong等[11]使用多流卷積網(wǎng)絡(luò)來(lái)提取不同尺度的特征,并將這些特征進(jìn)行融合最后進(jìn)行分心行為檢測(cè)。雖然在深度學(xué)習(xí)方法研究中,有針對(duì)全局與局部相融合的方法,但未有人將其用于駕駛員分心行為檢測(cè)領(lǐng)域。
以上方法雖然都基本可以對(duì)駕駛員的分心行為進(jìn)行檢測(cè),但是仍存在一些問題:①所采用的數(shù)據(jù)集一般來(lái)自于實(shí)驗(yàn)條件下,跟真實(shí)駕駛場(chǎng)景下的數(shù)據(jù)有一定的誤差,所以數(shù)據(jù)應(yīng)該盡量貼近真實(shí)駕駛環(huán)境;②大多數(shù)網(wǎng)絡(luò)的參數(shù)量和計(jì)算量比較大,很難達(dá)到實(shí)時(shí)檢測(cè)的要求;③檢測(cè)的準(zhǔn)確率不高也是普遍存在的問題。因此,筆者提出一種能精確識(shí)別多種駕駛員分心行為的輕量級(jí)神經(jīng)網(wǎng)絡(luò)BiViTNet。
CNN和Transformer在特征獲取方面存在一定的差異,前者具有局部性,而后者具有全局交互特性,將兩者結(jié)合可以綜合局部和全局的視覺表征信息,從而提高網(wǎng)絡(luò)對(duì)特征的學(xué)習(xí)和表達(dá)能力。因此,BiViTNet結(jié)合CNN和Transformer,采用雙分支并行結(jié)構(gòu),如圖1。
第1個(gè)分支采用卷積結(jié)構(gòu),重點(diǎn)關(guān)注局部特征,該分支主要包含3個(gè)模塊,分別是Stem模塊、殘差過渡模塊和局部感知模塊;第2個(gè)分支采用ViT結(jié)構(gòu),雙分支在保留局部特征和全局表示的同時(shí)進(jìn)行雙向特征交互,最后將兩個(gè)分支的特征進(jìn)行融合。特征融合時(shí),采用add函數(shù),讓每一維度下的特征信息量增加,這有助于最后的分類。
圖1 BiViTNet結(jié)構(gòu)Fig.1 Structure of the BiViTNet
2.1.1 Stem模塊
CNN Branch整體基于特征金字塔架構(gòu)[12],首先通過Stem模塊處理輸入,Stem模塊主要是用于提取圖像的初始局部特征。由于CNN Branch重點(diǎn)關(guān)注圖像的局部特征,所以不用像其他網(wǎng)絡(luò)那樣為了擴(kuò)大感受野而采用大卷積核,因此一定程度上減少了參數(shù)量。Stem模塊均采用3×3的卷積并結(jié)合最大池化,將圖像大小縮放到原來(lái)的1/4。Stem模塊的結(jié)構(gòu)如圖2。
圖2 Stem模塊結(jié)構(gòu)Fig.2 Structure of the stem module
2.1.2 殘差過渡模塊
送入CNN Branch中的圖像經(jīng)過Stem模塊處理之后進(jìn)入Transition模塊。為了保證實(shí)時(shí)性且使參數(shù)量和運(yùn)算成本都盡可能地比較低,Transition模塊采用深度可分離卷積,包括逐通道卷積(depthwise convolution)和逐點(diǎn)卷積(pointwise convolution)。
標(biāo)準(zhǔn)卷積的參數(shù)量(parameter,Ps)和計(jì)算量(Fs)為:
Ps=K2×M×N
(1)
Fs=Ho×Wo×M×K2×N
(2)
深度可分離卷積的參數(shù)量(PD)和計(jì)算量(FD)為:
PD=K2×M+M×N
(3)
FD=K2×Ho×Wo×M+Ho×Wo×M×N
(4)
所以,標(biāo)準(zhǔn)卷積和深度可分離卷積參數(shù)量的比值(P′)和計(jì)算量的比值(F)為:
(5)
(6)
式中:Ho和Wo分別為輸出特征圖的高和寬;M為輸入特征圖的通道數(shù);K為卷積核尺寸;N為卷積核個(gè)數(shù)。通過式(5)和式(6)可以看出使用深度可分離卷積代替標(biāo)準(zhǔn)卷積操作,可以顯著降低參數(shù)量和計(jì)算量。
在Transition模塊中采用SiLU激活函數(shù)。除使用深度可分離卷積外,還采用了殘差結(jié)構(gòu),一方面可以保證長(zhǎng)距離的信息不丟失,另一方面也可實(shí)現(xiàn)不同層級(jí)間的特征交互。Transition模塊的結(jié)構(gòu)如圖3。
2.1.3 局部感知模塊
CNN Branch中的局部感知模塊(local sensing module,LSM)主要是為了高效低價(jià)地提取圖像的局部特征。LSM先使用1×1卷積,將經(jīng)過最大池化后的特征圖從低維空間映射到高維空間中,以提取到更多信息。為了在獲取局部特征的同時(shí)減少參數(shù)量和計(jì)算量,LSM也采用深度可分離卷積。
LSM中并未使用更大的卷積核,也沒有使用更寬的網(wǎng)絡(luò)結(jié)構(gòu),而是簡(jiǎn)單的單分支結(jié)構(gòu),這是因?yàn)镃NN Branch只是用來(lái)獲取圖像的局部特征,只用1×1卷積和3×3卷積搭配就可以完成這一任務(wù),所以不需要通過更大的卷積核或者更寬的網(wǎng)絡(luò)結(jié)構(gòu)來(lái)擴(kuò)大感受野范圍,同時(shí)這樣也可以降低網(wǎng)絡(luò)的參數(shù)量。CNN Branch不能捕獲到的全局信息則通過ViT Branch和雙向特征交互模塊去彌補(bǔ)。LSM的結(jié)構(gòu)如圖4。
圖4 LSM結(jié)構(gòu)Fig.4 Structure of the LSM
由于CNN Branch為了減少參數(shù)量,均采用1×1和3×3的卷積核,感受野比較小,所以ViT Branch建立全局依賴彌補(bǔ)CNN Branch的不足。
ViT是受Transformer的啟發(fā)[13],將其直接從NLP領(lǐng)域轉(zhuǎn)換到了CV領(lǐng)域。ViT塊的結(jié)構(gòu)如圖5。ViT Branch的結(jié)構(gòu)如圖6。
圖5 ViT結(jié)構(gòu)Fig.5 Structure of the ViT
圖6 ViT Branch結(jié)構(gòu)Fig.6 Structure of the ViT branch
ViT Branch包含3個(gè)ViT塊,通過控制每個(gè)階段輸入的圖像塊大小和被劃分的圖象塊大小來(lái)獲得不同感受野范圍的特征信息,每個(gè)ViT塊的最后并不做分類,而是通過雙向特征交互模塊(bidirectional feature interaction module,BiFIM)串聯(lián)接入下一個(gè)ViT塊,并通過BiFIM模塊和ViT結(jié)合獲得不同層級(jí)的語(yǔ)義信息。最后,將ViT Branch和CNN Branch進(jìn)行特征融合后再進(jìn)行分類,這樣做可以最大限度地保留局部特征和全局表示,并實(shí)現(xiàn)局部與全局視覺表征信息的交互,較好地進(jìn)行駕駛員分心行為檢測(cè)。
CNN Branch和ViT Branch之間通過雙向特征交互模塊BiFIM實(shí)現(xiàn)局部特征和全局表示之間的雙向融合。BiFIM包括兩部分,分別是特征對(duì)齊模塊(feature alignment module,FAM)和采樣模塊。由于經(jīng)過Transformer后的特征維度和卷積后的特征維度不匹配,所以用FAM模塊在兩種特征維度間互相轉(zhuǎn)換并通過1×1卷積實(shí)現(xiàn)通道匹配;同時(shí),還需要上下采樣以便于CNN Branch和ViT Branch特征的融合。因此,BiFIM一方面進(jìn)行特征維度轉(zhuǎn)換以實(shí)現(xiàn)ViT塊的串聯(lián),另一方面在CNN Branch和ViT Branch之間建立雙向特征交互。BiFIM的結(jié)構(gòu)如圖7。
圖7 BiFIM結(jié)構(gòu)Fig.7 Structure of the BiFIM
使用的數(shù)據(jù)來(lái)自實(shí)際場(chǎng)景下的車內(nèi)多視角監(jiān)控視頻,首先,將長(zhǎng)監(jiān)控視頻中的分心行為剪輯成短視頻,然后對(duì)這些短視頻逐幀截取,并從中選擇代表性的幀,最后對(duì)選取出的每一張圖片進(jìn)行分心行為類別標(biāo)注。在進(jìn)行數(shù)據(jù)標(biāo)注時(shí)為了不引起歧義,對(duì)于安全駕駛和左顧右盼這兩個(gè)類別分別人工選取代表性更強(qiáng)的幀進(jìn)行制作,駕駛員視線保持正前方,操作符合規(guī)范的圖像標(biāo)定為正常駕駛;駕駛員視線既不在正前方和左右后視鏡,也沒有觀察路況,而將頭探出窗外、低頭或向后扭頭的圖像標(biāo)定為左顧右盼。筆者所采用的數(shù)據(jù)集分為5個(gè)類別,總共包括43 495張圖片,其中訓(xùn)練集和驗(yàn)證集按照7∶3的比例進(jìn)行劃分。圖8為駕駛員分心行為數(shù)據(jù)集的示意圖,表1為自建的分心駕駛數(shù)據(jù)集詳細(xì)說(shuō)明。
圖8 數(shù)據(jù)集示意Fig.8 Schematic diagram of the dataset
表1 數(shù)據(jù)集詳細(xì)信息Table 1 Details of the dataset
多視角的監(jiān)控一方面雖然提升了數(shù)據(jù)的豐富度,相對(duì)于單一攝像頭所采集的數(shù)據(jù)更加全面,但是另一方面由于多視角的存在,需要網(wǎng)絡(luò)從不同的角度去判定同一分心行為,這就要求網(wǎng)絡(luò)提取更多更全面的特征,也給檢測(cè)帶來(lái)了很大挑戰(zhàn)。因此,結(jié)合CNN和ViT兩者的優(yōu)勢(shì),創(chuàng)建兩個(gè)分支,并在兩個(gè)分支之間進(jìn)行不同維度特征的交互以同時(shí)關(guān)注局部特征和全局特征。以C2打電話為例的多視角監(jiān)控如圖9。
圖9 多視角監(jiān)控Fig.9 Multi-view monitoring
為了加快網(wǎng)絡(luò)的訓(xùn)練過程,對(duì)數(shù)據(jù)集進(jìn)行了預(yù)處理。首先,將圖像的大小統(tǒng)一轉(zhuǎn)換為224×224,然后使用縮放、裁剪、翻轉(zhuǎn)和增減對(duì)比度的方法進(jìn)行數(shù)據(jù)增強(qiáng)。
為了評(píng)價(jià)BiViTNet的性能,使用以下4個(gè)指標(biāo)對(duì)該網(wǎng)絡(luò)進(jìn)行評(píng)估,分別是準(zhǔn)確率(A)、精度(P)、召回率(R)和F1分?jǐn)?shù)(F1),這4個(gè)評(píng)價(jià)指標(biāo)的定義為:
(7)
(8)
(9)
(10)
式中:TN、TP、FN和FP分別為真反例、真正例、假反例和假真例。
本實(shí)驗(yàn)使用的深度學(xué)習(xí)框架為Python3.8和pytorch 1.10,操作系統(tǒng)為Centos 8.0,GPU為Tesla V100,內(nèi)存大小16 G。對(duì)模型設(shè)置動(dòng)量為0.9,訓(xùn)練批次大小為16,訓(xùn)練輪次為64,初始學(xué)習(xí)率為0.001,學(xué)習(xí)率每隔10輪變?yōu)樵瓉?lái)的0.5,并使用隨機(jī)梯度下降(SGD)和交叉熵?fù)p失函數(shù)對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,更新網(wǎng)絡(luò)模型的權(quán)重。
BiViTNet網(wǎng)絡(luò)在訓(xùn)練過程中的訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率和損失變化如圖10。從圖10中可以看出,當(dāng)訓(xùn)練達(dá)到50個(gè)迭代次數(shù)之后網(wǎng)絡(luò)開始趨于平緩收斂,在訓(xùn)練的過程中不管是準(zhǔn)確率還是損失都沒有過擬合;同時(shí)在訓(xùn)練過程中,曲線基本上不表現(xiàn)噪聲,在整個(gè)上升和下降的過程中,除了最開始的3~4次迭代次外總體上表現(xiàn)平滑,這也說(shuō)明了筆者搭建的BiViTNet模型具有較好的魯棒性,比較適合進(jìn)行駕駛員分心檢測(cè)任務(wù)。
圖10 訓(xùn)練中的數(shù)據(jù)變化情況Fig.10 Data changes during training
為了更詳細(xì)地展示BiViTNet的效果,筆者分別取C0正常駕駛、C1左顧右盼、C2打電話、C3玩手機(jī)、C4抽煙這5種分心駕駛行為在4項(xiàng)評(píng)價(jià)指標(biāo)上的表現(xiàn)做詳細(xì)分析,各項(xiàng)指標(biāo)的數(shù)據(jù)如表2。
表2 驗(yàn)證BiViTNet的評(píng)價(jià)指標(biāo)Table 2 Evaluation index of verifying BiViTNet %
從表2中可以看出,C2類別代表的打電話無(wú)論是準(zhǔn)確率、精度、召回率還是F1分?jǐn)?shù)都是最高的。C1類別代表的左顧右盼相比于其他類別而言準(zhǔn)確率較低,結(jié)合表1,可以發(fā)現(xiàn)C1類別和C3類別數(shù)目相近,因此這與所采集照片的數(shù)目關(guān)系不大,這可能是由于駕駛員左顧右盼與正常駕駛時(shí)的體態(tài)差異很小,只有頭部微小的扭動(dòng)而身體其他部分幾乎沒有區(qū)別,多數(shù)要通過臉部的變化才能區(qū)分,因此十分容易和正常駕駛混淆。
在自建多視角駕駛員數(shù)據(jù)集的測(cè)試集上,采用相同的訓(xùn)練策略,將筆者提出的方法和一些常見的網(wǎng)絡(luò)模型及方法進(jìn)行比較。BiViTNet網(wǎng)絡(luò)與CNN網(wǎng)絡(luò)和ViT網(wǎng)絡(luò)對(duì)比的實(shí)驗(yàn)結(jié)果分別如表3和表4。
表3 與CNN系列網(wǎng)絡(luò)的對(duì)比Table 3 Comparison with the CNN series network
表4 與ViT系列網(wǎng)絡(luò)的對(duì)比Table 4 Comparison with the ViT series network
從表3可以看出,與CNN系列網(wǎng)絡(luò)相比,筆者提出的BiViTNet模型具有一定的優(yōu)勢(shì),相比于CNN系列網(wǎng)絡(luò)中性能最高的MobileNet模型,筆者所提BiViTNet的準(zhǔn)確率達(dá)到97.18%,相比于VGG、ResNet-50和DenseNet模型在計(jì)算量上有明顯的降低,計(jì)算量(multiply-accumulate operations,MAdds)更是達(dá)到了數(shù)量級(jí)的下降。
從表4可以看出,相較于經(jīng)典的ViT模型和CrossViT模型,提出的BiViTNet模型展現(xiàn)出較好的實(shí)驗(yàn)效果,ViT Branch的驗(yàn)證準(zhǔn)確率達(dá)到96.74%,整個(gè)模型的驗(yàn)證準(zhǔn)確率更高,而且在模型大小和參數(shù)量上都有明顯的降低,綜合性能較好。
為了便于觀察各類別的效果,將BiViTNet模型分別與DenseNet模型和CrossViT模型進(jìn)行更細(xì)節(jié)的對(duì)比,如表5和表6。
表6 與CrossViT詳細(xì)對(duì)比Table 6 The detailed comparison with CrossViT %
從表5和表6的詳細(xì)對(duì)比可以看出,所提的BiViTNet模型在整體效果和各類任務(wù)上分別有不同程度的提升,準(zhǔn)確率和召回率基本上都有所提高。相較于DenseNet模型,BiViTNet模型補(bǔ)充了全局視覺表征信息;相較于CrossViT模型,BiViTNet模型增強(qiáng)了捕獲局部特征的能力。因此,筆者所提模型信息表達(dá)更為全面,檢測(cè)效果也相對(duì)更好。單獨(dú)使用CNN Branch和ViT Branch進(jìn)行消融實(shí)驗(yàn),效果如表7。
表7 雙分支消融對(duì)比Table 7 Comparison with dual branch ablation
從表7結(jié)果可以看出,兩個(gè)分支都具有較高的準(zhǔn)確率,但是由于實(shí)驗(yàn)是在沒有任何預(yù)訓(xùn)練的基礎(chǔ)上進(jìn)行的,而且數(shù)據(jù)集的規(guī)模也沒有特別大,所以ViT Branch的準(zhǔn)確率要比CNN Branch略微遜色。由于BiFIM可以強(qiáng)化全局依賴,同時(shí)保留全局表示中的局部細(xì)節(jié)信息,所以通過BiFIM在兩個(gè)分支之間建立連接后,模型的準(zhǔn)確率比單獨(dú)的任何一個(gè)分支都要高。所提出的BiViTNet模型達(dá)到了較好的實(shí)驗(yàn)效果,準(zhǔn)確率達(dá)到97.18%。
對(duì)于駕駛員分心行為檢測(cè)的任務(wù),提出了BiViTNet,該網(wǎng)絡(luò)由兩個(gè)分支組成,兩個(gè)分支各自有不同的側(cè)重點(diǎn),并不斷進(jìn)行雙向特征交互,最后對(duì)駕駛員的分心行為進(jìn)行檢測(cè)。實(shí)驗(yàn)結(jié)果表明,BiViTN參數(shù)量和計(jì)算量都較低,準(zhǔn)確率達(dá)到97.18%,兩個(gè)分支的結(jié)合可以有效地將局部和全局信息進(jìn)行編碼,實(shí)現(xiàn)局部與全局視覺表征信息的交互,可以快速準(zhǔn)確地進(jìn)行駕駛員分心行為檢測(cè),輔助駕駛員安全行車,同時(shí)也為進(jìn)一步的研究打下了良好的基礎(chǔ)。BiViTNet雖然可有效提高檢測(cè)的準(zhǔn)確率,但若是實(shí)驗(yàn)數(shù)據(jù)的背景過于復(fù)雜可能會(huì)在一定程度上影響檢測(cè)效果,因此,在保證實(shí)時(shí)性的前提下,解決上述問題是未來(lái)研究工作的重點(diǎn)。