陳 藩,施一萍,胡佳玲,謝思雅,劉 瑾
(上海工程技術大學 電子電氣工程學院,上海 201620)
在課堂教學中,學生會出現長時間精神不集中的疲勞狀態。如果能夠及時檢測到學生課堂疲勞狀態,并進行有效的處理,就能夠幫助學生提高課堂的學習效率,提高課堂教學質量,左國才等人將CNN疲勞檢測方法用于大學課堂之中[1]。疲勞檢測為智慧課堂的實現提供了重要的保證。傳統的疲勞檢測只是通過眼部的PERCLOS值來判斷,判斷標準較為單一(特征),結果不夠準確[2-3]。也有一些學者如陳建偉提出了視覺特征多通道融合的方式實現疲勞檢測,但是魯棒性不強[4];傳統的人臉識別方法存在容易被光照陰影等因素干擾的問題,江偉堅等人提出新Haar-like特征的Adaboost人臉檢測,但有較高的時間開銷[5];如今這些疲勞檢測方法主要應用于疲勞駕駛領域,如褚晶輝、耿磊等人均提出基于駕駛員行為分析疲勞檢測方法,然而在教育領域卻較少被應用[6-7]。本文提出一種基于卷積神經網絡的多特征融合的疲勞檢測算法,實現學生疲勞檢測。首先,通過MTCNN[8]實現人臉檢測和特征點定位,相對于基于多尺度卷積網絡,MTCNN有著更強的關鍵點定位的能力;其次,通過人臉歸一化的方式精確提取眼、嘴部特征區域,用神經網絡對特征區域的圖像分類;最后,將眼部PERCLOS值與嘴部MAR值相結合,實現疲勞檢測,并在實際教室環境中取得了理想的效果。
本文提出的疲勞檢測算法的總體流程如圖1所示。

圖1 疲勞檢測流程
疲勞檢測過程中,第一點便是要對學生的面部進行準確的檢測和關鍵點的定位。由于人的面部容易受到光照、發型、佩戴眼鏡的影響,在這些復雜的環境下,使用傳統卷積神經網絡檢測效果較差。因此,本文采用多任務級聯卷積神經網絡(Multi-task convolutional neural networks)進行人臉檢測及關鍵點定位,其基本原理是通過級聯的三級卷積神經網絡P-Net、R-Net和O-Net組成漏斗狀的檢測器,形成寬進嚴出的檢測模式。
本文設計的MTCNN的網絡結構模型如下:
P-Net:第一個卷積層采用3×3,步長為1的卷積核,池化層采用2×2,步長為2的最大值池化;第二個卷積層采用3×3,步長為1大小的卷積核;第三個卷積層采用了3×3,步長為1大小的過濾器;最后,用1×1大小的過濾器進行面部分類、邊界框回歸和特征點定位。其網絡結構如圖2所示。

圖2 P-Net層
Q-Net:第一個卷積層采用3×3的卷積核,池化層采用3×3最大值池化;第二個卷積層采用3×3大小,池化層同樣采用3×3的最大值池化;最后一個卷積層采用的卷積核大小為2×2,并且全連接層與最后一層卷積層連接。最后進行面部分類、邊界框回歸和關鍵點定位。其網絡結構如圖3所示。

圖3 Q-Net層
O-Net:第一個卷積層采用3×3卷積核,池化層采用3×3的最大值池化;第二個卷積層采用3×3卷積核,池化層采用3×3的最大值池化;第三個卷積層采用3×3卷積核,池化層采用2×2的最大值池化;第四層卷積層采用2×2卷積核,全連接層連接著最后一層卷積層。最后,進行面部分類、邊界框回歸和關鍵點定位這3項工作。以上卷積的步長為1,池化的步長為2,其網絡結構如圖4所示。

圖4 Q-Net層
上述MTCNN網絡中,卷積步長為1,填充方式為“valid”。而池化層的滑動步長為2,并且填充方式為“same”,在所有的卷積層和全鏈接層之后為激勵層。
對于MTCNN而言,主要完成3個任務:
(1)面部分類: 此任務通過交叉熵損失函數來實現,如公式(1)所示。
(1)
其中Pi表示人臉的概率,yi為真實類別的標簽,若為人臉,則值為1,若不是則值為0。
(2)
(3)面部關鍵點定位: 由于人臉關鍵點檢測類似于邊界框回歸任務,可通過最小化歐氏距離回歸獲得人臉關鍵點坐標,如公式(3)所示。
(3)

本文是通過MTCNN確定關鍵點,所以關鍵點較少,因此提出一種基于稀少特征點提取目標區域圖像的方法,即通過仿射變換將不同位置、不同姿勢以及不同大小的圖像歸一化到同一位置尺度。

(4)
將矩陣簡寫為Z=Nk,Z是平均人臉的5點坐標值矩陣;N是通過人臉定位后的5點坐標;k為仿射變換矩陣。通過最小二乘法求出方程的解k=(NTN)-1NTZ。檢測定位出的不同姿勢、不同位置以及不同大小的圖像歸一化到同一位置尺度的圖像。本文選取學生上課最有可能出現的姿勢,分別是歪著頭和手托著頭聽課,通過歸一化操作,效果如圖5所示。

