蔡姍姍,郭寒英
(西華大學(xué),四川 成都 610039)
汽車在人們生活場景中扮演著不可或缺的角色,然而頻繁發(fā)生的交通事故對駕駛員和行人的安全造成了巨大威脅。隨著交通強國戰(zhàn)略的落地實施,交通安全已然成為我國的重要研究課題。疲勞駕駛定義尚不明確,但多指駕駛員在長時間連續(xù)駕駛后,產(chǎn)生生理、心理機能失調(diào)而使得駕駛員處于危險駕駛狀況的現(xiàn)象,疲勞駕駛和酒后駕車、超速駕駛一樣,是引發(fā)道路交通事故的主要原因。道路上的危機是緊急但可預(yù)防的,因此預(yù)防駕駛疲勞對于確保道路交通安全至關(guān)重要,同時也是自動駕駛相關(guān)研究面對的關(guān)鍵挑戰(zhàn)。
疲勞檢測是許多重要應(yīng)用的需求,近年來研究人員對實現(xiàn)可靠的檢測做了一系列深入研究。目前針對駕駛疲勞的檢測方法主要分為以下四大類。
(1)基于機動車行為特征的檢測方法:這種方法主要是借助汽車轉(zhuǎn)向和輪胎軌跡來進行判斷,李偉等[1]將駕駛員模擬駕駛試驗時的方向盤數(shù)據(jù)和道路偏移值數(shù)據(jù)作為試驗數(shù)據(jù)集,利用BP算法對神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練,從而判斷駕駛員是否存在疲勞駕駛的情況。這種方法檢測準(zhǔn)確率較高,但是容易受到外部自然環(huán)境、駕駛員自身水平等因素的影響。
(2)基于駕駛員生理特征的檢測方法:駕駛員生理特征包括心電信號、心率、腦電信號等[2],馬世偉等[3]通過分析被試者的腦電信號數(shù)據(jù)加上問卷調(diào)查相結(jié)合的方式,降低了個人因素的影響,得到了應(yīng)用腦電檢測技術(shù)能夠客觀地判定駕駛員的疲勞狀態(tài)的結(jié)論,在當(dāng)前研究領(lǐng)域內(nèi)是檢測駕駛員疲勞狀態(tài)的黃金方法,但實際操作時需要借助昂貴的設(shè)備且某些與身體直接接觸的傳感器往往侵入性太強,縱然精度很高卻并不建議使用。
(3)生物化學(xué)測試方法是通過檢測駕駛員的體液來進行疲勞判定,這種方法只能用于事故后檢測,可能對駕駛員造成創(chuàng)傷并產(chǎn)生抵觸心理。
(4)目前許多學(xué)者轉(zhuǎn)向基于面部表情和圖像處理技術(shù)檢測的方法,這種方法將各種駕駛員圖像數(shù)據(jù)用于試驗研究,大部分研究使用駕駛員的面部數(shù)據(jù),試驗成本低,對駕駛員的干擾程度低。胡習(xí)之等[4]提取實車數(shù)據(jù)集的駕駛員面部特征參數(shù),再用優(yōu)化SSD算法和連續(xù)自適應(yīng)均值漂移跟蹤算法來檢測人臉區(qū)域,優(yōu)化后人臉特征提取算法能有效反映駕駛員的疲勞狀態(tài),魯棒性強。
隨著計算機技術(shù)和圖像數(shù)據(jù)采集技術(shù)的快速發(fā)展,基于面部表情識別的駕駛疲勞研究成為當(dāng)前的主要研究趨勢。基于這類方法的試驗數(shù)據(jù)通常是用攝像機采集或者直接使用已經(jīng)發(fā)布的開源駕駛數(shù)據(jù),當(dāng)駕駛員產(chǎn)生疲勞現(xiàn)象時可以從面部觀察到許多明顯的區(qū)別,比如頻繁點頭、打哈欠、眨眼甚至較小程度的閉眼[5]。打哈欠是判定駕駛員疲勞或困倦的重要指標(biāo),當(dāng)一個人打哈欠時嘴巴張開持續(xù)時間較長,且其動作明顯,較其他面部表情更容易識別,因此將從行駛時打哈欠這一面部表情入手進行駕駛員的疲勞研究。
當(dāng)前各個平臺上所發(fā)布的開源數(shù)據(jù)集種類豐富,加之實車試驗較難開展,綜合考慮之后采用阿布塔希等研究整理的YawDD開源數(shù)據(jù)集[6]進行關(guān)于哈欠的疲勞研究試驗,此數(shù)據(jù)集中的所有視頻都是由安裝在前視鏡或儀表盤上的攝像頭在車內(nèi)拍攝的,分類標(biāo)準(zhǔn)十分規(guī)范,在目前的研究領(lǐng)域得到了較為廣泛的采用。
YawDD包含具有多個駕駛員面部特征的兩個視頻合集,視頻的分辨率為640×480,幀率為30 fps。第二個數(shù)據(jù)集錄制了不同種族的男性司機16個、女性司機13個的29個視頻,包含正常駕駛、駕駛時說話或打哈欠。數(shù)據(jù)預(yù)處理部分首先將其按幀率提取成照片文件,由于同一個視頻里面包含大量內(nèi)容非常接近的幀,若將每一幀圖片用作訓(xùn)練集或驗證集,會大大增加圖片標(biāo)注的工作量而且不利于模型的學(xué)習(xí),為了減少冗余和訓(xùn)練時間,對每個視頻所產(chǎn)生的圖片進行了抽樣,共得圖片文件5 580個,模型訓(xùn)練結(jié)束后選取YawDD第一個數(shù)據(jù)集中的視頻直接測試或處理為圖片后作為測試集。
首先使用腳本將所有圖片以“000001.jpg”為例的方式重命名,然后采用圖像標(biāo)注軟件LabelImg對圖片進行標(biāo)注[7],標(biāo)注時將目標(biāo)圖像全部框住,標(biāo)簽為打哈欠和正常兩種,標(biāo)注時盡可能做到同一標(biāo)準(zhǔn)。
標(biāo)注后每張圖片都包含一個人工標(biāo)注的標(biāo)簽,打哈欠標(biāo)記為1,反之為0,為防止模型訓(xùn)練時回溯不夠直觀,標(biāo)注時保存格式為txt格式,后續(xù)放入模型的文件轉(zhuǎn)換為xml格式,文件保存了目標(biāo)的坐標(biāo)位置信息。將數(shù)據(jù)集里的圖片模仿VOC2007數(shù)據(jù)集格式保存并按比例劃分訓(xùn)練集和驗證集,樣本比例如表1所示。

