羅元 云明靜 王藝 趙立明
摘 要:人眼狀態(tài)是反映疲勞程度的重要指標,頭部姿勢變化、光線等因素對人眼定位造成很大影響,從而影響人眼狀態(tài)識別以及疲勞檢測的準確性,為此提出了一種利用級聯卷積神經網絡通過檢測人眼6個特征點來識別人眼狀態(tài)進而識別人體疲勞的方法。首先,一級網絡采用灰度積分投影結合區(qū)域—卷積神經網實現人眼的檢測與定位;然后,二級網絡將人眼圖片進行分割后采用并聯子卷積系統進行人眼特征點回歸;最后,利用人眼特征點計算人眼開閉度識別當前人眼狀態(tài),并根據單位時間閉眼百分比(PERCLOS)準則判斷人體疲勞狀態(tài)。實驗結果表明,利用所提方法實現了在歸一化誤差為0.05時,人眼6特征點的平均檢測準確率為95.8%,并根據模擬視頻幀的PERCLOS值識別疲勞狀態(tài)驗證了該方法的有效性。
關鍵詞:灰度積分投影;卷積神經網絡;人眼定位;人眼狀態(tài)識別;疲勞檢測
Abstract: The eye state is an important indicator reflecting the degree of fatigue. Changes in head posture and light have a great influence on human eye positioning, which affects the accuracy of eye state recognition and fatigue detection. A cascade Convolutional Neural Network (CNN) was proposed, by which the human eye state could be identified by detecting six feature points of human eye to identify human body fatigue. Firstly, grayscale integral projection and regional-convolution neural network were used as the first-level network to realize the positioning and detection of human eyes. Then, the secondary network was adopted to divide the human eye image and parallel sub-convolution system was used to perform human eye feature point regression. Finally, human eye feature points were used to calculate the human eye opening and closing degree to identify the current eye state, and the human body fatigue state was judged according to the PERcentage of eyelid CLOSure over the pupil time (PERCLOS) criterion. The experimental results show that the average detection accuracy of six eye feature points reaches 95.8% when the normalization error is 0.05, thus the effectiveness of the proposed method is verified by identifying the fatigue state based on the PERCLOS value of analog video.
Key words: grayscale integral projection; Convolutional Neural Network (CNN); eye positioning; eye state identification; fatigue detection
0 引言
疲勞是指在一定環(huán)境條件下因機體長時間從事體力或腦力勞動而引起的勞動效率趨向下降的狀態(tài)。疲勞不僅是多種慢性疾病的起源,更重要的是疲勞在某些領域會對社會安全造成重大危害,尤其在高空建筑作業(yè)、車輛駕駛、大型復雜工業(yè)等高風險作業(yè)中,每年因人員疲勞操作造成的事故數量巨大。目前,疲勞檢測主要分為基于生理特征信號檢測、基于視覺特征檢測[1],對于駕駛疲勞檢測還包括駕駛行為的檢測方式。基于生理特征信號的檢測方式具有較高的準確率,但是該方法信號采集設備復雜,相關設備的小型化與實用化也仍有不足,因此目前的主要研究還是在實驗室進行[2];而基于視覺檢測的方式在保持較高準確率的同時設備要求低,同時具有非入侵性特點[3],是疲勞檢測的主要研究方向之一。
基于眼睛狀態(tài)的疲勞檢測主要包括人眼定位以及人眼狀態(tài)的識別[4-5]。Deng等[6]利用膚色模型結合人臉三庭五眼的布局定位人眼,并利用人眼的積分投影區(qū)域大小識別人眼狀態(tài);這種方法雖然算法簡單,但是定位的準確率受環(huán)境光照影響較大,且由于人眼區(qū)域在圖像中占的比例很小,利用積分投影的人眼狀態(tài)識別準確率較低。李響等[7]利用圖像的矩特征通過計算人眼模板的Zernike矩特征向量與待識別的人臉區(qū)域作相似度計算,選取相似度最大的區(qū)域作為人眼區(qū)域;該方法雖然能夠減小環(huán)境光照對于檢測結果的影響,但計算量較大,并且結果受選取的人眼模板影響較大。在人眼狀態(tài)識別中,傳統人眼狀態(tài)識別方法通過對檢測的人眼區(qū)域進行人眼形狀擬合[8]或者對人眼區(qū)域采用積分投影根據投影區(qū)域的寬度[9]識別人眼的張開程度。形狀擬合的方法不僅計算復雜而且在頭部姿態(tài)變化時容易失真,積分投影的方法要求檢測的人眼區(qū)域完全匹配人眼的上下眼瞼,實際情況下很難做到,容易造成投影區(qū)域寬度過大或過小影響檢測結果。
針對這些傳統算法在實際環(huán)境中易受頭部姿勢變化、光線等因素的干擾,以卷積神經網絡(Convolutional Neural Network, CNN)為代表的深度學習在圖像檢測領域具有較高的準確性同時能具有較強的魯棒性,在目標檢測方面就有區(qū)域—卷積神經網絡(Region-Convolutional Neural Network, R-CNN)[10]、快速區(qū)域—卷積神經網(fast Region-Convolutional Neural Network, fast R-CNN)[11]、多任務卷積神經網(Mutil-task-Convolutional Neural Network, Mutil-task-CNN)[12]等,但是這些網絡結構較為復雜,常用于圖像中的多目標檢測,本文針對人臉圖像設計了一種級聯神經網絡結構來檢測人眼以及人眼特征點,并提出兩點改進:1)采用灰度積分投影進行人眼粗定位后將結果輸入神經網絡進行精定位,提高了檢測速度;2)將人眼圖像進行2×2分割后利用4個子卷積網絡構成的卷積神經網進行特征點回歸預測,同時考慮到眼瞼與眼部其他特征的差異,在最后一層卷積層采用不共享權值,在一定程度上提高了人眼特征點的定位準確率。
1 算法流程
一般情況下,對于在自然環(huán)境中得到的人物圖像,人眼在圖像中所占比例較小,直接檢測人眼往往比較困難且檢測準確率不高。本文首先進行人臉檢測,對得到的人臉圖像利用改進的級聯卷積神經網進行人眼的定位以及人眼特征點檢測,通過6特征點計算人眼開閉度從而識別人眼狀態(tài),最后根據計算模擬視頻幀的單位時間閉眼百分比(PERcentage of eyelid CLOSure over the pupil time, PERCLOS)值識別疲勞狀態(tài)驗證本文方法,疲勞檢測算法如圖1所示。
在人臉檢測部分,本文采用了膚色模型[13]與支持向量機(Support Vector Machine, SVM)分類器從全圖中提取人臉圖像。經過膚色檢測后找到圖像中可能存在膚色的連通區(qū)域的最小外接矩形,經過實驗表明,小于40×40的人臉圖像中人眼屬于小目標,針對小目標人眼的狀態(tài)識別非常困難且檢測效率較低,因此舍棄小于40×40大小的矩形區(qū)域,將剩下的矩形區(qū)域內的圖像從原圖中分割作為候選區(qū)域輸入SVM分類器進行分類識別。
2 數據集準備
訓練數據 本文采用CEW人眼睜閉數據庫來訓練一級網絡,CEW庫是用于人眼睜閉檢測的數據集,該數據集共包含2423張不同人眼開閉狀態(tài)的帶人臉圖片,其中包括來自于網絡的1192張閉眼圖片以及來自于LFW人臉數據庫的1231張睜眼圖片。利用BBox-Label-Tool工具制作人眼位置框標簽,每幅圖片的標簽信息包含實際矩形框的坐標信息、寬高信息以及框內目標的類別信息。訓練二級網絡從CEW庫中裁剪人眼圖片2133張,其中閉眼圖片共1015張,睜眼圖片共1118張,左眼圖片1060張,右眼圖片1073張,利用sloth工具為人眼圖片添加特征點標簽。
實驗數據 由于目前缺少關于人體疲勞的公開數據集,本文根據自采集模擬人體清醒與疲勞兩種狀態(tài)的視頻進行實驗。首先定義當上下眼瞼均未遮擋虹膜時的眼睛狀態(tài)為完全張開狀態(tài),通過實驗統計眼睛完全張開時開閉度在0.35至0.4之間(0.35,0.4]區(qū)間請用開閉區(qū)間來表示,并從清醒狀態(tài)視頻與疲勞狀態(tài)視頻中各選取200幀共400幀帶人臉視頻幀進行實驗,選取的視頻幀均包含不同人眼張開度,其中在清醒狀態(tài)幀中選取人眼開閉度為0.1至0.2(0.1,0.2]這樣表達不嚴謹,例如:在=0.2時屬于哪個范圍?請明確。請用開閉區(qū)間來表示?;貜停壕鶠樽箝_右閉區(qū)間共40幀,0.2至0.3(0.2,0.3]共100幀,0.3至0.4(0.3,0.4]共60幀,同時在疲勞幀中人眼完全閉合共50幀,開閉度為0至0.1[0,0.1]共150幀。
3 人眼檢測與狀態(tài)識別
3.1 人眼檢測
由于人眼區(qū)域占人臉比例較小,若直接進行人眼定位需要對整幅人臉圖像進行計算,造成大量計算資源的浪費,因此本文設計了一種結合灰度積分投影與卷積神經網的方法,先對得到的人臉區(qū)域圖像進行人眼的粗定位再利用神經網絡提取特征并進行人眼精定位?;叶确e分投影法[14]是一種簡易的人眼粗定位方法,根據人臉先驗知識,人眼及眉毛區(qū)域的灰度較人臉其他區(qū)域低,因此將人臉圖像轉換為灰度圖像并將其像素灰度值投影到水平或者垂直方向累加得到灰度曲線,對于待檢測圖像f(x,y),其水平灰度積分可表示為:
其中xi表示水平方向第i個像素的位置。
由圖2水平灰度積分投影曲線可知,人臉灰度第一極大值與第二極大值點之間對應于人的額頭位置與鼻中部位置,人眼位置就位于兩個極大值點之間的極小值點附近,為了使截取的圖片完整包含人眼,提取第一極大值與第二極大值點之間的區(qū)域即額頭至鼻中部區(qū)域圖片作為人眼的候選區(qū)域。
人眼定位網絡結構為一種7層結構的網絡結合2層RPN(Region Proposal Network),主要實現人眼分類與人眼框回歸預測兩種任務,網絡結構如圖3所示。
網絡結構中第1層為輸入層;第2層為灰度積分投影人眼粗定位;第3、4、5層為卷積層,第6層為全連接層,第7層為兩個全連接層構成的輸出層;RPN結構為兩層全卷積層。各層的具體結構如下:
1)第1層為輸入層,由輸入樣本構成,實驗采用的人臉圖片大小均為100×100大小,即輸入樣本為100×100的矩陣,每一個矩陣中的點表示圖像像素的大小。
2)第2層為灰度積分投影人眼粗定位,將得到的人眼候選區(qū)域圖像調整為60×100大小。
3)第3、4、5層為卷積層;用來提取圖像特征,在第3、4、5層分別采用了8、2、1種卷積核,卷積核大小均為3×3,最終得到了16個特征圖;在每個卷積層的后面采用了2×2的最大池化層,主要作用是用來簡化卷積層輸出的特征。
4)RPN為全卷積網絡,其主要包含兩個卷積層,采用5×5大小的卷積核,主要作用是提取人臉圖像中人眼可能存在的區(qū)域,根據文獻[15]建議采用了9種anchor,經過非極大值抑制(Non-Maximum Suppression, NMS)[16]后保留60個人眼候選框,其中正負類比例為1∶3。
5)第6層為全連接層,其主要作用是將各個特征圖映射成一個特征向量,便于后續(xù)的分類與人眼位置回歸。
6)第7層為輸出層,對于人眼分類采用softmax分類最后輸出分類概率,對于人眼框回歸輸出為人眼定位矩形框的長、寬以及中心點的坐標。
3.2 人眼狀態(tài)識別
本文利用改進的卷積神經網絡作為人眼檢測后的2級網絡進行人眼特征點回歸,本文共檢測了人眼的6個特征點,如圖4所示。其中A、B點分別為上下眼瞼的內交點與外交點,C、E點為AB連線三等分點靠近內交點處與上下眼瞼的交點,D、F點為AB連線三等分點靠近外交點處與上下眼瞼的交點。
定義人眼的開閉度:
其中:d為點A、B之間的直線距離,d1為點C、E之間的距離,d2為點D、F之間的距離。當比值<0.1時,認為當前人眼狀態(tài)為閉眼狀態(tài),0.1為根據P80[17]計算的經驗值,人眼特征點檢測網絡結構如圖5所示。
網絡具體結構如下:
1)第1層為輸入層,將得到的人眼圖像調整為48×48大小,輸入大小為48×48的矩陣,將輸入進行2×2分割后分別連接4個并行子卷積結構。
2)每個子卷積結構為3層網絡;各個卷積層分別采用8、2、4種卷積核,在前兩個卷積層后采用2×2的最大池化降維,最終得到了16個特征圖,因為在最后一個卷積層采用了不共享卷積方式。共享卷積的主要優(yōu)點是減少了參數個數,但是忽視了圖像不同部分特征的差異性,對于人眼特征點的預測,眼瞼的高層特征與眼睛其他部位差別比較大,且由于人眼圖片較小,因此在最后一層卷積層采用非共享卷積能夠更好地提取圖像特征。
3)第5層為全連接層,將子卷積的各特征圖映射成一個特征向量。
4)第6層輸出6個人眼特征點的坐標共12個神經元。
3.3 卷積神經網絡訓練
卷積神經網的訓練主要是通過梯度下降法與反向傳播來實現的,主要原理輸入數據,計算每一層的激活值,最后計算損失函數,根據損失函數大小是否滿足設定的閾值判斷是否結束迭代過程,若不滿足條件則反向更新參數并繼續(xù)進行迭代。
對于神經網中第k層第m個特征圖,第j個神經元,其激活值表達式為:
其中:ak,mj為該神經元激活值;xk,mj為該神經元輸入值;g()為激活函數。本文采用的激活函數為tanh函數,其表達式為(ez-e-z)/(ez+e-z),其中e為自然常數,可以看出tanh函數的取值范圍在[-1,1],均值為0,在訓練中較sigmod函數具有更快的收斂速度。
在一級網絡的輸出中主要存在人眼分類與人眼位置回歸兩種任務,對于分類任務,采用交叉熵損失函數,表達式為:
其中:y為分類標簽實際值;為神經網絡輸出值。
在人眼位置回歸任務中,假設人眼框標簽實際值為X=(x,y,w,h),預測值為X′=(x′,y′,w′,h′),損失函數采用二次損失函數,表達式為:
其中:(x,y,w,h)分別表示實際回歸框左上頂點的坐標與實際回歸框的寬度與高度,而(x′,y′,w′,h′)則表示預測回歸框的坐標與寬高。
在二級網絡主要任務屬于人眼特征點回歸任務,因此也采用一種二次損失函數,其表達式為:
其中:(xi,yi)為第i個特征點實際標注點的坐標;(xi′,yi′)為其預測點的坐標;i的順序為1~N,N為特征點的個數;l為人眼圖像的長度。
采用梯度下降法進行神經網絡參數的更新,設標簽實際值為Y,神經網絡輸出值為Y′,那么網絡中權值以及偏置更新:
其中:w為權值矢量;b為偏置矢量;η為學習率,訓練過程迭代1000次,學習率采用以0.1為基數的luong234衰減,即在總步數的三分之二后開始衰減,在后面的步數中平均衰減4次,每次衰減為上次的二分之一。
4 實驗結果及分析
為了驗證人眼定位算法的有效性,本文在人眼定位部分與Haar+AdaBoost算法、Gabor+SVM等算法以及未作人眼粗定位的本文神經網絡作了比較,同時分析了不同光照以及不同頭部偏轉姿態(tài)下的人眼定位,強光設定為平均灰度大于180,弱光灰度設定為平均灰度小于60。實驗在Matlab 2016b環(huán)境下進行,計算機的CPU主頻為3.30GHz,實驗結果分別如表1~2所示。
從表1~2可以看出,本文采用的方法與目前人眼定位中常用的Haar特征結合AdaBoost算法、Gabor+SVM算法以及Spp-net目標檢測算法相比具有最高的定位準確率和檢測速率,檢測速率略低于YOLO目標檢測算法但具有更高的定位準確率,同時與未采用灰度積分投影進行人眼粗定位的神經網絡以及相比,在自然狀態(tài)下檢測準確率提升了2.8個百分點,而檢測速率由7幀/s(Frames Per Second, FPS)提升到了11幀/s,提升了57%左右,說明采用灰度積分投影的粗定位在一定程度上提高了檢測性能。同時在不同光照下的檢測結果表明本文對于光照環(huán)境變化的人眼定位具有一定魯棒性,對于人體頭部姿態(tài)偏轉角度在小幅度偏轉時具有較好的檢測效果,但是當偏轉角度過大時定位準確率會大幅下降。
從圖6中可以看出,本文方法能夠實現較好的特征點檢測定位,在歸一化誤差允許范圍為0.05時各個特征點的定位準確率均達到92%~98%,平均定位準確率達95.8%,其中A、B點位于角點,特征較為復雜,定位準確率較高,下眼瞼兩點因為閉眼時睫毛的遮擋導致特征模糊因此檢測準確率較上眼瞼兩點低。同時本文與ASM、AAM主動形狀模型(Active Shape Model, ASM)、主動外觀模型(Active Appearance Model, AAM)傳統方法以及TCDCN受限深度卷積神經網絡(Tasks-Constrained Deep Convolutional Network, TCDCN)請補充ASM、AAM、TCDCN的英文全稱方法進行了比較,本文方法、ASM、AAM、TCDCN方法的特征點定位平均準確率分別為95.8%、78.5%、72.4%、92.4%,結果表明本文方法具有最高的平均定位準確率。
通過對選取的400幀帶人臉視頻幀檢測人眼特征點后計算人眼開閉度識別人眼狀態(tài)。表3中人眼狀態(tài)平均檢測準確率為97.5%,由表3可知,在人眼狀態(tài)檢測中,誤檢主要存在于閾值0.1附近,人眼開閉度越接近閾值0.1,檢測結果越容易出錯,而人在正常睜眼狀態(tài)下開閉度在0.2至0.3之間(0.2,0.3]區(qū)間,當人眼開閉度位于0.1附近時一般是人處于眨眼狀態(tài)。
PERCLOS是指一定時間內眼睛閉合時間占總時間的百分比,是目前視覺疲勞檢測方面最有效的指標。研究表明人平均每分鐘眨眼10至20次,即平均每3s到6s一次,人的正常眨眼時間為0.2~0.3s,此時PERCLOS值處于3.3%至10%之間,而若眨眼時間達到0.5~3s則可視為疲勞狀態(tài),此時PERCLOS值處于16.7%至100%之間。為了提高容錯率并且更為準確地區(qū)分疲勞與清醒狀態(tài),規(guī)定PERCLOS≥20%時,則判斷當前人體處于疲勞狀態(tài)。圖7是分別模擬人體清醒與疲勞的兩段視屏的人眼狀態(tài)檢測結果兩段。其中圖7(a)是模擬人體清醒狀態(tài)下的人眼狀態(tài)檢測結果,檢測到模擬視頻眨眼過程中的閉眼時間達到4幀,可以計算PERCLOS為8%;在疲勞狀態(tài)下,結果如圖7(b)所示,檢測到模擬視頻眨眼過程中的閉眼時間為22幀,可以計算PERCLOS為44%,均能夠正確反映身體狀態(tài)。測試結果證明了本文方法的有效性。
5 結語
本文針對視覺疲勞檢測,提出了一種級聯卷積神經網絡。一級網絡結合灰度積分投影與卷積神經網絡定位人眼提高了檢測速度與檢測準確率,利用改進的卷積神經網絡進行人眼特征點檢測,通過人眼特征點計算人眼開閉度來識別人眼狀態(tài),并最終根據PERCLOS準則檢測人體疲勞。結果表明本文方法具有較高的檢測速度與檢測準確率,能夠滿足疲勞檢測的需要,但是本文方法針對頭部姿勢偏轉過大時人眼定位效果還有待進一步提高,可以作為下一步的研究方向。
參考文獻 (References)
[1] YOU Z, GAO Y, ZHANG J, et al. A study on driver fatigue recognition based on SVM method [C]// Proceedings of the 2017 4th International Conference on Transportation Information and Safety. Piscataway, NJ: IEEE, 2017: 693-697.
[2] CHAI R, NAIK G, NGUYEN T N, et al. Driver fatigue classification with independent component by entropy rate bound minimization analysis in an EEG-based system [J]. IEEE Journal of Biomedical and Health Informatics, 2017, 21(3): 715-724.
[3] XU J, MIN J, HU J. Real-time eye tracking for the assessment of driver fatigue [J]. Healthcare Technology Letters, 2018, 5(2): 54-58.
[4] 唐廣發(fā),張會林.人眼疲勞預測技術的研究[J].計算機工程與應用,2016,52(9):213-218.(TANG G F, ZHANG H L. Research on human eye fatigue prediction technology[J]. Computer Engineering and Applications, 2016, 52(9): 213-218.)
[5] ZENG S, LI J, JIANG L, et al. A driving assistant safety method based on human eye fatigue detection [C]// Proceedings of the 2017 Control and Decision Conference. Piscataway, NJ: IEEE, 2017: 6370-6377.
[6] DENG Z, JING R, JIAO L, et al. Fatigue detection based on isophote curve [C]// Proceedings of the 2015 International Conference on Computer and Computational Sciences. Piscataway, NJ: IEEE, 2015: 146-150.
[7] 李響,譚南林,李國正,等.基于Zernike矩的人眼定位與狀態(tài)識別[J].電子測量與儀器學報,2015(3):390-398.(LI X, TAN N L, LI G Z, et al. Human eye localization and state recognition based on Zernike moment[J]. Journal of Electronic Measurement and Instrumentation, 2015(3): 390-398)
[8] ARAUJO G M, FML R, JUNIOR W S, et al. Weak classifier for density estimation in eye localization and tracking[J]. IEEE Transactions on Image Processing, 2017, 26(7): 3410-3424.
[9] SONG M, TAO D, SUN Z, et al. Visual-context boosting for eye detection[J]. IEEE Transactions on Systems, Man and Cybernetics, Part B (Cybernetics), 2010, 40(6): 1460-1467.
[10] LI J, WONG H C, LO S L, et al. Multiple object detection by a deformable part-based model and an R-CNN[J]. IEEE Signal Processing Letters, 2018, 25(2): 288-292.
[11] LI J, LIANG X, SHEN S M, et al. Scale-aware fast R-CNN for pedestrian detection [J]. IEEE Transactions on Multimedia, 2018, 20(4): 985-996.
[12] ABDULNABI A H, WANG G, LU J, et al. Multi-task CNN model for attribute prediction [J]. IEEE Transactions on Multimedia, 2015, 17(11): 1949-1959.
[13] LUO Y, GUAN Y P. Adaptive skin detection using face location and facial structure estimation [J]. IET Computer Vision, 2017, 11(7): 550-559.
[14] YANG W, ZHANG Z, ZHANG Y, et al. Real-time digital image stabilization based on regional field image gray projection[J]. Journal of Systems Engineering and Electronics, 2016, 27(1): 224-231.
[15] KNIG D, ADAM M, JARVERS C, et al. Fully convolutional region proposal networks for multispectral person detection[C]// Proceedings of the 2017 Computer Vision and Pattern Recognition Workshops. Washington, DC: IEEE Computer Society, 2017: 243-250.
[16] FU L, ZHANG J, HUANG K. Mirrored non-maximum suppression for accurate object part localization [C]// Proceedings of the 2015 3rd IAPR Asian Conference on Pattern Recognition. Piscataway, NJ: IEEE, 2015: 51-55.
[17] MANDAL B, LI L, WANG G S, et al. Towards detection of bus driver fatigue based on robust visual analysis of eye state [J]. IEEE Transactions on Intelligent Transportation Systems, 2017, 18(3): 545-557.