圖5 歸一化操作
經過歸一化操作之后,需要對目標區域的圖像進行快速提取。由于特征點較少,所以對目標區域外接一個最小面積的矩形,來獲取目標區域,效果如圖6所示。

圖6 眼、口提取效果圖
在對眼睛、嘴部進行狀態分類時,考慮到待分類的圖片尺寸較小,所提取的特征圖像排除了眉毛和鼻子的干擾,使得圖像特征得到了簡化。考慮到教室空間有限而且檢測又要有較高的準確性和實時性要求,因此使用網絡結構較為簡單的網絡進行模型訓練,模型結構如下圖7所示。

圖7 眼、口狀態識別網絡
網絡一共包含3個卷積層,第一層和第二層的卷積核為32,第三層卷積層為64,卷積核的大小均為5。除了第一個池化層采用最大池化方式,其余兩個均為平均池化,共計3個池化層,共有兩個全連接層,神經元的個數分別為64和2,識別效果如圖8所示。

圖8 眼、口狀態識別效果
學生在疲勞時會出現閉眼時間較長和打哈欠頻率較高的情況,為了更為準確的檢測疲勞狀態,本文將眼部和嘴部的情況相結合來綜合判斷。
根據人的面部特征判斷疲勞狀態時,卡內基梅隆研究所提出的PERCLOS方法是一種較為常用的檢測方法,在所選取的時間范圍內,人眼處于閉合狀態所占時間的百分比,計算公式如公式(5)所示:
(5)
其中,P表示一定時間內,眼睛處于閉合狀態的時間占據比;Nc表示某段時間內眼睛閉合狀態的幀數量;Nt表示該時間段內的總幀數量。根據經驗,當計算值≥0.4時,就表示學生處于疲勞狀態,否則為正常狀態。
當學生處于疲勞狀態時另一個特征就是打哈欠,因此可以通過嘴部開合狀態和張開的時間來判斷學生是否疲勞。但是在檢測過程中,首先要排除說話這一重要干擾因素。據研究,人打一次哈欠的時間大約在3 s,而說話時嘴巴處于不停的開閉合狀態,因此可以通過改進的MAR機理來進行哈欠判定。由于嘴部在運動時是處于整體運動的,而且嘴部區域共有8個特征點,如圖9所示。所以使用嘴唇內部坐標進行計算,通過嘴唇縱橫比的值MAR來判斷是否疲勞,如公式(6)所示。

圖9 嘴唇區域坐標
(6)
權威研究發現,當MAR值>0.9時,可判定為學生處于疲勞狀態。
為了更為準確地檢測判定疲勞狀態,本文將眼部疲勞和嘴部疲勞特征相融合,若P≥0.4, 或MAR≥0.9時學生處于疲勞狀態。本文提出新的綜合判斷法,如公式(7)所示:
T=α1P+α2Q
(7)
其中,T為綜合疲勞度;P為PERCLOS值;Q為MAR值;a1和a2為權重,并且a1+a2=1。經過多組實驗可得到P的閾值為0.5,即P≥0.5,學生處于疲勞狀態。a1為0.8,a2為0.2。
為了解決睜閉眼、張閉嘴樣本不均衡的問題,本文通過對ZJU眨眼視頻數據集采集包括睜閉眼兩種狀態共計約9 000張圖片,其中1 000張圖片(±樣本各500張)用于后續的模型測試,其余的樣本則用于訓練。
嘴部數據集則是通過YawDD疲勞駕駛視頻數據集和其它視頻數據集所采集的嘴部樣本。為了提升嘴部樣本數量,本文對樣本進行垂直旋轉和水平翻轉得到樣本數量共計2 000張,其中200張(±樣本各100張)用于模型的測試,其余的樣本則用于模型訓練,部分樣本如圖10所示。

圖10 部分數據樣本
Windows10操作系統,Intel Core i5-8300H,8GB內存,python3.5編程語言,Tensorflow1.7框架,顯卡型號GeForce GTX1060。
為了進一步驗證本文所提出方法的優越性,在相同實驗條件下,分別與MTCNN結合隨機森林[9]的方法以及Adaboost結合CLM[10]的方法進行對比,結果見表1。分別使用3種方法在100張人臉圖像上進行測試。

表1 眼、嘴部狀態分類測試結果
由實驗結果可知,本文提出的方法在準確率上具備了一定的優越性,并且時間開銷上能滿足實時性要求。本文通過簡化圖像特征,使得利用結構簡單的網絡實現眼、嘴部狀態分類成為可能。
為了清晰的展示運行效果,依據PERCLOS疲勞判斷標準,本文用實時視頻進行測試,測試效果如圖11所示。

圖11 疲勞檢測系統示意
本文提出疲勞檢測方式的實時性也極高,能夠及時的幫助老師發現疲勞學生,加以提醒,提高課堂教學效果。
本文提出了一種基于卷積神經網絡的多特征融合學生課堂疲勞檢測算法。在MTCNN的基礎上通過歸一化操作完成眼、嘴部區域的精確定位,并且將眼嘴部疲勞狀態相結合實現多特征融合的疲勞檢測方法。對比采用單一的特征進行檢測,識別率有了明顯的提升,說明本文所提方法能夠提高系統判斷的準確性。但是教室是個很復雜的環境,如何更加全面的檢測到每個學生的狀態,從而實現真正意義上的智慧課堂與智慧教育還需要進一步研究。