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