周曉華,武文博
(廣西科技大學電氣與信息工程學院,廣西柳州545616)
世界衛生組織發布的《2018年道路安全全球狀況報告》顯示,每年約有135萬人死于道路交通事故,道路交通傷害成為5~29歲兒童和年輕人的主要死因,而駕車時使用手機比專心駕駛發生碰撞的風險高出約4倍[1]。文獻顯示,80%的撞擊事故和65%的追尾事故是分心駕駛所導致的[2]。文獻[3]的調查報告中顯示,頻繁使用電話和進行其它次要任務會嚴重影響駕駛安全。巴西的一項自然主義駕駛研究證明了使用電話時的車速較低,司機受到電話干擾[4]。有效解決司機分心駕駛問題的一種方案是對司機駕駛行為進行實時監測,正確識別駕駛行為就是本文的研究重點。搭建一個可以實時識別駕駛行為的模型,通過檢測司機的分心行為,對其做出警告或做出干預,可以大大減少交通事故的發生。此外,駕駛行為識別還可以用于分析司機駕駛意圖,為全自動駕駛功能的實現做出鋪墊。
早期的學者們使用傳感器來檢測駕駛員的分心駕駛行為[5-7],這種檢測方法雖然足夠準確,但傳感器等設備對駕駛員造成的干擾本身已經影響了安全駕駛,所以這種依賴傳感器的檢測方法沒有得到發展。隨著圖像處理領域的技術突破,學者們將目光轉向機器學習和深度學習領域。文獻[8]使用Hough算法,監測駕駛員頭部姿態和車輛的偏航率,進而建立起二者的模糊隸屬度關系,由此來判斷司機當前駕駛狀態。文獻[9]提出了一種基于Faster-RCNN的駕駛行為監測模型,通過識別駕駛員手中是否存在手機來確定是否在安全駕駛狀態。文獻[10]使用圖卷積網絡,對駕駛員的姿態圖進行特征提取,同時融合關鍵物體對駕駛員分心行為進行識別,在StateFarm公開的駕駛行為數據集上取得了90%的準確率。文獻[11]對VGG-16網絡進行了改進,提出的模型可以識別出駕駛員為什么發生分心,取得了較高的識別精度。文獻[12]設計了一種級聯網絡模型,以VGG網絡為核心對特征進行提取,通過遷移學習重新訓練分類器,達到了93.3%的識別準確率。
目前,駕駛行為識別領域的研究雖然已經取得了一定的成果,但駕駛行為種類繁多而諸多研究主要關注在司機打電話、發短信等與手機有關的行為上,針對其它如喝水等行為的識別還沒有較好的結果。為解決此問題,本文在DenseNet的基礎上進行改進,使用StateFarm公開的駕駛行為數據集進行訓練,并取得了理想的識別效果。
隨著卷積神經網絡(Convolutional Neural Networks,CNN)研究的進展,計算機視覺(Computer Vision,CV)領域也取得了新的突破,CNN的性能較于傳統的機器學習算法具有較大的優勢。2012年ImageNet大賽冠軍得主提出的AlexNet[13]模型將CNN模型推向了新的高度,作者使用了5個卷積層和3個池化層搭建的CNN模型標志著深度神經網絡時代的開始。CNN領域的另一重大突破是ResNet[14]模型的出現,作者提出的“短路連結”使得訓練中的梯度易于反向傳播,進而可以訓練出更深的網絡。在這一思路的基礎上,文獻[15]提出了DenseNet模型。與ResNet模型不同的是,DenseNet模型的后層是與所有前層連結的。DenseNet模型巧妙地將特征在通道上連接以實現特征復用,從而大大減少了需要計算的參數量和計算成本。DenseNet模型網絡結構如圖1所示,主要由卷積層、dense block、transition layer、池化層和全連接層構成,通過使用不同個數的dense block和transition layer進行級聯,就可以組成不同層數的DenseNet。

圖1 DenseNet整體結構圖

