李曉星,朱 明
(中國科學技術大學 信息科學技術學院,合肥 230026)
疲勞駕駛,是指駕駛員在長時間的連續(xù)駕駛后,產生的生理上和心理上的某些機能的嚴重失調,從而導致出現(xiàn)的一系列開車技能顯著降低的現(xiàn)象.然而,駕駛員的疲勞駕駛是可控的,所以,能夠準確地檢測駕駛員的疲勞狀態(tài),并在駕駛員疲勞時給出相應的安全警示,可以有效地保障司機的出行安全.
目前的疲勞駕駛檢測技術主要分為以下3 類:第1 種是基于駕駛員生理特征的疲勞駕駛檢測.駕駛員的生理特征是指生物信號,主要包括人的心電波、腦電波、肌電波等,這些生理特征與駕駛員的疲勞狀態(tài)呈現(xiàn)正相關的趨勢[1–5],因為這些信息可以直接反應駕駛員的疲勞狀態(tài),所以具有很高的準確率.王飛等[1]通過收集駕駛員的腦電波信號和相應的方向盤信息來檢測駕駛員的疲勞狀態(tài).但是,這種方法侵入性強、價格高昂、難以普及;第2 種是基于車輛運動特征的疲勞駕駛檢測,譬如手在方向盤上的壓力、車身的左右搖擺程度、車道偏離程度等[6–9].根據駕駛員疲勞駕駛時的方向盤的角度特性,Sayed 等[6]計算出了駕駛員的方向盤角度的分布直方圖,并提取頻率作為特征,建立了基于神經網絡算法的疲勞狀態(tài)檢測模型.但是,這種方法會受到很多外部因素的干擾,譬如復雜的路況信息和駕駛員的駕駛習慣等.因此在大多數(shù)情況下,它只能作為融合檢測中的輔助參考因子;最后是基于駕駛員面部特征的疲勞駕駛檢測,該方法主要是通過計算機視覺來判斷駕駛員的疲勞狀態(tài)[10–17].Reddy 等[11]通過人臉關鍵點檢測網絡MTCNN (Multi-Task Cascaded Convolutional Networks)[18]提取駕駛員的眼睛,然后利用CNN(Convolutional Neural Network)分別獲取眼睛的特征來構建疲勞檢測模型.此類方法與前兩種相比,安裝簡單、成本低、適合大面積推廣.
光照強度較弱的情況.由于駕駛員疲勞一般出現(xiàn)在夜間光照很弱的情況下,該情況下的圖像曝光度低,圖像特征不夠明顯,直接將原始圖像輸入到MTCNN網絡中可能會檢測不到眼睛區(qū)域從而影響整個檢測器的性能.所以基于此問題,本文提出了一種基于低光增強的夜間疲勞駕駛檢測方法,該方法在基于MTCNN網絡的檢測算法的基礎上首先對原始圖像進行低光增強處理,提高了圖像的曝光度,從而使得圖像特征更加明顯,最終提高整個檢測器的性能.
本文的貢獻如下:1)采用RGB 攝像頭拍攝了夜間視頻建立了夜間疲勞駕駛檢測數(shù)據集;2)在疲勞駕駛研究領域,本文最先提出使用低光增強的方法來解決夜間圖像曝光度低的問題.
傳統(tǒng)的檢測模型框架如圖1所示,整體來看主要分為兩個過程,第1 步是進行人臉關鍵點檢測確定眼睛區(qū)域,第2 步是眼睛睜閉眼狀態(tài)判斷.對于人臉關鍵點檢測,使用了MTCNN[18]模型進行識別.MTCNN 被認為是檢測速度最快同時也最準確的檢測器之一,利用級聯(lián)結構,它可以快速的實現(xiàn)人臉檢測與對齊.對于給定的一張原始圖像,經過MTCNN 處理,最終輸出人臉框和人臉的5 個特征點(包括左眼、右眼、鼻子和嘴唇的左右兩角)坐標信息.第2 步是眼睛睜閉眼狀態(tài)判斷,傳統(tǒng)的模型可以采用CNN 來對眼睛狀態(tài)進行分類判斷.CNN 將第1 步的輸出即眼睛區(qū)域作為輸入,最終輸出是眼睛的睜、閉狀態(tài).
上述模型中,在低光環(huán)境下,主要存在兩點不足:首先在將圖像輸入到MTCNN 中時,沒有對原始圖像進行任何處理,而對于低光照下曝光度低的圖像,直接將圖像輸入到MTCNN,由于圖像特征不明顯,可能會導致MTCNN 檢測不到臉部區(qū)域,導致檢測結果錯誤;其次即使能夠檢測到臉部以及眼睛區(qū)域,在第2 步將眼睛圖像輸入到CNN 進行分類時,由于眼睛圖像特征不明顯,也會導致CNN 判別出錯.因此,在低光照下,基于MTCNN 網絡的檢測模型效果不夠理想.
在本節(jié)中,我們針對傳統(tǒng)基于MTCNN 算法在低光照下的不足,在傳統(tǒng)算法的基礎上進行了創(chuàng)新,提出了一種基于低光增強的疲勞駕駛檢測模型.
如圖2所示,本模型主要分為3 步.第1 步首先采用低光增強算法對低光照下的照片進行處理,獲取到高質量圖像;第2 步和第3 步與傳統(tǒng)基于MTCNN 的檢測算法相同,先采用MTCNN 網絡進行關鍵點檢測來確定眼睛的區(qū)域,之后采用CNN 網絡進行分類,判斷是否為疲勞駕駛.由圖2可知,本模型在使用低光增強算法的檢測模型不會受到低光照下圖像曝光度低的影響.
北方農區(qū)要抓住晴好天氣,加快秋收掃尾工作,已收獲地區(qū)要做好晾曬和儲藏工作,確保顆粒歸倉。北方冬麥區(qū)已播地區(qū)注意查苗補種,土壤墑情偏差地區(qū)要積極造墑播種、適當加大播量;黃淮南部、江淮、江漢陸續(xù)進入播種期,應及時做好整地備播工作,并需密切關注墑情雨情,趁墑或造墑播種冬小麥。
第1 步利用低光增強算法對圖片進行處理是本文工作的重點.使用低光增強,我們不再將原始圖像直接輸入到MTCNN 中進行檢測.而是在進行檢測之前,創(chuàng)新提出了使用LIME 算法[19]對原始低曝光度圖像進行增強處理.
在實現(xiàn)低光增強的過程中,輸入的數(shù)據為低光下的低曝光圖像,輸出為經過處理的高質量圖像.本文使用LIME 算法進行改進并適用于本模型中,該算法是基于Retinex 理論[20],將黑暗中的圖像經過分解產生光照圖像和反射圖像,再將光照圖像進行增強然后與反射圖像相結合即可完成低光增強.具體的算法核心思想可以利用如下4 個公式進行說明:在式(1)中,L表示原始低曝光度圖像,I表示增強后的圖像,T表示物體的光照圖像,根據Retinex 理論可知,T是圖像的固有性質,是恒定不變的,符號“.”表示數(shù)組元素依次相乘.式(2)中,表示圖像的初始亮度估計.式(3)中,W代表權重矩陣,Gσ(x,y)由采用標準差的高斯核產生.式(4)為最終的優(yōu)化公式,α表示平衡系數(shù),通過優(yōu)化公式得到T的估計值后即可通過式(1)得到增強后的圖像.
根據上面的分析,我們總結了增強處理算法的具體實現(xiàn)流程,其偽代碼如算法1 所示.
算法1.LIME 算法具體實現(xiàn)流程1.根據式(2)計算圖像的初始亮度估計值 ;2.根據式(3)計算圖像的權重矩陣W;3.根據優(yōu)化式(4)計算表達式值最小時的T 即光照圖像;4.對光照圖像T 進行Gamma 變換;5.根據式(1)求得最終所需的增強圖像I.?T
在將夜間圖片進行低光增強之后,可以獲取到高質量的圖片.之后采用傳統(tǒng)的MTCNN 算法進行特征提取,和采用CNN 算法進行疲勞駕駛識別.此過程和傳統(tǒng)的疲勞駕駛檢測模型類似,本工作只是進行相應的參數(shù)調優(yōu),因此在文中不再累述.
根據上述中低光增強的檢測模型,我們可以在夜間光照強度較弱的情況下,更好的識別司機是否出現(xiàn)疲勞駕駛.
本文采用的數(shù)據集是筆者自己建立的數(shù)據集.考慮到目前公開的夜間疲勞駕駛檢測數(shù)據集都是利用紅外攝像頭采集,而紅外攝像頭成像質量差,顏色紋理對比度都不夠清晰,所以筆者自己使用640×480 的RGB攝像頭建立了一個數(shù)據集,整個數(shù)據集采集了18 個人的夜間視頻數(shù)據,均在實際場景中(即車里)拍攝,每個人都會拍攝疲勞與不疲勞兩種狀態(tài)的視頻,總共有36段視頻,其中18 段疲勞,18 段不疲勞,用于疲勞駕駛的檢測.
為了制作眼睛分類網絡的數(shù)據集,筆者從36 段視頻中分別獲取了60 幀視頻幀,剔除成像質量過差或噪點過多的圖像,最終從所有視頻中獲取了1664 幀圖像,對于每張640×480 的圖像,都會對其進行LIME 增強處理或不做處理,然后對于兩種情境下的圖像經過MTCNN 進行處理,得到兩種情況下(增強與不增強)的眼睛圖像,然后將所有眼睛圖像resize 到48×48大小,用于制作眼睛分類網絡的數(shù)據集,眼睛數(shù)據集圖片如圖3所示,其中上面3 行是不加入增強方法的眼睛數(shù)據集圖像(包含睜眼閉眼),后面3 行是加入LIME增強之后的眼睛數(shù)據集圖像.其中70%用于訓練,20%用于驗證,10%用于測試,從而訓練睜閉眼分類網絡,提高睜眼閉眼檢測的準確率,最終提高本文算法的魯棒性.
圖3 睜閉眼分類網絡數(shù)據集圖像
本文檢測算法的流程圖如圖4所示,實驗所用的機器配置情況如表1,經過不斷的調優(yōu),本文中相關模型的主要參數(shù)有:LIME 算法的權衡系數(shù)α 設置為0.15,將光照圖像的伽馬變換設置為0.7,睜閉眼分類網絡的batch_size 均設置為32,學習率設置為0.001.
圖4 本文實驗流程圖
表1 實驗機器配置情況
圖5是LIME 算法的實驗結果,該算法的輸入是一張640×480 的三通道的低光照圖像,輸出是一張640×480 的三通道的增強后的圖像,處理之后的結果如圖8所示,其中左邊為原始圖,右邊為增強圖,圖像尺寸大小保持640×480 不變.由實驗結果可以看出,圖像的曝光度大幅增高,有利于之后進行檢測.
圖5 LIME 處理結果
圖6是1664 張圖像做的亮度統(tǒng)計結果.對于每張圖像,先對其進行灰度化,然后計算圖像上所有像素點的平均灰度值即可得到圖像的平均亮度,最后統(tǒng)計每個亮度上(0~255)圖像的數(shù)量.實驗結果如圖6所示,虛線繪制的折線圖為未加入增強的統(tǒng)計結果,實線繪制的折線圖是加入LIME 增強的統(tǒng)計結果.由圖像可以看出,加入增強之后的亮度值曲線右移,表明圖像的曝光度增加,有利于后續(xù)階段的檢測和分類.
圖6 亮度統(tǒng)計結果
圖7是MTCNN 的檢測結果.第1 行左邊是原始夜間圖像,右邊是對其進行特征點檢測的結果,如圖可以看到臉部被框出,眼睛鼻子嘴巴等區(qū)域被標記;第2 行左邊是原始圖經過LIME 算法增強后的結果,右邊是對其進行特征點標記后的結果.
圖7 MTCNN 處理結果
表2是MTCNN 定位眼睛區(qū)域的準確率,對于定位結果,若識別不到人臉框,則識別不正確,反之,則認為識別正確.實驗結果可以看出,直接輸入低光情況下的圖像進行檢測,檢測效果會相對較差,這是因為在低曝光度的條件下,臉部特征不大明顯,所以很難定位到臉部.在MTCNN 檢測之前,加入低光增強的方法,使得圖像的曝光度增加,檢測效果會顯著提高.
表3是眼睛狀態(tài)識別的實驗結果.采用基于MTCNN網絡的檢測方法,直接使用原始圖像進行輸入,沒有考慮到圖像的質量問題,導致MTCNN 定位眼睛區(qū)域的準確率變低,進而導致整個模型的準確率變低,因而效果不如基于低光增強的檢測方法好.
表3 眼睛狀態(tài)識別方法對比
以下是疲勞駕駛檢測的實驗結果,疲勞駕駛的檢測針對的對象是一段視頻,判斷疲勞駕駛使用的方法是在1 分鐘內獲取60 幀視頻幀,睜眼狀態(tài)的數(shù)量比低于80%則可認為是疲勞,反之則為正常狀態(tài).表4為基于MTCNN 的檢測方法的實驗結果,表5是基于低光增強的檢測方法的實驗結果,表6是兩種方法的實驗結果對比.本文針對數(shù)據集中的36 段視頻(18 段睜眼、18 段閉眼)進行了測試,根據結果可以看出加入低光增強之后檢測器的性能有很大提升,原因主要是因為未加入增強的檢測器檢測的圖像曝光度過低,導致眼睛狀態(tài)識別準確率受到影響,進而直接影響到疲勞駕駛的檢測.
表4 基于MTCNN 的檢測方法實驗結果
表5 基于低光增強的檢測方法檢測結果
表6 兩種方法試驗對比(單位:%)
本文提出了一種基于低光增強的夜間疲勞駕駛檢測方法,在檢測之前先對圖像進行低光增強,然后利用人臉關鍵點檢測方法定位眼睛區(qū)域,最后使用眼睛睜閉眼分類網絡對眼睛區(qū)域進行分類.本文使用了LIME算法來對圖像進行低光增強,實驗表明,加入低光增強方法的檢測器比不加入的準確率高.對比其他的疲勞檢測方法,該方法不僅不需要與駕駛員直接接觸,而且針對晚上圖像曝光度低的情況均有更好的效果.