胥文倩 張鉑洋 趙偉 杜懿宸 于洋
(天津師范大學(xué) 計(jì)算機(jī)與信息工程學(xué)院軟件學(xué)院 天津市 300387)
據(jù)公安部統(tǒng)計(jì),2022 年全國(guó)機(jī)動(dòng)車保有量達(dá)4.17億輛,其中汽車3.19 億輛;機(jī)動(dòng)車駕駛?cè)诉_(dá)5.02 億人,其中汽車駕駛?cè)?.64 億人[1]。中國(guó)是全球交通事故最嚴(yán)重的國(guó)家之一,酒后駕車、疲勞駕駛、高速駕駛是如今導(dǎo)致我國(guó)交通事故高發(fā)的三大因素[2]。目前關(guān)于駕駛員行為與疲勞狀態(tài)監(jiān)測(cè)預(yù)警技術(shù)可以分為基于生理特征的檢測(cè)方法、基于車輛行駛信息的檢測(cè)方法及基于駕駛?cè)藛T行為特征的檢測(cè)方法3 類[3]。第一類,從檢測(cè)設(shè)備對(duì)駕駛員正常生理狀態(tài)與疲勞狀態(tài)進(jìn)行比對(duì)分析,以此分析駕駛員的駕駛狀態(tài)。第二類,通過駕駛員操作車輛的情況以及車輛在運(yùn)行中的各項(xiàng)參數(shù)來判斷駕駛員是否分心或疲勞駕駛。第三類,使用信息綜合的方法,綜合生理數(shù)據(jù)與車輛參數(shù),對(duì)駕駛員狀態(tài)進(jìn)行多方面監(jiān)測(cè)。因此,本文旨在研發(fā)出一套智能安全駕駛檢測(cè)系統(tǒng),規(guī)范駕駛員行為,排除駕駛過程中因駕駛員不當(dāng)行為帶來的安全隱患。
基于深度學(xué)習(xí)的安全行車輔助系統(tǒng)主要有采集模塊、識(shí)別處理模塊,以及警示模塊組成。系統(tǒng)首先借助以圖像采集設(shè)備、酒精傳感器為主體的采集硬件,將反映駕駛情況的數(shù)據(jù)與信息通過線路或網(wǎng)絡(luò)傳輸至識(shí)別模塊。通過分析處理,實(shí)時(shí)判別駕駛員是否出現(xiàn)駕駛分心或者酒后駕駛情況,在出現(xiàn)危險(xiǎn)駕駛行為時(shí),立即發(fā)出警報(bào),警示駕駛員專注行車、或者提醒身體狀態(tài)不適宜駕車,從而達(dá)到自動(dòng)識(shí)別監(jiān)測(cè)、保障行車安全的目的。
系統(tǒng)通過攝像頭獲取駕駛員圖像數(shù)據(jù)信息,通過以YOLOv5 算法為主體的軟件進(jìn)行分析處理,自動(dòng)判別駕駛員行為狀態(tài),將駕駛員行為狀態(tài)分為5 類:“正?!保╪ormal)、“閉眼”(closeeyes)、“打哈欠”(yawn)、“打電話”(calling)、“注意力不集中”(distraction),在識(shí)別到危險(xiǎn)駕駛行為時(shí)及時(shí)發(fā)出提醒。
考慮到實(shí)際應(yīng)用場(chǎng)景中環(huán)境的復(fù)雜性,系統(tǒng)采用MQ-3 氣體傳感器進(jìn)行酒精檢測(cè),持續(xù)采集空氣中酒精濃度數(shù)據(jù)。采集到的值交由Arduino UNO 處理,設(shè)置警示濃度范圍,針對(duì)可能出現(xiàn)檢測(cè)存在誤差的情況,取5次檢測(cè)值為一組計(jì)算平均值,保證準(zhǔn)確度,避免誤判。Arduino UNO 與蜂鳴器連接,當(dāng)酒精濃度范圍超過閾值時(shí),蜂鳴器持續(xù)警報(bào),向駕駛員傳達(dá)報(bào)警信息。系統(tǒng)結(jié)構(gòu)如圖1 所示。
本文設(shè)計(jì)實(shí)現(xiàn)識(shí)別駕駛員途中是否專心,對(duì)各種分心行為做出檢測(cè),如閉眼、打哈欠、使用手機(jī)等。做到了駕駛狀態(tài)的全自動(dòng)檢測(cè),離開了對(duì)人工監(jiān)督的依賴。同時(shí),相當(dāng)高的識(shí)別準(zhǔn)確率保證了系統(tǒng)的可靠性。
目標(biāo)檢測(cè)算法在駕駛識(shí)別中的應(yīng)用程度較低,本文有效地將深度學(xué)習(xí)YOLOv5 算法應(yīng)用于駕駛過程中,并對(duì)算法代碼進(jìn)行了針對(duì)駕駛員圖像特點(diǎn)的適應(yīng)性改進(jìn),使之更專精駕駛識(shí)別。
MQ-3 酒精傳感器模塊具有四個(gè)引腳,其中兩個(gè)用于接電源正極與負(fù)極,另外兩個(gè)可以同時(shí)輸出模擬和數(shù)字?jǐn)?shù)據(jù)。由于模塊的工作電壓范圍為 5V,容差為 0.1%,使用 Arduino 的 5V 引腳為電路供電。該板具有一個(gè)運(yùn)算放大器比較器,可將來自氣體傳感器的輸入模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),內(nèi)置兩個(gè) LED。當(dāng)電源連接到電路板時(shí),電源 LED 會(huì)亮起,當(dāng)達(dá)到電位器的觸發(fā)值時(shí),Dout LED 會(huì)亮起[7]。硬件核心部件及其功能設(shè)計(jì)如圖2所示。
圖2: 酒精檢測(cè)硬件運(yùn)行流程
YOLO 是REDMON 等[8]提出的目標(biāo)檢測(cè)算法,是一種單階段、基于錨框的物體檢測(cè)模型,它使用錨框來預(yù)測(cè)物體邊界和類別概率。相較其他目標(biāo)檢測(cè)算法如CNN,F(xiàn)ast-RCNN 等,YOLO 具有如下優(yōu)點(diǎn):速度快,基礎(chǔ)網(wǎng)絡(luò)只需45fps,fast 網(wǎng)絡(luò)模型可達(dá)150fps;mAP比其他實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)要高一倍;可以很好的避免背景錯(cuò)誤。
YOLOv5 的結(jié)構(gòu)基于Backbone 網(wǎng)絡(luò),Backbone 網(wǎng)絡(luò)負(fù)責(zé)從輸入圖像中提取特征,特征輸入到多個(gè)預(yù)測(cè)頭中,預(yù)測(cè)頭生成物體邊界和類別概率的預(yù)測(cè)。預(yù)測(cè)頭是使用錨框生成物體邊界和類別概率預(yù)測(cè)的完全連接層。Backbone 網(wǎng)絡(luò)可以是多種不同的預(yù)訓(xùn)練模型,不同的預(yù)訓(xùn)練模型有不同的特征提取能力和處理效率。
如圖3 所示,在神經(jīng)網(wǎng)絡(luò)中,ReLU 函數(shù)作為神經(jīng)元的激活函數(shù),為神經(jīng)元引入非線性因素。對(duì)于進(jìn)入神經(jīng)元的來自上一層神經(jīng)網(wǎng)絡(luò)的輸入向量x,使用ReLU函數(shù)的神經(jīng)元會(huì)輸出至下一層神經(jīng)元。
圖3: ReLU 激活函數(shù)作用
Neck 網(wǎng)絡(luò)用于從檢測(cè)器的檢測(cè)特征圖中提取全局特征的模塊,以幫助檢測(cè)器更好地定位物體的位置。在YOLOv5 中,Neck 網(wǎng)絡(luò)的實(shí)現(xiàn)方法包括殘差網(wǎng)絡(luò)、普通卷積和 FPN(Feature Pyramid Network)。具有從特征圖中提取全局特征并將其傳遞到后面的分類器的目的。
Head 網(wǎng)絡(luò)是整個(gè)模型的分類器部分,負(fù)責(zé)對(duì)檢測(cè)到的物體進(jìn)行識(shí)別并預(yù)測(cè)其位置,通常位于Neck 網(wǎng)絡(luò)之后,將Neck 網(wǎng)絡(luò)提取的全局特征作為輸入。在Head網(wǎng)絡(luò)中,卷積和全連接層會(huì)對(duì)輸入的特征進(jìn)行處理,并預(yù)測(cè)每個(gè)物體的類別以及其在圖像中的位置。這使得YOLOv5 可以在實(shí)時(shí)場(chǎng)景中獲得較高的檢測(cè)速度,并對(duì)檢測(cè)到的物體進(jìn)行精確的識(shí)別。如圖4 所示。
圖4: YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)[9]
本文使用Distracted-Driver 數(shù)據(jù)集中駕駛員圖片。為了使訓(xùn)練出的模型更準(zhǔn)確,通過翻轉(zhuǎn)縮放、運(yùn)動(dòng)模糊、亮度調(diào)整等方法對(duì)數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng),以適應(yīng)具體行車過程中可能出現(xiàn)的路面顛簸,光線變化的情況。最終得到的數(shù)據(jù)集共有圖片8679 張。
數(shù)據(jù)集圖片中的標(biāo)簽被分為五類行為狀態(tài):“正?!保╪ormal)、“閉眼”(closeeyes)、“打哈欠”(yawn)、“打電話”(calling)、“注意力不集中”(distraction),如圖5 所示。
圖5: 駕駛員行為分類
使用Labelimg 工具對(duì)數(shù)據(jù)進(jìn)行處理,為數(shù)據(jù)集打上VOC 格式標(biāo)簽,如圖6 所示。
圖6: 數(shù)據(jù)集標(biāo)注示例
本文采用yolo 格式進(jìn)行訓(xùn)練。訓(xùn)練前將VOC(xml格式)轉(zhuǎn)換為yolo(txt 格式),并以8:2 劃分訓(xùn)練集(6830張)和測(cè)試集(1849 張)。將訓(xùn)練集和測(cè)試集的數(shù)據(jù)圖片以及其對(duì)應(yīng)標(biāo)簽的文件名分別寫入yolov5_train.txt 和yolov5_val.txt 文件中,以便后期訓(xùn)練向網(wǎng)絡(luò)中注入圖片時(shí)使用。
實(shí)驗(yàn)訓(xùn)練模型通過在服務(wù)器端上部署訓(xùn)練,其所采用的云服務(wù)器配置如表1 所示。
表1: 云服務(wù)器配置
在目標(biāo)檢測(cè)中,均值平均精度(Mean average precision,MAP)、精確率(Precision)、召回率(Recall)是評(píng)估訓(xùn)練模型性能和可靠性的常用指標(biāo)。其中,mAP@0.5 代 表IOU 閾 值 取0.5 時(shí) 對(duì) 應(yīng) 的mAP 值。正類正樣本(True Positive,TP)、正類負(fù)樣本(True Ne gative,TN)、負(fù)類正樣本(False Positive,F(xiàn)P)和負(fù)類負(fù)樣本(False Negative,F(xiàn)N)用來計(jì)算精度。平均精度(AP)代表某個(gè)類別P-R 曲線下的面積。具體計(jì)算見公式(1)(2)(3)(4)。
采用yolov5m.pt 作為預(yù)訓(xùn)練權(quán)重,調(diào)整epochs 的參數(shù)為300,最優(yōu)權(quán)重epoch 為136 輪,mAP 值達(dá)到97.84%,精確率為96.15%,召回率為95.47%,達(dá)到較好效果,各項(xiàng)評(píng)價(jià)指標(biāo)具體情況如圖7、圖8 所示。
圖7: mAP 圖
圖8: 精確率和召回率
用訓(xùn)練后產(chǎn)生的最優(yōu)權(quán)重文件best.pt 來做測(cè)試,對(duì)150 張圖片及一個(gè)時(shí)長(zhǎng)為2 分33 秒的視頻進(jìn)行測(cè)試,檢測(cè)前后對(duì)比以及檢測(cè)時(shí)間如圖9、10、11 所示。單張圖像預(yù)測(cè)速度最高為26 毫秒,最低僅15 毫秒,視頻檢測(cè)時(shí)間僅為8.517s,具有較高的檢測(cè)速度。
圖9: 單張圖片檢測(cè)時(shí)間(單位:s)
圖10: 視頻訓(xùn)練前后對(duì)比
圖11: 視頻檢測(cè)時(shí)間
為了更加直觀地展現(xiàn)檢測(cè)效果,本文從YOLOv5輸出結(jié)果中選取了5 張具有代表性的圖片,如圖12 所示,可以看出對(duì)于每一種駕駛員分心行為模型皆具有較高的置信度。
圖12: YOLOv5 輸出結(jié)果
為了驗(yàn)證模型性能,本文在相同的配置環(huán)境和數(shù)據(jù)集下分別用YOLOv3、YOLOv4、YOLOv5 算法進(jìn)行訓(xùn)練檢測(cè)并將數(shù)據(jù)結(jié)果進(jìn)行對(duì)比,綜合分析準(zhǔn)確率、檢測(cè)速度等指標(biāo),認(rèn)為YOLOv5_m 性能最佳,最終確定使用YOLOv5_m 目標(biāo)檢測(cè)算法。多個(gè)算法的對(duì)比結(jié)果如表2 所示。
表2: 不同版本目標(biāo)檢測(cè)算法實(shí)驗(yàn)結(jié)果對(duì)比表
針對(duì)情況復(fù)雜的駕駛員分心行為,本文有效地將深度學(xué)習(xí)YOLOv5 改進(jìn)算法應(yīng)用于駕駛過程中,并對(duì)算法結(jié)構(gòu)和代碼進(jìn)行了針對(duì)駕駛員圖像特點(diǎn)的適應(yīng)性改進(jìn),使之更專精駕駛識(shí)別。考慮到實(shí)際應(yīng)用場(chǎng)景中環(huán)境的復(fù)雜性,本文采用MQ-3 氣體傳感器進(jìn)行酒精檢測(cè)和其他元件實(shí)現(xiàn)酒駕警示功能。本系統(tǒng)有望搭載于有長(zhǎng)途駕駛需求的商用以及民用車輛上,為長(zhǎng)途貨車,客車等車輛提供成本低廉,安全可靠的行車輔助系統(tǒng)。