圖2 denseblock結構圖
其中,dense block是DenseNet的核心模塊,其結構如圖2所示。
xl=Hl([x0,x1,…,xl-1])
(1)
式中,Hl(·)代表非線性轉化操作,它由BN(Batch Normalization)層、ReLU函數和3×3的卷積操作構成。雖然denseblock的設計可以將特征更為完整的傳遞到每一層,但在通道維度上大量使用拼接操作會使特征圖的通道數大量增加,嚴重拖慢模型運行效率,Hl(·)操作就是通過特征降維的方式將維度數量降低以減輕網絡的負擔。
在圖1中,denseblock與Transitionlayer相連的目的是把復用的特征圖大小降低,以此來進一步提升模型的性能。Transitionlayer中有一個大小為1的卷積核和一個平均池化層,并且定義參數θ,表示將denseblock輸出的特征圖數量減少至原始值的θ倍,通常將其取值為0.5。本文以DenseNet-169作為baseline模型,其配置信息如表1所示。

表1 baseline模型配置信息表
文獻[16]的作者將關注點放在不同通道的特征關系上進行了研究,文中構建了一個新的模塊單元——SE(Squzee & Excitation)block,通過建立不同通道之間的關系,自發地校準通道維度上的特征響應。其結構如圖3所示。

圖3 SE模塊結構圖
圖3中,給SE block一個通道數為C的輸入U,然后通過三個操作來對其特征進行重標定。首先,在空間維度上對特征進行壓縮,將其變成一個實數,這個實數在某種程度上有著全局感受野,它代表了一個通道上特征響應的全局分布。此操作可由式(2)表示,z表示U壓縮至空間維數的統計量,z∈RC,U∈RH×W×C。

(2)
然后,對壓縮所得的C個實數進行激勵操作,這個操作與CNN網絡中的門機制類似,通過訓練w參數來學習每個特征通道之間的相關性,為每個特征通道生成相應的權重。此操作可由式(3)表示,s為經過sigmoid激活后的激勵參數。
s=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))
(3)


(4)
本文所使用的數據來自StateFarm公司公開的駕駛行為數據集[17],該數據集中包含了來自不同膚色不同性別駕駛員的10個類別的駕駛行為。數據集中每個類別約有2000個樣本,共計23500張圖片,尺寸均為640×480。將其80%劃分為訓練集,另外20%平分為驗證集和測試集。為方便模型處理,使用編號c0-c9將10種駕駛行為標記,其類別描述如表2所示。

表2 類別描述
為擴充數據集和防止出現過擬合現象,使用圖像增強技術對樣本進行處理。將樣本隨機地進行水平翻轉、旋轉15°、亮度增強、對比度增強、縮放等操作來擴展數據集。部分處理后的圖像如圖4所示。

圖4 一張樣本增強后的部分擴增圖像
為提升模型對于細微差異的識別能力,引入通道注意力機制對其進行改進。使用1.2小節所提到的SE block可以使駕駛行為識別模型能夠關注到不同通道之間特征的關系。文獻[16]在對ResNet的改進過程中嘗試了4種不同的改進方式,分別為:將SE block添加在殘差塊之后、殘差塊之前,與殘差塊并行放置和放置在殘差網絡最后。實驗結果顯示并行放置時模型的top-1錯誤率最低,而放置在殘差塊之前時模型的top-5錯誤率最低。據此,本文將設計三種改進方案進行實驗對比。將SE模塊放置在dense block循環尾部,記為SE-standard模型;將SE模塊放置在dense block循環起始,記為SE-PRE模型;將SE模型放置dense block與transition layer之間,記為SE-POST模型。改進前后的方案如圖5所示。

圖5 改進方案圖

