吳榮燎 王澤群 吳凱利 李政霆
摘 要:隨著經(jīng)濟的發(fā)展,人們對安全問題越來越重視,尤其是駕車出行安全問題。本論文中設計了一種駕駛員狀態(tài)檢測的裝置,運用目前熱門的面部識別實時檢測駕駛員的精神狀態(tài),避免駕駛員的疲勞駕駛。該裝置基于OpenCV自帶的計算機視覺庫、Visual Studio 2015以及單片機來進行模擬,重點闡述了視頻圖像的灰度化的預操作,通過Haar特征訓練和face.xml進行人臉檢測和識別眼睛,自動判斷當前駕駛員是否處于疲勞駕駛。
關鍵詞:人臉檢測;疲勞駕駛;Haar特征訓練;自動判斷
目前,我國道路交通事故年死亡人數(shù)高居世界第二位。交通事故導致的人員死傷和財產(chǎn)損失數(shù)不勝數(shù),其中與疲勞有關的交通事故占事故總數(shù)的20%左右,占特大交通事故的40%以上人在疲勞駕駛時往往就是在高速公路,速度比平時的道路更快,只要精神稍微不集中,反應一遲鈍,就會發(fā)生重大交通事故。相對來講,那些長途客車和貨運車的司機因其工作原因必須長時間開車,如果沒有得到良好的休息就將引發(fā)交通事故,造成嚴重的人員傷亡和財產(chǎn)損失。司機往往意識不到自己已經(jīng)疲勞駕駛這就是疲勞駕駛最最危險的地方,所以在司機處于疲勞駕駛狀態(tài)得到一個提醒和警示顯得十分重要?;谏鲜銮闆r,設計了一種駕駛員狀態(tài)檢測的裝置,用于檢測駕駛員的疲勞情況,給予提醒,避免出現(xiàn)疲勞駕駛導致的交通事故。
1 系統(tǒng)框架設計
人眼檢測就是將視頻中的每一幀變成單獨的圖片進行操作,將攝像頭采集到人臉信息傳給電腦,電腦進行人臉檢測和人眼檢測,通過LBPH算法將人眼檢測結果傳給單片機,由單片機進行下一步操作,流程圖如圖1所示。
單單使用現(xiàn)成的人眼檢測算法會帶來很大的誤判率,先進行人臉檢測后再通過坐標的方式進行區(qū)域劃分和人眼長度與寬度的預測來確定人眼區(qū)域,使用這種方式大大提高了人臉人眼檢測的準確率和效率[1]。
2 圖像灰度化
灰度表明圖像明暗的數(shù)值,是單通道的數(shù)據(jù),而我們平時攝像頭采集的一般都是彩色的圖像,用R(Red)G(Green)B(Blue)三通道的數(shù)據(jù)表示,我們在進行圖像操作前首先將三通道的RGB圖像轉化為單通道的灰度圖像?;叶然幚砗髨D像依然能夠保留原圖的大部分信息,但對于后續(xù)的算法執(zhí)行時間復雜度和空間復雜度大大降低[2]。在Visual Studio 2015中直接用cvtColor(src, dst, CV_BGR2GRAY)這個函數(shù)可以直接將彩色圖像轉變成灰度圖像,達到圖像的預操作。彩色圖的像素轉換為灰度圖的像素,轉換公式如下式2-1所示,GRAY 為灰度值。
3 系統(tǒng)設計原理
本系統(tǒng)中的人臉檢測使用Haar特征進行AdaHoost分類器訓練生成Haar分類器,尋找圖片中的ROI(region of interest)區(qū)域并進行標定。
3.1 Haar特征
Haar特征分為三類:邊緣特征、線性特征、中心特征和對角線特征,組合成特征模板。特征模板內有白色和黑色兩種矩形,并定義該模板的特征值為白色矩形像素和減去黑色矩形像素和,Haar特征值反映了圖像的灰度變化情況[3]。例如:臉部的一些特征能由矩形特征簡單的描述,如:眼睛要比臉頰顏色要深,鼻梁兩側比鼻梁顏色要深,嘴巴比周圍顏色要深等。Haar分類器可由多個強分類器進行級聯(lián)組合,Haar分類器由Haar-like特征加積分圖加AdaHoost再加級聯(lián)構成,具體強分類器的方式如下:
3.2 AdaBoost分類器
Haar特征只能取得圖像的灰度變化情況的大小,但是需要對比普通人臉的圖像灰度特征才能確定這張圖像是否為人臉,因此需要引入AdaBoost分類器,利用足夠多的正樣本和足夠多的負樣本進行AdaBoost分類器訓練,在開始訓練時每一個樣本都是擁有相同的權值,之后再次進行重新計算重復反饋權值的時候,將錯誤樣本的權值提高,正確樣本的權值降低。弱分類器就是根據(jù)新的權值分配進行重復的訓練最后得到的[4]。級聯(lián)強分類器的目標是,將若干個強分類器按一定順序排列,希望經(jīng)過訓練使每個強分類器都有較高檢測率,而降低誤識別率,比如一個強分類器可以通過99%的人臉,但也可以通過50%的非人臉,這樣如果有20個強分類器級聯(lián),那么就能達到0.99^20約等于98%的總識別率,但是也僅只有約等于0.5^20 0.0001%的錯誤識別率。這樣的結果是可以很好地滿足需求[5]。最終,通過將弱分類器重復反饋生成強分類器。最終將正確的結果輸出出來,級聯(lián)分類器示意圖如圖2。
4 系統(tǒng)工作實現(xiàn)
4.1 人臉識別過程
本文使用的是OpenCV自帶的haarcascade_frontalcatface.xml文件,里面包含OpenCV提供的人臉庫,使用這個文件就能迅速、準確的識別出人臉,一旦檢測出人臉后,用矩形將人臉框出。畫出人臉的矩形后繼續(xù)在人臉矩形的范圍內檢測人眼的位置,即將人臉區(qū)域作為ROI區(qū)域,接下去的操作只會在ROI區(qū)域內處理。這個步驟可以運行OpenCV自帶的haarcascade_eye.xml文件,檢測到眼睛后,同樣用矩形將眼睛框出。如果檢測到臉,但是沒有檢測到眼睛,說明駕駛員眼睛已經(jīng)閉上或者睜得很小,處于疲勞狀態(tài),此時若駕駛員眼睛閉上時間大于1秒或者眨眼頻率過快,我們即可判斷駕駛員需要休息,已經(jīng)不太適合繼續(xù)開車了,這時的電腦就會發(fā)送一個信號給單片機,發(fā)出報警聲,來提醒駕駛員清醒或者停車休息。
4.2 實時傳輸
一旦系統(tǒng)檢測到駕駛員眼睛的變化情況,判定駕駛員處于疲勞狀態(tài),電腦會通過串口自動發(fā)送一個信號給單片機,實時監(jiān)測,若在警報聲的提醒下駕駛員恢復精神,電腦又會發(fā)送一個信號給單片機,令其停止警報。在這里我輸入的程序為發(fā)送數(shù)字1和數(shù)字0。OpenCV 提供的視覺處理算法非常豐富,加上其開源的特性,不需要添加新的外部支持也可以完整的編譯鏈接生成執(zhí)行程序,代碼經(jīng)過適當改寫可以正常的運行在ARM嵌入式系統(tǒng)中,是圖像處理十分重要的軟件支持。只需要在電腦和單片機雙方規(guī)定好通信協(xié)議,如波特率,奇偶校驗,數(shù)據(jù)字長,起始位,中止位等協(xié)議。
4.3 實驗結果
將控制蜂鳴器和串口通信的代碼輸入進單片機,連接電腦,啟動系統(tǒng),電腦會自動打開攝像頭并且將圖像數(shù)據(jù)實時經(jīng)過分類器處理,畫出矩形框,正常狀態(tài)和疲勞狀態(tài)的圖像對比如圖3和圖4。當系統(tǒng)檢測到圖3狀態(tài)時,電腦通過串口輸出數(shù)字0給單片機,單片機不行進行下一步的操作,一旦系統(tǒng)檢測到圖4狀態(tài)時,電腦通過串口輸出數(shù)字1給單片機,單片機就會讓LED小燈閃爍并提供一個脈沖給蜂鳴器,令蜂鳴器發(fā)出響聲,以此來模擬當駕駛員出現(xiàn)疲勞駕駛時的警報。
5 結語
本文介紹的系統(tǒng)主要運用計算機視覺庫(OpenCV),軟件開發(fā)工具(Visual Studio 2015)以及下位機制作模擬了一套駕駛員檢測系統(tǒng),旨在解決目前眾多交通事故中由疲勞駕駛導致的交通事故。從實用角度看,如果每輛汽車上都裝有這種裝置,有利于減少人員傷亡和財產(chǎn)損失,為長途出行的駕駛員提供了一份警示和安全保障,防止駕駛員不知不覺疲勞而導致意識模糊,反應遲鈍,操作無力。經(jīng)過試驗,該系統(tǒng)性能穩(wěn)定,效果良好。其次,各部分算法還有待精進,比如需要完全閉眼時才能準確檢測并報警,瞇眼會判定駕駛員精神狀態(tài)良好,這部分有待改進。
參考文獻:
[1]尚麗娜,石晴瑤,方健.基于OpenCV的人眼檢測及疲勞判斷[J].電子世界,2018(21):19-20+23.
[2]邱鵬瑞.基于OpenCV的視頻監(jiān)控與跟蹤系統(tǒng)研究[J].計算機與數(shù)字工程,2019,47(04):888-891.
[3]米羅西.圖像特征提取三大法寶:HOG特征,LBP特征,Haar特征[EB/OL].
[4]劉伍豐,何前磊,鄭維.基于HAAR特征與BP神經(jīng)網(wǎng)絡的車牌識別技術研究[J].電子測量技術,2019,42(08):61-67.
[5]余建波.基于OpenCV的視頻人臉識別系統(tǒng)設計[J].信息通信,2018(12):40-42.
項目基金:江蘇省高等學校大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目
項目編號:201913655008Y
作者簡介:吳榮燎(1998-),男,浙江寧波人,本科在讀,研究方向:汽車電氣控制。