陳 藩, 施一萍, 胡佳玲, 謝思雅, 劉 瑾
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海 201620)
在課堂學(xué)習(xí)中,學(xué)生的學(xué)習(xí)狀態(tài)對學(xué)生的成績有著重要影響。因此分析學(xué)生課堂學(xué)習(xí)是否疲勞能很好的幫助老師了解學(xué)生注意力情況,為教學(xué)評級、教學(xué)質(zhì)量分析以及教學(xué)改進(jìn)提供重要參考。傳統(tǒng)的疲勞檢測是在眼睛、嘴唇兩個面部特征的基礎(chǔ)上利用規(guī)則分類[1]的方式進(jìn)行疲勞判斷,但這種方法準(zhǔn)確率不高。也有一些學(xué)者[2~4]提出了Adaboost濾波器法以及級聯(lián)回歸法來進(jìn)行疲勞識別,但實(shí)時(shí)性不強(qiáng)[5]。對此,本文提出一種基于改進(jìn)多任務(wù)級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)(multi-task cascaded convolutional neural networks,MTCNN)[6]的疲勞檢測算法來實(shí)現(xiàn)學(xué)生疲勞狀態(tài)的檢測。在MTCNN的基礎(chǔ)上級聯(lián)眼部定位網(wǎng)絡(luò)通過多任務(wù)約束學(xué)習(xí)實(shí)現(xiàn)眼部精準(zhǔn)定位,再對眼、嘴狀態(tài)進(jìn)行識別[7],實(shí)現(xiàn)學(xué)生課堂疲勞狀態(tài)檢測,提高了檢測方法的準(zhǔn)確率與實(shí)時(shí)性。
MTCNN是一種聯(lián)合人臉邊界框和關(guān)鍵點(diǎn)的檢測的算法,它是目前在人臉以及關(guān)鍵點(diǎn)檢測定位中的最佳方法之一,主要流程如圖1所示。
MTCNN首先將圖像進(jìn)行不同尺度的變換,構(gòu)造圖像金字塔,如圖1所示,然后分別輸入到3個級聯(lián)網(wǎng)絡(luò)結(jié)構(gòu):P-Net,R-Net,0-Net。

圖1 MTCNN算法流程
對于MTCNN而言,主要完成3個任務(wù)。
1)人臉分類:此任務(wù)通過交叉熵?fù)p失函數(shù)來實(shí)現(xiàn),其中,Pi為人臉的概率,yi為真實(shí)類別的標(biāo)簽,若為人臉,則為值1,若不是則值為0。公式如下所示
(1)
(2)
3)面部關(guān)鍵點(diǎn)定位:由于人臉關(guān)鍵點(diǎn)檢測類似于邊界框回歸任務(wù),可通過最小化歐氏距離回歸獲得人臉關(guān)鍵點(diǎn)坐標(biāo),公式如下所示
(3)

根據(jù)對MTCNN分析可知,它的主要任務(wù)是人臉檢測。P-Net 和R-Net主要是為了完成人臉候選窗的提取和篩選,并通過將它和人臉特征點(diǎn)信息相結(jié)合來提高網(wǎng)絡(luò)提取信息的有效性,只有O-Net才能確定人臉特征點(diǎn)位置。然而當(dāng)人臉被遮擋或者頭部姿勢變化很大時(shí),O-Net網(wǎng)絡(luò)很難實(shí)現(xiàn)人臉關(guān)鍵點(diǎn)的精確定位。因此,為了提高眼睛定位的準(zhǔn)確性,本文對MTCNN網(wǎng)絡(luò)進(jìn)行了改進(jìn),通過再級聯(lián)一個眼睛定位網(wǎng)絡(luò),從而使得人眼定位更加精確。
考慮到人眼定位并不是一個獨(dú)立的問題,它會受到諸如頭部姿勢、遮擋、年齡、性別等眾多因素的影響,因此,有效地發(fā)現(xiàn)和利用這些因素之間的內(nèi)在相關(guān)性將有助于更準(zhǔn)確的定位人眼。通過將頭部姿勢和是否佩戴眼鏡分別作為輔助任務(wù)一和輔助任務(wù)二,以任務(wù)約束學(xué)習(xí)的方式來優(yōu)化眼睛定位主要任務(wù)。眼睛定位(eye positioning,EP)網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示。其中,第一個卷積層采用了5×5大小的卷積核,第二個以及第三個卷積層采用了3×3大小的卷積核,第四個卷積層采用了2×2大小的卷積核。池化層采用2×2的最大值池化。最后進(jìn)行眼睛定位主任務(wù)和頭部姿勢變化、是否佩戴眼睛輔助任務(wù)。其中,所有卷積步長為1,池化層步長為2。