表1 樣本比例
為了檢測駕駛員的哈欠情況,大多數(shù)研究方法是先集中在面部區(qū)域識別,再利用眼睛、鼻子的定位根據(jù)人臉的幾何特征確定嘴部位置。然后通過使用多個卷積網(wǎng)絡(luò)結(jié)構(gòu)來判定,這種方法不僅復(fù)雜度很高,并且依賴于精確的面部檢測。
車內(nèi)復(fù)雜多變的駕駛員人臉位置和光照條件使得實時準(zhǔn)確地檢測出哈欠行為仍是一項很具有挑戰(zhàn)性的任務(wù)。YOLOv5模型是當(dāng)前目標(biāo)檢測領(lǐng)域具有代表性的單階段目標(biāo)檢測算法,該算法以新的理念補充了YOLOv4模型,使其在速度與精度方面得到了很大提升。利用單一的網(wǎng)絡(luò)體系結(jié)構(gòu)YOLOv5網(wǎng)絡(luò)模型直接對駕駛員面部進行檢測來分析駕駛員的哈欠情況,可為實時疲勞預(yù)警相關(guān)研究提供參考。
目標(biāo)檢測是要找出圖像中感興趣的目標(biāo)并確定其在圖像上的位置和類別。2016年Joseph Redmon率先提出了YOLO系列模型,與其他網(wǎng)絡(luò)同等尺寸下的模型相比性能更強,從YOLOv1到Y(jié)OLOv5的發(fā)展可以看出YOLO后期沒有提出更為新穎的想法,而是更重視應(yīng)用落地,目標(biāo)檢測領(lǐng)域的發(fā)展因它的出現(xiàn)受到了極大鼓舞。除以YOLO系列算法為代表的單階段(one-stage)目標(biāo)檢測算法外,還有以RCNN系列算法為代表的兩階段(two-stage)以及多階段(muti-stage)的目標(biāo)檢測算法,該系列算法整個過程需要先經(jīng)過候選框生成網(wǎng)絡(luò)再經(jīng)過分類網(wǎng)絡(luò),故檢測精度相對較高但訓(xùn)練時間較長。
YOLO網(wǎng)絡(luò)模型由輸入端、Backbone(主干網(wǎng)絡(luò))、Neck網(wǎng)絡(luò)、Prediction(輸出端)四個通用模塊組成。為了滿足不同場景的應(yīng)用需求,按照網(wǎng)絡(luò)深度和維度的不同可以將YOLOv5模型分為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四個版本,YOLOv5算法相較于YOLOv4的提升主要體現(xiàn)在以下幾個方面。
首先,在圖像輸入端對圖像文件進行了馬賽克數(shù)據(jù)增強操作,該方法可根據(jù)輸入圖像的尺寸大小進行自適應(yīng)填充。其次,為了使網(wǎng)絡(luò)在進行下采樣的時候不丟失樣本的特征信息,設(shè)計了位于網(wǎng)絡(luò)最前端的對輸入數(shù)據(jù)進行切片操作Focus結(jié)構(gòu),同時降低了模型的計算復(fù)雜度,以加快模型訓(xùn)練速度。最后,YOLOv5將CSP結(jié)構(gòu)用于Backbone層和Neck網(wǎng)絡(luò)層,增強了網(wǎng)絡(luò)對特征的融合能力,模型的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

