歐陽(yáng)壯,朱天軍,文 浩
(1.廣東省肇慶市質(zhì)量計(jì)量監(jiān)督檢測(cè)所,廣東肇慶 526070;2.肇慶學(xué)院機(jī)械和汽車(chē)工程學(xué)院,廣東肇慶 526061)
據(jù)國(guó)家統(tǒng)計(jì)局官方數(shù)據(jù)公布,2021 年全國(guó)道路交通事故發(fā)生249 345 起,造成61 513 人死亡、245 143 人受傷,直接財(cái)產(chǎn)損失152.5億元,所以汽車(chē)駕駛安全問(wèn)題非常值得人們重視。其中,駕駛員的駕駛行為不規(guī)范成為汽車(chē)安全問(wèn)題的主要原因之一,尤其是駕駛疲勞和分心駕駛行為的問(wèn)題極為突出[1-9]。因此,利用深度學(xué)習(xí)技術(shù)手段研究駕駛員分心駕駛行為,做出一套可實(shí)時(shí)檢測(cè)駕駛員分心行為并發(fā)出預(yù)警信號(hào)的安全系統(tǒng)對(duì)交通安全的改善具有極大的現(xiàn)實(shí)意義。
近年來(lái),隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,基于深度學(xué)習(xí)的駕駛員分心駕駛行為預(yù)警系統(tǒng)也得到了廣泛關(guān)注。在國(guó)外,歐洲慕尼黑工業(yè)大學(xué)的研究人員進(jìn)行的一項(xiàng)研究提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的駕駛員分心檢測(cè),該檢測(cè)方案依賴(lài)于視覺(jué)線索,例如頭部方向和凝視方向[10]。華威大學(xué)的研究人員進(jìn)行的另一項(xiàng)研究使用卷積神經(jīng)網(wǎng)絡(luò)和長(zhǎng)短期記憶(LSTM)的組合來(lái)構(gòu)建可以實(shí)時(shí)運(yùn)行的駕駛員分心警告系統(tǒng)[11]。美國(guó)猶他大學(xué)的研究人員提出了一種基于視頻的系統(tǒng),用于基于LSTM 網(wǎng)絡(luò)的檢測(cè)駕駛員分心事件[12]。內(nèi)布拉斯加大學(xué)林肯分校的研究人員進(jìn)行的另一項(xiàng)研究使用基于深度學(xué)習(xí)的方法,根據(jù)面部表情檢測(cè)和分類(lèi)駕駛員分心[13]。
在國(guó)內(nèi),基于人體腦電波信號(hào)檢測(cè)方面,北京航空航天大學(xué)研究團(tuán)隊(duì)設(shè)計(jì)了一種基于EEG 信號(hào)的駕駛員分心行為預(yù)警系統(tǒng),通過(guò)EEG 頭戴式設(shè)備采集駕駛員的腦電波信號(hào),使用深度學(xué)習(xí)算法分析數(shù)據(jù)并實(shí)現(xiàn)分心狀態(tài)預(yù)測(cè)[14]。西南交通大學(xué)等研究者提出了一種基于深度學(xué)習(xí)的行為識(shí)別框架,該框架通過(guò)深度卷積神經(jīng)網(wǎng)絡(luò)提取駕駛員視頻資料的空間特點(diǎn),并使用Hadamard 矩陣將層級(jí)卷積特征轉(zhuǎn)換成低維向量。隨后,將該信息輸入到支持向量機(jī)(SVM)分類(lèi)器中,以分類(lèi)判斷駕駛員的分心駕駛行為[15]。
綜上所述,基于深度學(xué)習(xí)的駕駛員分心預(yù)警系統(tǒng)具有提高道路安全性的潛力。本研究以深度學(xué)習(xí)的駕駛行為預(yù)測(cè)模型為基礎(chǔ),以早期發(fā)現(xiàn)和預(yù)測(cè)駕駛員干擾行為,提升行車(chē)安全水平為目標(biāo)。本研究的主要內(nèi)容包括駕駛員疲勞檢測(cè)與駕駛員分心駕駛行為檢測(cè)。在疲勞檢測(cè)方面,利用Dlib 來(lái)進(jìn)行臉部關(guān)鍵位點(diǎn)的檢測(cè),對(duì)眼睛的開(kāi)閉區(qū)域和嘴唇開(kāi)合程度的大小進(jìn)行計(jì)算,從而對(duì)是否出現(xiàn)了閉眼動(dòng)作或打哈欠的行為進(jìn)行判斷,并利用Perclos模型來(lái)計(jì)算出相應(yīng)的疲勞程度。在分心駕駛行為檢測(cè)方面,采用卷積神經(jīng)網(wǎng)絡(luò)YOLOv5 來(lái)檢測(cè)駕駛員是否存在玩手機(jī)、抽煙、喝水等分心動(dòng)作。檢測(cè)完成后,通過(guò)程序邏輯對(duì)駕駛員分心駕駛行為發(fā)出預(yù)警,以規(guī)范駕駛員行為,達(dá)到安全駕駛的目的。試驗(yàn)結(jié)果表明:該算法在駕駛員疲勞和分心行為檢測(cè)上具有極高的準(zhǔn)確性,并在駕駛員規(guī)范駕駛行為上具有良好的應(yīng)用性。
分心駕駛行為指駕駛員在駕駛汽車(chē)行駛過(guò)程中因?yàn)楦鞣N原因,如接疲勞駕駛、接打電話、喝水、抽煙等分散其注意力,從而導(dǎo)致其無(wú)法集中注意力駕駛,增加了交通安全事故的風(fēng)險(xiǎn)。本研究提出的預(yù)警算法是運(yùn)用深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)算法,對(duì)駕駛員的面部、身體動(dòng)作等綜合信息進(jìn)行檢測(cè)、提取和分析,可以實(shí)現(xiàn)對(duì)駕駛員分心狀態(tài)的實(shí)時(shí)監(jiān)測(cè)和識(shí)別,從而在駕駛員分心狀態(tài)下發(fā)出警報(bào),提醒駕駛員要注意行車(chē)安全。該算法能夠有效地降低分心駕駛帶來(lái)的交通事故風(fēng)險(xiǎn),提高道路行車(chē)安全性。分心駕駛行為預(yù)警算法框架如圖1所示。
圖1 分心駕駛行為預(yù)警算法框架
如圖1 所示:在駕駛員分心駕駛行為預(yù)警的總體框架下,包括疲勞駕駛行為和分心駕駛行為兩個(gè)模塊。疲勞駕駛行為檢測(cè)模塊主要是針對(duì)于駕駛?cè)藛T打哈欠和眨眼兩個(gè)動(dòng)作進(jìn)行駕駛員疲勞程度檢測(cè)。分心駕駛行為檢測(cè)模塊,重點(diǎn)檢測(cè)喝水行為、抽煙行為、玩手機(jī)行為。從這3個(gè)動(dòng)作入手去檢測(cè)駕駛過(guò)程的分心駕駛行為。
在本算法中,主要通過(guò)對(duì)駕駛員的眼睛和嘴巴開(kāi)閉程度來(lái)評(píng)估駕駛員疲勞狀態(tài),它是通過(guò)獲得眼睛和嘴巴的關(guān)鍵點(diǎn)和形狀來(lái)實(shí)現(xiàn)的。本算法應(yīng)用中,Dlib 主要用于人臉檢測(cè)和人臉關(guān)鍵點(diǎn)檢測(cè),對(duì)眼睛的開(kāi)閉區(qū)域和嘴唇開(kāi)合程度的大小進(jìn)行計(jì)算,從而對(duì)是否出現(xiàn)了閉眼動(dòng)作或打哈欠的行為進(jìn)行判斷,并利用Perclos 模型來(lái)計(jì)算出相應(yīng)的疲勞程度[16-19]。
后期Dlib的訓(xùn)練過(guò)程涉及到以下步驟:
(1)數(shù)據(jù)采集:需要收集足夠數(shù)量的人臉數(shù)據(jù)集,包括分心駕駛行為和正常駕駛行為的圖像數(shù)據(jù)。這些數(shù)據(jù)應(yīng)該具有豐富的變化,例如不同角度、光照和表情等。
(2)數(shù)據(jù)先處理:采集到的人臉面部圖像進(jìn)行先處理,包含圖像加強(qiáng)、歸一化和裁剪等,以減少數(shù)據(jù)中的噪聲和冗余信息。
(3)特征提?。豪肈lib 提供的人臉檢測(cè)和人臉關(guān)鍵點(diǎn)檢測(cè)算法,提取出每個(gè)人臉圖像中的特征點(diǎn)集合,例如眼睛、嘴唇、眉毛等。
(4)數(shù)據(jù)標(biāo)注:針對(duì)采集到的每張圖像,標(biāo)注對(duì)應(yīng)的分心或正常駕駛行為標(biāo)簽,以供訓(xùn)練時(shí)進(jìn)行監(jiān)督學(xué)習(xí)。
(5)神經(jīng)網(wǎng)絡(luò)訓(xùn)練:基于Dlib提供的深度學(xué)習(xí)框架,構(gòu)建適合該任務(wù)的神經(jīng)網(wǎng)絡(luò)模型,并利用標(biāo)注好的數(shù)據(jù)集,對(duì)該模型進(jìn)行訓(xùn)練和優(yōu)化,以提升其分類(lèi)準(zhǔn)確率和泛化能力。
(6)神經(jīng)網(wǎng)絡(luò)測(cè)試:當(dāng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)達(dá)到一定準(zhǔn)確度之后,使用測(cè)試集進(jìn)行測(cè)試,評(píng)估其在未見(jiàn)過(guò)的數(shù)據(jù)上的分類(lèi)準(zhǔn)確率,來(lái)驗(yàn)證在未知數(shù)據(jù)上檢測(cè)模型的泛化能力。
(7)系統(tǒng)部署:當(dāng)訓(xùn)練好的模型經(jīng)過(guò)評(píng)估驗(yàn)證后,將其部署到實(shí)際系統(tǒng)中,以實(shí)現(xiàn)分心駕駛的預(yù)警功能。Dlib 主要用于人臉檢測(cè)和關(guān)鍵點(diǎn)檢測(cè),并配合深度學(xué)習(xí)進(jìn)行分類(lèi)任務(wù)的訓(xùn)練和預(yù)測(cè),在完成數(shù)據(jù)預(yù)處理、特征提取、數(shù)據(jù)標(biāo)注等一系列前置工作后,利用Dlib進(jìn)行監(jiān)督學(xué)習(xí)訓(xùn)練,構(gòu)造一個(gè)針對(duì)駕駛疲勞程度的檢測(cè)應(yīng)用模型。
YOLOv5 是一種用于目標(biāo)識(shí)別和定位的卷積神經(jīng)網(wǎng)絡(luò)(CNN),它結(jié)合了CNN、Transfer Learning 以及深度強(qiáng)化學(xué)習(xí)等多種技術(shù),使得它能夠處理圖像中不同大小和不同種類(lèi)的對(duì)象[20]。本算法采用卷積神經(jīng)網(wǎng)絡(luò)YOLOv5來(lái)檢測(cè)駕駛員是否存在玩手機(jī)、抽煙、喝水等分心動(dòng)作。
YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)可以分為4個(gè)部分。
(1)輸入端:在目標(biāo)檢測(cè)算法中,錨框(Anchor Box)是一種用于定義檢測(cè)框(Detection Box)位置和大小的參數(shù)。為了適應(yīng)不同的圖片大小,YOLOv5 實(shí)現(xiàn)了自適應(yīng)圖片縮放的功能,能夠在不改變檢測(cè)結(jié)果的情況下自動(dòng)調(diào)整輸入圖片的尺寸。這個(gè)功能也可以在代碼中進(jìn)行控制,通過(guò)修改train.py 中的相應(yīng)參數(shù)來(lái)開(kāi)啟或關(guān)閉。
(2)Backbone 架構(gòu):在YOLOv5 中,圖片輸入到Backbone 架構(gòu)前的一個(gè)處理模塊稱(chēng)為Focus 模塊[21]。每隔著一個(gè)特征點(diǎn)處截取一個(gè)像素點(diǎn),可以得到4 張互補(bǔ)相似的圖像,將這4 張圖片進(jìn)行拼接,就形成了一個(gè)新的特征圖。
(3)Neck結(jié)構(gòu):YOLOv5現(xiàn)在的Neck采用FPN+PAN的結(jié)構(gòu)[22]。
(4)輸出端:YOLOv5 的輸出端是一個(gè)三層級(jí)聯(lián)的檢測(cè)頭(Detection Head),它可以同時(shí)預(yù)測(cè)位于不同特征圖層級(jí)上的多個(gè)物體。檢測(cè)頭的輸出由包含物體的錨框(Anchor)進(jìn)行解碼[23]。
每個(gè)錨框會(huì)和真實(shí)物體之間進(jìn)行匹配得分,表示錨框和真實(shí)物體之間的相似程度,用于篩選出最適合的錨框。錨框和真實(shí)物體的匹配度所得分?jǐn)?shù)分別為86.49、84.0、69.7,如圖2所示。
圖2 錨框和真實(shí)物體的匹配度得分
駕駛員分心駕駛行為檢測(cè)過(guò)程如下。
(1)數(shù)據(jù)準(zhǔn)備
首先需要根據(jù)監(jiān)測(cè)任務(wù)確定數(shù)據(jù)來(lái)源和數(shù)據(jù)類(lèi)型,并進(jìn)行數(shù)據(jù)的收集和預(yù)處理,例如針對(duì)視頻監(jiān)測(cè)任務(wù),可以使用攝像頭捕獲圖像或視頻,使用圖像處理技術(shù)進(jìn)行預(yù)處理,例如裁剪、縮放、色彩空間轉(zhuǎn)換等;同時(shí)需要標(biāo)注或分類(lèi)數(shù)據(jù)集,例如標(biāo)記出圖像中是否出現(xiàn)了分心物體或者駕駛員是否閉眼等行為。
(2)根據(jù)任務(wù)特點(diǎn),可以選擇CNN 或者Transformer等深度學(xué)習(xí)模型進(jìn)行建模。以視頻監(jiān)測(cè)為例,常用的CNN 模型包括VGG、Inception、ResNet 等,可以使用其中的預(yù)訓(xùn)練模型或者自行訓(xùn)練模型。為了提高模型的準(zhǔn)確性,要將這些數(shù)據(jù)分成不同的類(lèi)別,如80%用于訓(xùn)練,20%用于檢驗(yàn)。此外還需要進(jìn)行數(shù)據(jù)增強(qiáng),例如隨機(jī)裁剪、翻轉(zhuǎn)、旋轉(zhuǎn)等操作,從而增加數(shù)據(jù)集的多樣性,減少模型的過(guò)擬合現(xiàn)象。
(3)預(yù)測(cè)與報(bào)警
完成模型的訓(xùn)練和驗(yàn)證之后,就可以將模型應(yīng)用到實(shí)際監(jiān)測(cè)場(chǎng)景中。在應(yīng)用過(guò)程中,可通過(guò)Dlib 等庫(kù)進(jìn)行人臉檢測(cè)和關(guān)鍵點(diǎn)定位,對(duì)每一幀進(jìn)行數(shù)據(jù)處理、預(yù)測(cè)和報(bào)警。比如,對(duì)于視線監(jiān)測(cè),可以使用訓(xùn)練好的CNN模型,輸入攝像頭采集到的圖像,輸出眼睛狀態(tài)(是否閉眼)的概率或者是否存在喝水、使用手機(jī)等分心行為。然后根據(jù)設(shè)定的閾值判斷當(dāng)前駕駛員是否存在分心行為,如果存在,就及時(shí)發(fā)出警報(bào),提醒駕駛員注意。
(4)多尺度融合
多尺度融合是對(duì)特征金字塔方法的補(bǔ)充,由于特征金字塔方法在多尺度下依然存在分辨率不高的問(wèn)題,因此引入多尺度融合模塊進(jìn)行進(jìn)一步的特征處理。多尺度融合模塊可以在檢測(cè)層和分類(lèi)層之間設(shè)計(jì),引入不同層次的特征,并提高分辨率,例如可以使用FPN 或者PANet中的lateralconnections和top-downpathways等結(jié)構(gòu)實(shí)現(xiàn)。
根據(jù)前期檢測(cè)到的人臉坐標(biāo)和大小,在面部?jī)蓚?cè)和下方區(qū)域進(jìn)行切割,作為手持電話行為的檢測(cè)區(qū)域,再進(jìn)行特征提取和行為分類(lèi)檢測(cè)圖。檢測(cè)區(qū)域是指用來(lái)判別司機(jī)手持電話的影像區(qū)域。這個(gè)時(shí)候駕駛?cè)藛T注意力集中在手機(jī)上,對(duì)駕駛的專(zhuān)注度有很大的影響,此時(shí)為認(rèn)定駕駛分心行為的關(guān)鍵場(chǎng)景之一。
手持手機(jī)的檢測(cè)區(qū)域如圖3 所示,本算法不僅可以實(shí)時(shí)檢測(cè)駕駛員疲勞情況,如當(dāng)前駕駛員是否清醒,眨眼次數(shù)和哈欠次數(shù)等信息,而且可以準(zhǔn)確捕捉到駕駛員使用手機(jī)的分心行為,并實(shí)時(shí)警告駕駛員分心行為信息。
圖3 使用手機(jī)行為檢測(cè)
按照前期檢測(cè)到的人臉坐標(biāo)位置點(diǎn)和尺寸大小,喝水行為待測(cè)區(qū)精確定位為人臉面部的左右側(cè)部區(qū)域,將左右區(qū)域圖像定位喝水行為待測(cè)區(qū)域,提取待測(cè)區(qū)域特征信息進(jìn)行行為判別。
喝水的水杯手勢(shì)區(qū)域主要會(huì)與嘴的左右下角進(jìn)行重合,會(huì)遮住嘴巴的顯示,只是嘴型有程序模擬生成,此時(shí)主要面向喝水動(dòng)作識(shí)別,遮住嘴巴為檢測(cè)允許的環(huán)境,喝水行為特征圖像生成如圖4 所示。當(dāng)前駕駛員處于清醒狀態(tài),并顯示眨眼次數(shù)和哈欠次數(shù)等信息,而且可以準(zhǔn)確捕捉到駕駛員駕駛過(guò)程中喝水(drink)分心行為時(shí),則實(shí)時(shí)警告駕駛員分心行為信息。
圖4 用保溫杯喝水行為檢測(cè)
吸煙動(dòng)作也是駕駛員分心動(dòng)作之一,由于抽煙過(guò)程需要呼吸換氧氣,抽煙過(guò)程手持香煙是不可避免的,一般抽煙時(shí)駕駛員會(huì)分出一只手來(lái)手持香煙,這樣對(duì)于車(chē)況的掌握控制相當(dāng)于少了一只手臂。
經(jīng)此可以認(rèn)定監(jiān)測(cè)過(guò)程中通過(guò)攝像頭檢測(cè)待測(cè)區(qū)域時(shí),該待測(cè)區(qū)域一般會(huì)位于人臉面部區(qū)域位置的左右兩端。檢測(cè)結(jié)果如圖5~6 所示。圖5 識(shí)別結(jié)果顯示,駕駛員處于清醒狀態(tài),同時(shí)可以準(zhǔn)確捕捉到駕駛員用手普通抽煙動(dòng)作的分心行為,并實(shí)時(shí)警告駕駛員分心行為信息。圖6 識(shí)別結(jié)果顯示,駕駛員已經(jīng)處于疲勞狀態(tài),同時(shí)也準(zhǔn)確捕捉到駕駛員嘴叼式抽煙動(dòng)作的分心行為,系統(tǒng)實(shí)時(shí)警告駕駛員分心行為信息。
圖6 嘴刁式抽煙動(dòng)作檢測(cè)
為了驗(yàn)證本算法的全面性和抗干擾性,進(jìn)行一種分心駕駛行為綜合檢測(cè)試驗(yàn),即進(jìn)行檢測(cè)手機(jī)、抽煙、喝水、眨眼、打哈欠嘴形等多元的綜合檢測(cè)試驗(yàn),以驗(yàn)證檢測(cè)模型的全面性以及檢測(cè)過(guò)程中各個(gè)檢測(cè)模塊各不干擾。檢測(cè)結(jié)果如圖7 所示,結(jié)果表明本算法可以綜合識(shí)別出駕駛員當(dāng)前處于清醒狀態(tài),并存在使用手機(jī)、抽煙和喝水多元分心駕駛行為,同時(shí)能夠在系統(tǒng)里實(shí)時(shí)警示駕駛員當(dāng)前存在分心駕駛。綜合檢測(cè)試驗(yàn)證明,本算法可以實(shí)時(shí)全面監(jiān)控駕駛員疲勞狀態(tài)和分心駕駛行為,準(zhǔn)確性較高,抗干擾性強(qiáng)。
圖7 綜合檢測(cè)
本文設(shè)計(jì)了一種基于深度學(xué)習(xí)的駕駛員分心駕駛行為預(yù)警系統(tǒng),結(jié)合了疲勞檢測(cè)和分心行為檢測(cè)2種方法,實(shí)現(xiàn)了對(duì)駕駛員專(zhuān)注度全方位監(jiān)控。
(1)采用YOLOv5 進(jìn)行駕駛員分心行為檢測(cè),能夠很好地檢測(cè)駕駛員是否在玩手機(jī)、吸煙或者喝水等分心行為,從而實(shí)現(xiàn)對(duì)駕駛員專(zhuān)注性的全面監(jiān)測(cè)。
(2)采用Dlib 和Perclos 模型是比較成熟和準(zhǔn)確的技術(shù)手段,能夠很好地實(shí)現(xiàn)駕駛員疲勞檢測(cè)。
(3)該算法結(jié)合了駕駛員疲勞程度檢測(cè)和分心行為檢測(cè)2 個(gè)模塊,能夠?qū)崿F(xiàn)全方位的駕駛員專(zhuān)注性監(jiān)測(cè)。通過(guò)發(fā)出預(yù)警來(lái)規(guī)范駕駛員行為,從而保障交通行車(chē)的安全。該研究可以為汽車(chē)主動(dòng)安全性的普及提供技術(shù)支持,有效提升汽車(chē)的行駛安全性。