圖2 眼睛定位(EP)網(wǎng)絡(luò)
由于該網(wǎng)絡(luò)需要用于實(shí)現(xiàn)多任務(wù)學(xué)習(xí),因此,每個卷積層都包含著產(chǎn)生多個特征映射的過濾器組。傳統(tǒng)的多任務(wù)學(xué)習(xí)主要是通過共同學(xué)習(xí)來提高多個相關(guān)任務(wù)的泛化能力。比如總共有T個任務(wù),那么它的損失函數(shù)為所有不同任務(wù)的損失函數(shù)的和,可表示為
(4)


(5)
式中r為主要任務(wù),a為輔助任務(wù),為了簡化起見,將正則化項(xiàng)給省略。
在眼、嘴部狀態(tài)識別過程中,由于待分類的眼部及嘴部目標(biāo)區(qū)域圖像尺寸較小,而且經(jīng)過定位網(wǎng)絡(luò)有效的眼部圖像,圖像特征得到了簡化。考慮到疲勞檢測的有效性和實(shí)時(shí)性。所以選取輸入尺寸小,結(jié)構(gòu)簡單的網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,眼嘴部狀態(tài)識別(state recognition,SR)網(wǎng)絡(luò),如圖3。

圖3 眼、嘴狀態(tài)識別網(wǎng)絡(luò)(SR)
其中,卷積層均采用了5×5,步長為1的卷積核,池化層采用2×2,步長為2的最大值池化。識別效果如圖4。

圖4 眼睛與嘴部狀態(tài)
在神經(jīng)網(wǎng)絡(luò)中,常用的激活函數(shù)如ReLU在訓(xùn)練過程中會因?yàn)樘荻认Ф斐蔁o法收斂。因?yàn)镽eLU在x<0時(shí)梯度為0,這樣就導(dǎo)致負(fù)的梯度在這個區(qū)間被置零,這樣這個神經(jīng)元就再也不會被任何數(shù)據(jù)激活。為了解決這一問題,本文采用Leaky ReLU作為激活函數(shù),當(dāng)x<0時(shí),它的值不再是0,而是一個較小斜率(如0.01等)的函數(shù)。即f(x)=1(x<0)(ax)+1(x≥0)(x),其中a是一個很小的常數(shù)。這樣不僅能夠修正數(shù)據(jù)分布,同時(shí)又能留了一些負(fù)軸的值。這樣避免神經(jīng)元失活而造成數(shù)據(jù)丟失。
根據(jù)人的面部特征[8,9]判斷疲勞狀態(tài)時(shí),卡內(nèi)基梅隆研究所提出的PERCLOS方法是一種較為常用的檢測方法。它是指在所選取的時(shí)間范圍內(nèi),人眼處于閉合狀態(tài)所占時(shí)間的百分比。其計(jì)算公式如下
(6)
根據(jù)經(jīng)驗(yàn)可以知道,當(dāng)計(jì)算值大于等于0.4時(shí),就表示學(xué)生處于疲勞狀態(tài),否則即為正常狀態(tài)。另外,人在疲勞的狀態(tài)下,不但會不停的眨眼睛還會打哈欠。所以本文也將打哈欠考慮在疲勞判別的過程中。根據(jù)研究表明,人打哈欠的時(shí)長一般為3~5 s。因此本文選取3 s作為是否打哈欠的判斷標(biāo)準(zhǔn),以此協(xié)助眼部判定從而更為準(zhǔn)確的判斷學(xué)生是否疲勞。
在本文樣本收集過程中,為了解決睜閉眼、張閉嘴樣本不均衡的問題,通過對ZJU[10]眨眼視頻數(shù)據(jù)集采集包括睜閉眼兩種狀態(tài)共計(jì)約9 000張圖片,其中1 000張圖片(正負(fù)樣本各500張)用于后續(xù)的模型測試,其余的樣本則用于訓(xùn)練。
嘴部數(shù)據(jù)集則是通過YawDD[11]疲勞駕駛視頻數(shù)據(jù)集和其他視頻數(shù)據(jù)集所采集的嘴部樣本。為了提升嘴部樣本數(shù)量,本文通過對樣本進(jìn)行垂直旋轉(zhuǎn)和水平翻轉(zhuǎn)得到樣本數(shù)量共計(jì)2 000張,其中200張(正負(fù)樣本各100張)用于模型的測試,其余的樣本則用于模型訓(xùn)練,部分樣本如圖5。