圖6 改進駕駛行為識別模型結構
以SE-standard模型為例,改進后的駕駛行為識別模型結構如圖6所示,首先將樣本輸入至模型,然后進行圖像數據的預處理操作,將處理后的圖像數據送入模型特征提取環節,該環節的核心就是加入SE block后的denseblock,得到該樣本的特征后經過分類器計算分類概率,最后輸出識別的樣本種類。
1)實驗硬件配置:Intel Core Xeon E5-2670v2 CPU
2.5GHz,16.0GB運行內存,NVIDIA GeForce GTX Titan XP顯卡;
2)軟件配置:64位Windows10操作系統,Python3.6編譯環境,Pytorch1.2深度學習框架。
本文baseline模型為DenseNet-169,輸入維度為224×224,故需要將原始樣本數據進行大小調整操作。為保證訓練結果可復現,在實驗時將隨機種子設置值為666。為達到快速收斂的目的,本文模型優化器使用Adam優化器,初始學習率為0.02,每10代進行一次衰減,衰減指數為0.5。考慮到DenseNet模型對顯存消耗較大的弊端,訓練時批處理樣本數量為64。
為了證明改進后的駕駛行為識別模型整體性能優于baseline模型,將其與改進后的模型進行對比,實驗分別從模型體積、識別速度、單分類正確率和整體正確率四個方面進行分析。
1)模型體積
模型體積表現了該模型占用硬件資源的多少,模型參數越多、結構越復雜則模型體積越大。模型改進前后的體積對比結果如表3所示,通過對比保存的模型文件大小發現,改進前后的模型體積變化不大,體積增大最高不超過3%,對于硬件性能的影響微乎其微。

表3 模型改進前后模型體積對比
2)識別速度
對于一個駕駛行為識別模型,其識別速度是一項重要的性能指標,模型的應用場景要求其具有實時識別的能力。本文采用的測試數據集共1782張圖片,通過記錄測試總用時來獲得單張圖片識別用時。識別速度測試結果如表4所示,改進前后單張識別速度變化在1毫秒以內,因此模型的改進對模型識別速度產生的影響很小。

表4 模型識別速度

圖7 駕駛行為識別混淆矩陣
3)單分類正確率
為了評價模型對于單個行為類別的識別能力,將前文提到的四個模型訓練后,載入測試樣本數據并將結果繪制在混淆矩陣中觀察其單分類能力。觀察發現模型在改進前對于c4類行為識別能力較弱;SE-standard模型雖然單分類能力有所提升,但提升效果有限,c6和c9類別的正確率低于80%;SE-PRE模型的單分類能力改善較為明顯,c1、c3與c5類正確率接近100%;SE-POST模型的單分類能力依然有缺陷,c8類識別正確率低于70%。
4)行為識別準確率
根據圖7中的駕駛行為識別混淆矩陣可按下式計算獲得模型行為識別的整體準確率,結果如表5所示。

(5)
式中:TP表示預測正確且分類正確數量;TN表示預測錯誤但分類正確數量;FP表示預測正確但分類錯誤數量;FN表示預測錯誤且分類錯誤數量。

表5 模型識別準確率
從表中可以看出,SE-PRE模型的準確率最高,其它兩個改進模型準確率相對原模型均有所提高,證明改進措施有效且效果顯著。將模型總體準確率結合模型體積、識別速度和單分類準確率的結果可以得出:本文對于駕駛行為識別模型的改進在不影響模型響應速度和體積的情況下,有效提高了單分類準確率和整體識別準確率,與同類研究相比,以極低的成本提升了模型性能。
本文在DenseNet模型的基礎上,引入通道注意力機制對其進行改進,相比原有的駕駛行為識別模型,在保證模型識別速度的前提下有效提升了識別的準確率,能夠解決原有模型對于單分類準確率不足的問題;高效且準確的識別駕駛行為并對分心駕駛行為做出預警,可以降低發生交通事故的風險,保障人民的生命財產安全。在今后的研究中,可以考慮使用新的注意力機制來進一步改善的行為識別性能,此外還可以從模型體積入手,使用更為輕量化的網絡以便于識別模型的部署與落地。