圖1 YOLOv5s模型的網(wǎng)絡(luò)結(jié)構(gòu)圖
在YOLOv5系列模型中,隨著網(wǎng)絡(luò)不斷加深加寬,YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x檢測精度逐步增高。YOLOv5s網(wǎng)絡(luò)是深度最小、特征圖寬度最小的網(wǎng)絡(luò)模型,較其余三種模型而言具有更快的訓(xùn)練速度與檢測速度。因此,基于對試驗配置和檢測速度的考慮選擇模型大小僅有27MB的YOLOv5s網(wǎng)絡(luò)進行研究。將圖片數(shù)據(jù)集作為原始圖像輸入網(wǎng)絡(luò),通過損失計算預(yù)測物體的類別和位置信息,從而將復(fù)雜的目標(biāo)檢測問題轉(zhuǎn)化為常見的回歸問題得到模型訓(xùn)練結(jié)果。
試驗平臺是64位Windows11系統(tǒng),處理器為12th Gen Intel(R)Core(TM)i7-12700F,顯卡為NVIDIA GeForce RTX 3060Ti,深度學(xué)習(xí)環(huán)境采用PyTorch搭建,IDE工具采用Pycharm,開發(fā)環(huán)境為PyTorch1.11.0及Python3.9,將經(jīng)過處理的數(shù)據(jù)集劃分為訓(xùn)練集和驗證集,占比為80%和20%,算法文件夾命名為YOLOv5-5.0。YOLOv5s.pt作為預(yù)訓(xùn)練權(quán)重加載到網(wǎng)絡(luò)體系結(jié)構(gòu)中,Batch size表示每次輸入的樣本數(shù)量,設(shè)為16,算法迭代次數(shù)設(shè)置為1 500次,初始學(xué)習(xí)率為0.01,動量和預(yù)設(shè)權(quán)重衰減系數(shù)分別設(shè)為0.937和0.000 5。試驗參數(shù)如表2所示。

表2 試驗參數(shù)配置表
將人工標(biāo)注的5 580張圖片數(shù)據(jù)集傳入模型并修改相關(guān)數(shù)據(jù)配置文件,在上述試驗環(huán)境下對圖像數(shù)據(jù)集進行迭代訓(xùn)練1 500次,圖中識別概率為保存兩位有效數(shù)字結(jié)果,訓(xùn)練結(jié)果具體數(shù)值保存在results文本文件中。
模型經(jīng)迭代訓(xùn)練結(jié)束得到最后一輪訓(xùn)練權(quán)重和最優(yōu)權(quán)重,為了驗證模型對哈欠的檢測能力,將最優(yōu)權(quán)重傳入推理函數(shù),從未經(jīng)訓(xùn)練的YawDD數(shù)據(jù)集中隨機提取8個視頻、78張圖片對模型效果進行測試。模型測試效果的檢測精度平均在90%以上。
測試過程中被試者打哈欠時嘴巴張合幅度較小抑或是說話會導(dǎo)致極少數(shù)誤檢的情況;還有一種可能是訓(xùn)練集正樣本比例較低的問題。總體而言模型的測試效果較好、較穩(wěn)定,也證明了所訓(xùn)練模型用于實時監(jiān)測駕駛員疲勞狀態(tài)的可行性。
從訓(xùn)練效果來看模型性能較好,本次試驗引入目標(biāo)檢測領(lǐng)域常用的評價指標(biāo)平均準(zhǔn)確率mAP(mean Average Precision)、精確率(Precision)、召回率(Recall)和F1分?jǐn)?shù)及每秒處理幀率(fps)來量化試驗結(jié)果。模型的精確率與召回率如圖2所示。