圖5 部分?jǐn)?shù)據(jù)樣本
Windows10操作系統(tǒng),Intel?CoreTMi5—8300H,8 GB內(nèi)存,Python3.5編程語言,Tensorflow1.7框架,顯卡型號GeForce GTX1060。
本文將所提出的檢測方法與參考文獻(xiàn)[12,13]所提出的進(jìn)行對比。由于眼部存在戴眼鏡,手扶著頭等干擾因素,因此更能檢驗(yàn)本文算法的性能。
由實(shí)驗(yàn)結(jié)果如表1所示,可知,本文提出的方法無論是在準(zhǔn)確率還是在時(shí)間開銷上都要比參考文獻(xiàn)[12,13]所提出的方法要好。并且本文通過簡化圖像特征,使得利用結(jié)構(gòu)簡單的網(wǎng)絡(luò)實(shí)現(xiàn)眼、嘴部狀態(tài)分類成為可能。

表1 眼、嘴部狀態(tài)分類測試結(jié)果
4.3.1 算法測試效果
本文采集了5位測試者在教室的學(xué)習(xí)狀態(tài)短視頻,包含了不同性別以及是否配戴眼鏡的情況。并且讓測試者做出不同的疲勞行為,結(jié)果如表2所示。

表2 眨眼、哈欠行為測試結(jié)果
由測試結(jié)果可以看出,本文的疲勞檢測算法在實(shí)際環(huán)境中展現(xiàn)出了較高的準(zhǔn)確率。
4.3.2 實(shí)時(shí)測試效果
為了清晰地展示運(yùn)行效果,依據(jù)PERCLOS疲勞判斷標(biāo)準(zhǔn),本文用實(shí)時(shí)視頻來進(jìn)行測試。測試效果如圖6所示。

圖6 疲勞檢測系統(tǒng)示意
由圖6可知,本文提出疲勞檢測方式的實(shí)時(shí)性也極高,能夠及時(shí)地幫助老師發(fā)現(xiàn)疲勞學(xué)生,并且加以提醒,提高課堂教學(xué)環(huán)境。
本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的學(xué)生課堂疲勞檢測算法。在MTCNN的基礎(chǔ)上級聯(lián)了新的神經(jīng)網(wǎng)絡(luò)并結(jié)合任務(wù)約束學(xué)習(xí)的方式實(shí)現(xiàn)眼部的精準(zhǔn)定位,同時(shí)結(jié)合嘴部疲勞狀態(tài)實(shí)現(xiàn)多特征融合的疲勞檢測方法,并且采用了全新的激活函數(shù),避免了神經(jīng)元失活的影響。實(shí)驗(yàn)結(jié)果表明:本文提出的方法不僅有著較高的準(zhǔn)確率而且實(shí)時(shí)性良好。但教室是個很復(fù)雜的環(huán)境,要能更加準(zhǔn)確及時(shí)地判定每位同學(xué)的狀態(tài)還需要進(jìn)一步研究,從而實(shí)現(xiàn)真正意義上的智慧課堂與智慧教育。