李剛 王銀燁 張政儒 許艷亭 丁茹伊
摘 要:駕駛疲勞是造成交通事故的主要誘因之一。由世界衛(wèi)生組織發(fā)布的調(diào)查研究結(jié)果表明,在高速公路中由疲勞駕駛引起的交通事故率占了將近百分之四十,駕駛疲勞檢測和預警的技術也越來越受到研究人員的重視。而駕駛員打哈欠是疲勞形成過程中的一個直觀指標,文章提出基于Python平臺開發(fā)一套在線檢測駕駛員打哈欠的系統(tǒng),方法簡單、指標穩(wěn)定可靠,具有實際應用價值。
關鍵詞:駕駛員;駕駛疲勞;打哈欠;人臉識別;Python
中圖分類號:U471 ?文獻標識碼:A? 文章編號:1671-7988(2020)03-137-03
引言
駕駛員在長時間的駕駛過程中,需長時間保持高度集中的注意力,隨時準備應付各種復雜的內(nèi)外部環(huán)境,易導致注意力不集中、判斷能力下降、警戒性水平降低,致使駕駛員難以維持最初的良好技術水平,出現(xiàn)動作遲誤或過早、操作停頓或修正不及時等不安全動作,由此引發(fā)重大的安全事故。例如,2018年1月14日,沈海高速(棲霞市境內(nèi))發(fā)生一起中型客車與大型牽引車追尾道路交通事故,造成8人死亡、6人受傷,調(diào)查認定駕駛?cè)松嫦悠隈{駛。據(jù)高速網(wǎng)2017年05月16日報道,2016年,京滬高速淮安段共發(fā)生交通事故787起,其中因駕駛疲勞導致的交通事故414起,占事故總量的52.6%。駕駛疲勞與許多重大交通事故有著顯著的因果關系,現(xiàn)已成為交通事故的主要誘因之一[1],給人民的生命、財產(chǎn)安全造成嚴重威脅。
高危車輛,包括客車、運輸車輛、集裝箱運輸車輛、重載貨車等,由于駕駛?cè)蝿諘r間長、駕駛員腦負荷重,更易在駕駛途中產(chǎn)生疲勞,也就更容易導致交通事故的發(fā)生。由沃爾沃主導的一項對中國交通事故中的重卡駕駛員的調(diào)查數(shù)據(jù)顯示,疲勞駕駛引發(fā)事故的比例高達73%[2]。所以對高危車輛的駕駛疲勞檢測尤為重要,建立駕駛疲勞實時檢測系統(tǒng)具有重要的社會意義和經(jīng)濟效益。
打哈欠是疲勞檢測的一個重要指標[3],駕駛員打哈欠意味著大腦已進入疲勞狀態(tài)。據(jù)報道,西安市公交總公司道路安全委員會出臺政策規(guī)定,公交駕駛員在運營過程中連續(xù)打哈欠3次將被批評教育,以遏制因駕駛員精力不集中而造成的各類交通事故。針對打哈欠的檢測,研究人員做了許多研究,例如,童兵亮利用嘴唇特征點定位得到的嘴部幾何特征值,然后利用BP神經(jīng)網(wǎng)絡對駕駛員嘴部狀態(tài)進行識別,識別準確率高達96.2%[3];張偉偉等人利用深度卷積網(wǎng)絡和在線學習跟蹤算法檢測駕駛員打哈欠,識別準確率高達93.7%[4]。本文提出基于Python開發(fā)平臺,利用人臉識別技術定位嘴部坐標,通過實時計算嘴部高寬比判斷嘴部狀態(tài),然后進行打哈欠實時檢測。
1 系統(tǒng)框架
1.1 Python庫的調(diào)用
(1)cv2模塊的調(diào)用,cv2模塊是圖像處理的一個模塊,本系統(tǒng)中主要用于攝像頭調(diào)用、圖像的采集與讀取、圖像的灰度處理等。
(2)dlib庫的調(diào)用,dlib庫是整個打哈欠檢測系統(tǒng)最為關鍵的庫文件,能夠提供各種機器學習算法和擁有大量的圖像處理功能,本文主要用于人臉檢測與識別、嘴部坐標確定等。
(3)Numpy庫的調(diào)用,主要用于數(shù)組操作與運算,如嘴部狀態(tài)特征參數(shù)的實時存儲、特征值的計算、數(shù)組數(shù)據(jù)的提取與刪除等。
(4)math庫的調(diào)用,主要用于實現(xiàn)基本的數(shù)學運算功能,包括基本的加減運算、嘴部尺寸計算、嘴部高寬比的計算等。
(5)Winsound庫的調(diào)用,主要用于系統(tǒng)揚聲器的調(diào)用與設置,判斷打哈欠后對疲勞進行預警。
2 打哈欠指標
通過攝像頭實時采集人臉視頻,經(jīng)過人臉識別算法獲得如圖1所示的人臉68點圖,獲取68點圖的二維坐標。眾所周知,人嘴部正常閉合時,上下嘴唇之間的高度為h(63-67)=0、左右嘴角之間的寬度w(61-65)為一定值,當開始說話時h(63-67)變大、w(61-65)減小,深度疲勞打哈欠時h(63-67)最大、w(61-65)最小。因此,打哈欠指標可定義為:R=h(63-67)/w(61-65)。
3 系統(tǒng)流程
整體系統(tǒng)設計采用四個部分,這五個部分分工明確,互相結(jié)合:
第一步,定位人臉68點位置。通過import導入所需的庫或模塊,cv2.VideoCapture ( )調(diào)用內(nèi)部或外接攝像頭,通過cv2.cvtColor ( )對人臉圖像進行灰度處理,通過dlib.get_ frontal_face_detector( )進行人臉檢測,通過dlib.shape_predic tor ( )進行人臉68點進行定位。
第二步,計算打哈欠檢測指標。通過def定義R的計算函數(shù),w(61-65)為點61與點65之間的寬度,h(63-67)為點63與點67之間的高度,通過hypot( )函數(shù)計算,由此可計算打哈欠指標R。
第三步,設定閾值,判斷是否存在打哈欠。R值隨著打哈欠而增大,通過設定閾值T,當R>T時判定為打哈欠。
第四步,設定打哈欠預警條件及方式。當連續(xù)有5個R值大于T時,系統(tǒng)報警,設定持續(xù)時間t=500 ms,報警音頻率f=1000Hz,通過winsound.Beep (f, t)實現(xiàn)系統(tǒng)報警。
4 結(jié)果與討論
圖2為采集的被試講話、嘴部動作、打哈欠時的散點圖,所有數(shù)據(jù)均為放大1000倍后的結(jié)果。如圖2(a)所示,圖中兩個峰為打哈欠時的R數(shù)據(jù),兩個峰的左側(cè)及中間為講話與嘴部動作,由圖可知,打哈欠時的R值明顯大于講話、嘴部動作時的數(shù)值。圖2(b)為將所有原始數(shù)據(jù)四次方后再放大1000倍的結(jié)果,由圖可見,通過處理后講話、嘴部動作的波峰已消失,只有打哈欠時的兩個峰存在,表面通過對原始數(shù)據(jù)進行四次方后可以提高數(shù)據(jù)的靈敏度,使打哈欠更易被識別。
5 結(jié)論
本文提出的基于Python的打哈欠檢測指標能有效反映嘴部狀態(tài),通過對R指標四次方能有效去除說話、嘴部小動作的峰值,使打哈欠指標更顯著。本文提出的駕駛員打哈欠實時檢測系統(tǒng)識別準確度高,具有實際應用價值。
參考文獻
[1]????? 李都厚,劉群,袁偉,劉浩學.疲勞駕駛與交通事故關系[J].交通運輸工程學報,2010,10(2): 104-109.
[2]????? 鄭培,宋正河,周一鳴.機動車駕駛員駕駛疲勞測評方法的研究狀況及發(fā)展趨勢[J].中國農(nóng)業(yè)大學學報,2001,6(6):101-105.
[3]????? 童兵亮.基于嘴部狀態(tài)的疲勞駕駛和精神分散狀態(tài)監(jiān)測方法研究 [D].吉林大學,2004.
[4]????? 張偉偉,糜澤陽,肖凌云,錢宇彬.基于深度卷積網(wǎng)絡和在線學習跟蹤的駕駛員打哈欠檢測[J].中國機械工程,2019, 30(08): 902-911.