圖2 模型的精確率與召回率
(1)精確率:在進行訓(xùn)練時模型認(rèn)為正確也確實是正確的樣本占模型認(rèn)為正確的所有樣本的概率,通常來說,精確率越高,分類器越好,計算公式為
(1)
式中:TP實際上是正樣本,預(yù)測為正樣本-哈欠狀態(tài)被判定為打哈欠的次數(shù);FP實際上是負(fù)樣本,預(yù)測為正樣本-正常狀態(tài)被判定為打哈欠的次數(shù)。
(2)召回率:針對所有樣本而言模型認(rèn)為是正確且確實是正確的樣本占所有正確樣本的概率,用于衡量分類器找到所有正樣本的能力,即召回率越高模型準(zhǔn)確率越高,計算公式為
(2)
式中:FN實際上是正樣本,預(yù)測為負(fù)樣本-哈欠狀態(tài)被判定為正常狀態(tài)的次數(shù)。
(3)圖3所示PR曲線表征的是精確率與召回率的關(guān)系,一般橫坐標(biāo)設(shè)置為Recall,縱坐標(biāo)設(shè)置為Precision。圖4所示為模型的mAP,AP是PR曲線下圍成的面積,m表示平均,c表示類別,所有類別的AP平均值即mAP,AP越高說明模型性能越好。mAP@0.5表示在IoU閾值為0.5時的mAP值變化曲線,mAP@0.5∶0.95表示在IoU閾值以0.05步長從0.5到0.95變化時的mAP值變化曲線。這個參數(shù)適用于多標(biāo)簽圖像分類,計算公式為
(3)

圖3 PR曲線圖

圖4 mAP曲線圖
(4)
精度和召回率反映了分類器分類性能的兩個方面。通常都希望試驗的P、R雙高,但實際上它們是一個矛盾體,考慮兩者之間的平衡點得到新的評價指標(biāo)F1-score,也稱為綜合分類率,它能更好地反映模型檢測結(jié)果,其數(shù)值越高模型性能越好。
目標(biāo)檢測任務(wù)的損失函數(shù)分為邊界框回歸損失和分類損失,YOLOv5直接使用Classification Error作為分類損失,以CIoU Loss作為邊界框回歸的 損失函數(shù),損失函數(shù)值越低模型效果越好,如圖5所示。

圖5 驗證集的損失均值
結(jié)合results文本文件和訓(xùn)練過程曲線變化圖來看,隨著迭代次數(shù)的增長,精確率與召回率都在98%或以上,mAP數(shù)值高達(dá)0.99且波動不大,各項損失函數(shù)值低至0.002。觀察YOLOv5s模型算法的訓(xùn)練效果圖可知各項重要指標(biāo)的訓(xùn)練結(jié)果較好,說明試驗所提出的哈欠行為檢測模型性能良好,進一步體現(xiàn)了試驗所訓(xùn)練的YOLOv5s模型作為駕駛疲勞檢測模型的可靠性。
可靠的疲勞駕駛研究是保障交通安全的重要基礎(chǔ),試驗使用YOLOv5s網(wǎng)絡(luò)模型對公開的YawDD數(shù)據(jù)集進行哈欠檢測研究,模型訓(xùn)練集包含5 580張圖片,測試集包含8個視頻和78張圖片。當(dāng)?shù)?xùn)練次數(shù)不斷增加時,模型對“打哈欠”和“正常”的分類能力越來越強,訓(xùn)練和測試的準(zhǔn)確率分別達(dá)到98%和94%,表明經(jīng)過連續(xù)的訓(xùn)練過程后,模型在各方面表現(xiàn)出良好的性能。這種方法與其他現(xiàn)有研究相比更加簡潔易操作,具有一定的實際意義。
不足的是僅僅考慮了駕駛員佩戴或不佩戴眼鏡哈欠檢測情況,未結(jié)合駕駛員眼部情況進行綜合分析,且無法準(zhǔn)確區(qū)分出駕駛員說話打哈欠和大笑的情況。后續(xù)研究可以從以下幾個方面著手來提高試驗的可靠性:第一,考慮晴天、雨天和霧霾等不同天氣情況的檢測效果;第二,結(jié)合駕駛員眼動情況進行綜合研究;第三,增加正樣本數(shù)量并考慮檢測到駕駛員產(chǎn)生疲勞狀態(tài)時提醒駕駛員安全駕駛的實時干預(yù)方法。為此,下一步研究擬在哈欠檢測模型的基礎(chǔ)上,將視頻流作為輸入建立在線哈欠行為檢測系統(tǒng)。