陳 藩,施一萍,胡佳玲,謝思雅,劉 瑾
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海 201620)
在課堂教學(xué)中,學(xué)生會出現(xiàn)長時間精神不集中的疲勞狀態(tài)。如果能夠及時檢測到學(xué)生課堂疲勞狀態(tài),并進(jìn)行有效的處理,就能夠幫助學(xué)生提高課堂的學(xué)習(xí)效率,提高課堂教學(xué)質(zhì)量,左國才等人將CNN疲勞檢測方法用于大學(xué)課堂之中[1]。疲勞檢測為智慧課堂的實現(xiàn)提供了重要的保證。傳統(tǒng)的疲勞檢測只是通過眼部的PERCLOS值來判斷,判斷標(biāo)準(zhǔn)較為單一(特征),結(jié)果不夠準(zhǔn)確[2-3]。也有一些學(xué)者如陳建偉提出了視覺特征多通道融合的方式實現(xiàn)疲勞檢測,但是魯棒性不強(qiáng)[4];傳統(tǒng)的人臉識別方法存在容易被光照陰影等因素干擾的問題,江偉堅等人提出新Haar-like特征的Adaboost人臉檢測,但有較高的時間開銷[5];如今這些疲勞檢測方法主要應(yīng)用于疲勞駕駛領(lǐng)域,如褚晶輝、耿磊等人均提出基于駕駛員行為分析疲勞檢測方法,然而在教育領(lǐng)域卻較少被應(yīng)用[6-7]。本文提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的多特征融合的疲勞檢測算法,實現(xiàn)學(xué)生疲勞檢測。首先,通過MTCNN[8]實現(xiàn)人臉檢測和特征點(diǎn)定位,相對于基于多尺度卷積網(wǎng)絡(luò),MTCNN有著更強(qiáng)的關(guān)鍵點(diǎn)定位的能力;其次,通過人臉歸一化的方式精確提取眼、嘴部特征區(qū)域,用神經(jīng)網(wǎng)絡(luò)對特征區(qū)域的圖像分類;最后,將眼部PERCLOS值與嘴部MAR值相結(jié)合,實現(xiàn)疲勞檢測,并在實際教室環(huán)境中取得了理想的效果。
本文提出的疲勞檢測算法的總體流程如圖1所示。
圖1 疲勞檢測流程
疲勞檢測過程中,第一點(diǎn)便是要對學(xué)生的面部進(jìn)行準(zhǔn)確的檢測和關(guān)鍵點(diǎn)的定位。由于人的面部容易受到光照、發(fā)型、佩戴眼鏡的影響,在這些復(fù)雜的環(huán)境下,使用傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)檢測效果較差。因此,本文采用多任務(wù)級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)(Multi-task convolutional neural networks)進(jìn)行人臉檢測及關(guān)鍵點(diǎn)定位,其基本原理是通過級聯(lián)的三級卷積神經(jīng)網(wǎng)絡(luò)P-Net、R-Net和O-Net組成漏斗狀的檢測器,形成寬進(jìn)嚴(yán)出的檢測模式。
本文設(shè)計的MTCNN的網(wǎng)絡(luò)結(jié)構(gòu)模型如下:
P-Net:第一個卷積層采用3×3,步長為1的卷積核,池化層采用2×2,步長為2的最大值池化;第二個卷積層采用3×3,步長為1大小的卷積核;第三個卷積層采用了3×3,步長為1大小的過濾器;最后,用1×1大小的過濾器進(jìn)行面部分類、邊界框回歸和特征點(diǎn)定位。其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 P-Net層
Q-Net:第一個卷積層采用3×3的卷積核,池化層采用3×3最大值池化;第二個卷積層采用3×3大小,池化層同樣采用3×3的最大值池化;最后一個卷積層采用的卷積核大小為2×2,并且全連接層與最后一層卷積層連接。最后進(jìn)行面部分類、邊界框回歸和關(guān)鍵點(diǎn)定位。其網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 Q-Net層
O-Net:第一個卷積層采用3×3卷積核,池化層采用3×3的最大值池化;第二個卷積層采用3×3卷積核,池化層采用3×3的最大值池化;第三個卷積層采用3×3卷積核,池化層采用2×2的最大值池化;第四層卷積層采用2×2卷積核,全連接層連接著最后一層卷積層。最后,進(jìn)行面部分類、邊界框回歸和關(guān)鍵點(diǎn)定位這3項工作。以上卷積的步長為1,池化的步長為2,其網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 Q-Net層
上述MTCNN網(wǎng)絡(luò)中,卷積步長為1,填充方式為“valid”。而池化層的滑動步長為2,并且填充方式為“same”,在所有的卷積層和全鏈接層之后為激勵層。
對于MTCNN而言,主要完成3個任務(wù):
(1)面部分類: 此任務(wù)通過交叉熵?fù)p失函數(shù)來實現(xiàn),如公式(1)所示。
(1)
其中Pi表示人臉的概率,yi為真實類別的標(biāo)簽,若為人臉,則值為1,若不是則值為0。
(2)
(3)面部關(guān)鍵點(diǎn)定位: 由于人臉關(guān)鍵點(diǎn)檢測類似于邊界框回歸任務(wù),可通過最小化歐氏距離回歸獲得人臉關(guān)鍵點(diǎn)坐標(biāo),如公式(3)所示。
(3)
本文是通過MTCNN確定關(guān)鍵點(diǎn),所以關(guān)鍵點(diǎn)較少,因此提出一種基于稀少特征點(diǎn)提取目標(biāo)區(qū)域圖像的方法,即通過仿射變換將不同位置、不同姿勢以及不同大小的圖像歸一化到同一位置尺度。
(4)
將矩陣簡寫為Z=Nk,Z是平均人臉的5點(diǎn)坐標(biāo)值矩陣;N是通過人臉定位后的5點(diǎn)坐標(biāo);k為仿射變換矩陣。通過最小二乘法求出方程的解k=(NTN)-1NTZ。檢測定位出的不同姿勢、不同位置以及不同大小的圖像歸一化到同一位置尺度的圖像。本文選取學(xué)生上課最有可能出現(xiàn)的姿勢,分別是歪著頭和手托著頭聽課,通過歸一化操作,效果如圖5所示。
圖5 歸一化操作
經(jīng)過歸一化操作之后,需要對目標(biāo)區(qū)域的圖像進(jìn)行快速提取。由于特征點(diǎn)較少,所以對目標(biāo)區(qū)域外接一個最小面積的矩形,來獲取目標(biāo)區(qū)域,效果如圖6所示。
圖6 眼、口提取效果圖
在對眼睛、嘴部進(jìn)行狀態(tài)分類時,考慮到待分類的圖片尺寸較小,所提取的特征圖像排除了眉毛和鼻子的干擾,使得圖像特征得到了簡化??紤]到教室空間有限而且檢測又要有較高的準(zhǔn)確性和實時性要求,因此使用網(wǎng)絡(luò)結(jié)構(gòu)較為簡單的網(wǎng)絡(luò)進(jìn)行模型訓(xùn)練,模型結(jié)構(gòu)如下圖7所示。
圖7 眼、口狀態(tài)識別網(wǎng)絡(luò)
網(wǎng)絡(luò)一共包含3個卷積層,第一層和第二層的卷積核為32,第三層卷積層為64,卷積核的大小均為5。除了第一個池化層采用最大池化方式,其余兩個均為平均池化,共計3個池化層,共有兩個全連接層,神經(jīng)元的個數(shù)分別為64和2,識別效果如圖8所示。
圖8 眼、口狀態(tài)識別效果
學(xué)生在疲勞時會出現(xiàn)閉眼時間較長和打哈欠頻率較高的情況,為了更為準(zhǔn)確的檢測疲勞狀態(tài),本文將眼部和嘴部的情況相結(jié)合來綜合判斷。
根據(jù)人的面部特征判斷疲勞狀態(tài)時,卡內(nèi)基梅隆研究所提出的PERCLOS方法是一種較為常用的檢測方法,在所選取的時間范圍內(nèi),人眼處于閉合狀態(tài)所占時間的百分比,計算公式如公式(5)所示:
(5)
其中,P表示一定時間內(nèi),眼睛處于閉合狀態(tài)的時間占據(jù)比;Nc表示某段時間內(nèi)眼睛閉合狀態(tài)的幀數(shù)量;Nt表示該時間段內(nèi)的總幀數(shù)量。根據(jù)經(jīng)驗,當(dāng)計算值≥0.4時,就表示學(xué)生處于疲勞狀態(tài),否則為正常狀態(tài)。
當(dāng)學(xué)生處于疲勞狀態(tài)時另一個特征就是打哈欠,因此可以通過嘴部開合狀態(tài)和張開的時間來判斷學(xué)生是否疲勞。但是在檢測過程中,首先要排除說話這一重要干擾因素。據(jù)研究,人打一次哈欠的時間大約在3 s,而說話時嘴巴處于不停的開閉合狀態(tài),因此可以通過改進(jìn)的MAR機(jī)理來進(jìn)行哈欠判定。由于嘴部在運(yùn)動時是處于整體運(yùn)動的,而且嘴部區(qū)域共有8個特征點(diǎn),如圖9所示。所以使用嘴唇內(nèi)部坐標(biāo)進(jìn)行計算,通過嘴唇縱橫比的值MAR來判斷是否疲勞,如公式(6)所示。
圖9 嘴唇區(qū)域坐標(biāo)
(6)
權(quán)威研究發(fā)現(xiàn),當(dāng)MAR值>0.9時,可判定為學(xué)生處于疲勞狀態(tài)。
為了更為準(zhǔn)確地檢測判定疲勞狀態(tài),本文將眼部疲勞和嘴部疲勞特征相融合,若P≥0.4, 或MAR≥0.9時學(xué)生處于疲勞狀態(tài)。本文提出新的綜合判斷法,如公式(7)所示:
T=α1P+α2Q
(7)
其中,T為綜合疲勞度;P為PERCLOS值;Q為MAR值;a1和a2為權(quán)重,并且a1+a2=1。經(jīng)過多組實驗可得到P的閾值為0.5,即P≥0.5,學(xué)生處于疲勞狀態(tài)。a1為0.8,a2為0.2。
為了解決睜閉眼、張閉嘴樣本不均衡的問題,本文通過對ZJU眨眼視頻數(shù)據(jù)集采集包括睜閉眼兩種狀態(tài)共計約9 000張圖片,其中1 000張圖片(±樣本各500張)用于后續(xù)的模型測試,其余的樣本則用于訓(xùn)練。
嘴部數(shù)據(jù)集則是通過YawDD疲勞駕駛視頻數(shù)據(jù)集和其它視頻數(shù)據(jù)集所采集的嘴部樣本。為了提升嘴部樣本數(shù)量,本文對樣本進(jìn)行垂直旋轉(zhuǎn)和水平翻轉(zhuǎn)得到樣本數(shù)量共計2 000張,其中200張(±樣本各100張)用于模型的測試,其余的樣本則用于模型訓(xùn)練,部分樣本如圖10所示。
圖10 部分?jǐn)?shù)據(jù)樣本
Windows10操作系統(tǒng),Intel Core i5-8300H,8GB內(nèi)存,python3.5編程語言,Tensorflow1.7框架,顯卡型號GeForce GTX1060。
為了進(jìn)一步驗證本文所提出方法的優(yōu)越性,在相同實驗條件下,分別與MTCNN結(jié)合隨機(jī)森林[9]的方法以及Adaboost結(jié)合CLM[10]的方法進(jìn)行對比,結(jié)果見表1。分別使用3種方法在100張人臉圖像上進(jìn)行測試。
表1 眼、嘴部狀態(tài)分類測試結(jié)果
由實驗結(jié)果可知,本文提出的方法在準(zhǔn)確率上具備了一定的優(yōu)越性,并且時間開銷上能滿足實時性要求。本文通過簡化圖像特征,使得利用結(jié)構(gòu)簡單的網(wǎng)絡(luò)實現(xiàn)眼、嘴部狀態(tài)分類成為可能。
為了清晰的展示運(yùn)行效果,依據(jù)PERCLOS疲勞判斷標(biāo)準(zhǔn),本文用實時視頻進(jìn)行測試,測試效果如圖11所示。
圖11 疲勞檢測系統(tǒng)示意
本文提出疲勞檢測方式的實時性也極高,能夠及時的幫助老師發(fā)現(xiàn)疲勞學(xué)生,加以提醒,提高課堂教學(xué)效果。
本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的多特征融合學(xué)生課堂疲勞檢測算法。在MTCNN的基礎(chǔ)上通過歸一化操作完成眼、嘴部區(qū)域的精確定位,并且將眼嘴部疲勞狀態(tài)相結(jié)合實現(xiàn)多特征融合的疲勞檢測方法。對比采用單一的特征進(jìn)行檢測,識別率有了明顯的提升,說明本文所提方法能夠提高系統(tǒng)判斷的準(zhǔn)確性。但是教室是個很復(fù)雜的環(huán)境,如何更加全面的檢測到每個學(xué)生的狀態(tài),從而實現(xiàn)真正意義上的智慧課堂與智慧教育還需要進(jìn)一步研究。