黃麗鳳,陳建華
(泉州信息工程學(xué)院軟件學(xué)院,福建 泉州 362000)
科學(xué)技術(shù)的發(fā)展帶動(dòng)遠(yuǎn)程教育,使其成為了一種在某些特殊情況下非常有效的教育方式[1]。遠(yuǎn)程教育不僅學(xué)習(xí)方式靈活,時(shí)間安排自由,資源利用率高,更能夠?yàn)閷W(xué)生提供較好的師資和豐富的學(xué)習(xí)資源,更加滿足了學(xué)生的個(gè)性學(xué)習(xí)需求。但遠(yuǎn)程教育由于師生之間沒有面對面授課,彼此之間互動(dòng)性不足,監(jiān)管力度不夠,個(gè)別學(xué)生學(xué)習(xí)主動(dòng)性不積極,容易產(chǎn)生較差的學(xué)習(xí)效果。同時(shí),遠(yuǎn)程教育中,通常由學(xué)生獨(dú)自完成,沒有家長或者教師的監(jiān)督,因此,在學(xué)習(xí)過程中,極容易出現(xiàn)走神和磕睡等情況[2]。為了約束網(wǎng)課課堂,幫助教師了解學(xué)生在網(wǎng)絡(luò)課堂中是否具有疲勞狀態(tài)并根據(jù)學(xué)生的疲勞狀態(tài)作出相應(yīng)的預(yù)警是目前遠(yuǎn)程教育需要研究的一個(gè)問題。
目前,基于計(jì)算機(jī)視覺的人臉識(shí)別疲勞檢測是一個(gè)研究熱點(diǎn)。張闖[3]等提出了基于人臉特征的MTCNN檢測方法,根據(jù)人臉面部特征計(jì)算眼睛縱橫比,眼睛閉合百分比和嘴巴縱橫比,然后按不同的權(quán)重相加得到疲勞值,根據(jù)疲勞值判定駕駛員疲勞程度并對其提出預(yù)警。該方法能夠有效地檢測出駕駛員正視的狀態(tài),如果駕駛員的頭部發(fā)生偏轉(zhuǎn),檢測出來的結(jié)果就會(huì)有一定的誤差。陳潘等提出了基于卷積神經(jīng)網(wǎng)絡(luò)的學(xué)生課堂疲勞檢測算法,通過Leaky ReLU定位眼部特征[4],融合嘴部特征狀態(tài)進(jìn)行疲勞檢測,據(jù)此判定學(xué)生上課的疲勞狀態(tài)。武昆亮等[6]提出了一種基于眼部特征與頭部姿態(tài)自適應(yīng)的疲勞檢測系統(tǒng)。通過BFR(Blinking Frequency ratio)與頭部姿態(tài)算法進(jìn)行綜合判定[6],檢測出疲勞狀態(tài),但參數(shù)過于單一?;谇懊嫜芯糠椒ㄖ械牟蛔愫陀?jì)算機(jī)視覺研究的發(fā)展,本文提出了一種改進(jìn)的面部多特征融合疲勞檢測算法[5]。
本文以2020級軟件工程1班學(xué)生為研究對象,要求學(xué)生在網(wǎng)課期間打開攝像頭。首先,通過學(xué)生端攝像頭識(shí)別學(xué)生的眼睛、嘴巴關(guān)鍵特征點(diǎn),實(shí)時(shí)計(jì)算學(xué)生眼部的縱橫比Er值和嘴部縱橫比Mr值,采用了眼部自適應(yīng)閉眼閾值和基于歐拉角的特征校正算法降低了個(gè)體中由于眼睛大小不同,頭部偏轉(zhuǎn)所產(chǎn)生的面部特征偏差,進(jìn)一步提高了檢測算法的準(zhǔn)確性。接著計(jì)算學(xué)生眨眼頻率、眼睛閉合時(shí)間、打哈欠頻率等數(shù)據(jù),并對這些數(shù)據(jù)進(jìn)行加權(quán)求和,得出學(xué)生的疲勞狀態(tài)。最后根據(jù)學(xué)生的疲勞狀態(tài)提示學(xué)生。這樣可以實(shí)時(shí)地監(jiān)測學(xué)生磕睡情況,有效提高網(wǎng)課課堂的教學(xué)管理和教學(xué)質(zhì)量,起到輔助教師管理課堂的功能。
計(jì)算機(jī)視覺技術(shù)廣泛應(yīng)用于人臉識(shí)別,比如人臉打卡考勤、人臉賬單支付等。本文主要利用計(jì)算機(jī)視覺技術(shù)[8],實(shí)現(xiàn)基于多特征因素融合檢測學(xué)生在網(wǎng)絡(luò)課堂中是否有疲勞狀態(tài)。研究主要包括三個(gè)過程:1)采用OpenCV結(jié)合PHOG算法,通過學(xué)生端攝像頭,檢測學(xué)生的面部區(qū)域,如果末檢測到面部,表明學(xué)生開著視頻,并沒有在上課,教師給予警告;如果檢測到學(xué)生的面部區(qū)域,利用Dlib工具包標(biāo)定學(xué)生的眼睛、嘴巴、面部等關(guān)鍵特征的坐標(biāo)點(diǎn)。2)根據(jù)眼睛、嘴巴、頭部的關(guān)鍵點(diǎn)坐標(biāo)位置,計(jì)算出學(xué)生在平視狀態(tài)和不同頭部姿態(tài)下校正的眼睛縱橫比Er值,嘴巴縱橫比Mr值。3)根據(jù)Er和Mr的閾值,計(jì)算出學(xué)生在課堂中的眨眼頻率fblink,PERCLOS和打哈欠頻率fyawn,按照不同的權(quán)重對這三個(gè)特征融合相加,等到疲勞(Fat)值,根據(jù)Fat值判斷學(xué)生是否有疲勞現(xiàn)象,并對有出現(xiàn)疲勞現(xiàn)象的學(xué)生進(jìn)行分級并對學(xué)生提出相應(yīng)的預(yù)警,系統(tǒng)實(shí)現(xiàn)流程圖如圖1。
圖1 系統(tǒng)實(shí)現(xiàn)流程圖
本文人臉檢測算法采用改進(jìn)的PHOG(Pyramid Histogram of Oriented Gradients,分層梯度方向直方圖)[8]。1)為了降低人臉在不同的環(huán)境中受光照強(qiáng)度和陰影等因素的影響,抑制圖像的噪聲干擾,用式(1-2)灰度化和歸一化處理圖像;2)根據(jù)圖像的像素點(diǎn)f(x,y)利用式(3-5)分別計(jì)算水平x方向和垂直y方向的梯度以及梯度幅值和梯度方向。3)將圖像分成若干個(gè)稱為單元格cell區(qū)域,然后統(tǒng)計(jì)每一個(gè)cell的梯度大小和方向,建立梯度方向直方圖。4)將多個(gè)cell單元組合在一個(gè)連通的大區(qū)域塊block中,然后對每個(gè)block進(jìn)行對比度歸一化處理,串聯(lián)出圖像的特征;最后將圖片分割成不同尺度,計(jì)算出每個(gè)尺度的HOG值并將這些HOG值按順序拼接,得到Phog特征。如圖2。
圖2 人臉關(guān)鍵點(diǎn)識(shí)別
利用PHOG算法,可以在各種不同的情況下檢測出人臉并識(shí)別出眼睛、嘴巴等特征的關(guān)鍵點(diǎn)信息,如圖3。
圖3 人臉68個(gè)關(guān)鍵點(diǎn)定位
根據(jù)人體生理研究發(fā)現(xiàn),當(dāng)一個(gè)人處于疲勞狀態(tài)時(shí),面部會(huì)出現(xiàn)眨眼頻繁,嘴巴張大打哈欠,眼睛閉合等現(xiàn)象。因此,學(xué)生是否處于疲勞狀態(tài)可以通過人體面部特征進(jìn)行判斷。
1)眼睛縱橫比
人體疲勞狀態(tài)的一種有效判斷方法是眼部的運(yùn)動(dòng)和眨眼信息。實(shí)時(shí)計(jì)算眼睛縱向坐標(biāo)與橫向坐標(biāo)之間的歐式距離比值[10]得到的眼睛縱橫比是眼部疲勞檢測有效的方法之一。根據(jù)前面dlib 提取人臉的68個(gè)點(diǎn)可以得到眼睛的特征點(diǎn)。假設(shè)以右眼為例,如圖4。用式(1)計(jì)算眼睛Er值。
圖4 眼睛特征點(diǎn)標(biāo)定
(1)
由于人的眼睛有大有小,存在差異,為了減少這種差異帶來的Er值精準(zhǔn)性判斷,本文在閉眼閾值中加入了自適應(yīng)計(jì)算。這樣可以根據(jù)單位時(shí)間Er值的變化范圍相對準(zhǔn)確地計(jì)算出不同人的閉眼閾值,自適應(yīng)閉眼閾值Ert[12]用式(2)計(jì)算。
Ert=Ermin+q*(Ermax-Ermin)
(2)
其中q取值0.2。
2)嘴巴縱橫比
人體疲勞狀態(tài)的另一種有效參考依據(jù)是嘴巴的張大程度。dlib 提取人臉的68個(gè)點(diǎn)中分別用12個(gè)點(diǎn)表示嘴巴外輪廓和8個(gè)點(diǎn)表示嘴巴內(nèi)輪廓,由于嘴巴內(nèi)部更能表示嘴巴的張開程度[13],因此,在這里計(jì)算8個(gè)點(diǎn)的內(nèi)輪廓。嘴巴內(nèi)輪廓如圖5,用式(3)計(jì)算嘴巴Mr值。
圖5 嘴巴內(nèi)輪廓特征點(diǎn)標(biāo)定
(3)
頭部姿態(tài)指的是人體在3D空間中頭部發(fā)生偏轉(zhuǎn)產(chǎn)生的。頭部姿態(tài)通常指的是人的抬頭、低頭、搖頭和轉(zhuǎn)頭等狀態(tài)。當(dāng)人的頭部姿態(tài)發(fā)生變化時(shí),檢測出來眼睛和嘴巴張開的長寬就會(huì)發(fā)生變化。在人臉特征中,眼睛和嘴巴張開的寬度長度比值是決定Er值和Mr值的關(guān)鍵。但由于頭部姿態(tài)位置的不同,Er值和Mr值也隨之變化。因此,在人臉檢測中,需要對特征數(shù)據(jù)進(jìn)行校正。
通常來說,頭部姿態(tài)可以表示成俯仰角(抬低頭)、偏航角(搖頭)及翻滾角(轉(zhuǎn)頭)組成的歐拉角。下面以學(xué)生抬頭低頭為例,分析Er值的校正。
當(dāng)學(xué)生出現(xiàn)抬頭或低頭現(xiàn)象時(shí),人臉頭像映射到圖像時(shí),俯仰角和眼睛長度發(fā)生變化,而眼睛的寬度不變。假設(shè)平視狀態(tài)下測得學(xué)生眼睛長度為h0,俯仰角為α0,而在點(diǎn)頭或抬頭狀態(tài)下測得眼睛長度為h1,俯仰角為α1[11],因此有:
(4)
公式轉(zhuǎn)換可得:
(5)
同理推斷,學(xué)生在搖頭時(shí),w0和w1表示學(xué)生在平視和搖頭時(shí)眼睛映射的長度,β0和β1表示學(xué)生在平視和搖頭時(shí)眼睛的偏航角。因此有
(6)
所以,當(dāng)學(xué)生頭部發(fā)生變化時(shí),眼睛的縱橫比Er1可表示為:
(7)
(8)
同理,學(xué)生在平視姿態(tài)下嘴巴長寬比Mr0和頭部姿態(tài)發(fā)生變化時(shí)嘴巴長寬比Mr1的關(guān)系可表示為
(9)
根據(jù)學(xué)生上課時(shí)眼睛的正常活動(dòng),當(dāng)眼睛平視屏幕時(shí),Er值會(huì)保持在設(shè)定的閾值0.28之間,當(dāng)眼睛睜到一定時(shí)間,會(huì)出現(xiàn)眨眼現(xiàn)象,這時(shí)Er值會(huì)迅速下降,間隔幾幀后眼睛睜開,Er值又回到閾值周圍,保持相對平穩(wěn)的狀態(tài)。但是當(dāng)學(xué)生出現(xiàn)疲勞時(shí),眼睛閉上時(shí)間較長,Er值偏離閾值的持續(xù)幀數(shù)較長。學(xué)生不同狀態(tài)的Er值波動(dòng)折線圖如圖6和圖7。
圖7 眼睛疲勞Er值分布
根據(jù)學(xué)生上課時(shí)嘴巴的正?;顒?dòng),當(dāng)學(xué)生沒有張嘴,認(rèn)真聽課時(shí),Mr值保持在一個(gè)相對平穩(wěn)的閾值中,當(dāng)張嘴回答問題時(shí),嘴巴張大,Mr偏離閾值,但是又迅速回歸平穩(wěn)。但是當(dāng)學(xué)生出現(xiàn)打哈欠情況時(shí),Mr值會(huì)持續(xù)偏離閾值并保留一定的時(shí)間。學(xué)生不同狀態(tài)的Mr值波動(dòng)折線圖如圖8和圖9。
圖8 嘴巴正常說話Mr值分布
圖9 嘴巴打哈欠Mr值分布
1)PERCLOS
卡內(nèi)基梅隆研究所經(jīng)過反復(fù)的實(shí)驗(yàn)與論證,提出了度量疲勞的物理量PERCLOS[12]。該算法是目前被國際上公認(rèn)的最有效的疲勞檢測算法。PERCLOS指測得眼睛在單位時(shí)間內(nèi)閉合時(shí)間和總時(shí)間的占比,用式(10)計(jì)算,其中,單位時(shí)間指的是1分鐘。本系統(tǒng)的眼部疲勞判定采用實(shí)驗(yàn)證明效果最好的P80標(biāo)準(zhǔn)。
(10)
2) 眨眼頻率
表3中A1、A2、B1區(qū)域?yàn)榭珊雎燥L(fēng)險(xiǎn)區(qū)域. 風(fēng)險(xiǎn)水平可接受,當(dāng)前風(fēng)險(xiǎn)應(yīng)對措施有效,無須采取額外的技術(shù)、管理等控制措施;
人體的一種正常生理現(xiàn)象是眨眼,一般來說,正常人平均每分鐘眨眼的次數(shù)是15~20次,如果一個(gè)人在一分鐘內(nèi)眨眼超過二十次甚至高達(dá)四十次,就可以判斷為眨眼睛頻率,用式(11)計(jì)算。當(dāng)人處于疲勞時(shí),眨眼的頻率會(huì)隨著疲勞的加深而逐漸明顯。因此,本系統(tǒng)把眨眼頻率也做為疲勞狀態(tài)的判定標(biāo)準(zhǔn)之一。
(11)
3) 打哈欠頻率
當(dāng)人處于疲勞狀態(tài)時(shí),嘴巴會(huì)張開再閉合,出現(xiàn)打哈欠現(xiàn)象。因此,可以根據(jù)嘴巴這一特征用式(12)計(jì)算打哈欠頻率,這也是評價(jià)疲勞狀態(tài)的另一個(gè)重要指標(biāo)。
(12)
4) 疲勞特征融合
由于每個(gè)個(gè)體在不同方面表現(xiàn)存在差異,如果單靠某一特征進(jìn)行疲勞判定可能出現(xiàn)誤差,準(zhǔn)確率較低。因此,在疲勞狀態(tài)判定時(shí),需要從多個(gè)方面進(jìn)行考慮,比如人體的眨眼頻率,打哈欠的頻率,眼瞼閉合時(shí)間占比等。本系統(tǒng)用式(13)采用對不同的疲勞特征賦予不同的權(quán)重進(jìn)行加權(quán)求和融合計(jì)算。
Fat=α0*PERCLOS+α1*fblink+α2*fyawn
(13)
本文通過網(wǎng)課模擬實(shí)驗(yàn)采集監(jiān)測圖像樣本數(shù)據(jù)集。在該數(shù)據(jù)集中,包含了50名學(xué)生自愿者模擬了在不同室內(nèi)光照下呈現(xiàn)的正常狀態(tài)和疲勞狀態(tài)。為了保證實(shí)驗(yàn)結(jié)果的準(zhǔn)確性,攝像頭的拍攝分辨率是每秒30幀,每個(gè)視頻采集持續(xù)7秒。經(jīng)過重復(fù)5次實(shí)驗(yàn)測試,將檢測結(jié)果分成了幾個(gè)不同的疲勞等級。
根據(jù)人體生理特征表現(xiàn),當(dāng)一個(gè)人處于嚴(yán)重疲勞時(shí),閉眼瞌睡的癥狀比如眨眼、打哈欠更明顯。因此,綜合疲勞狀態(tài)與每個(gè)特征的關(guān)聯(lián)及對各項(xiàng)指標(biāo)的認(rèn)識(shí),分別給不同特征分配不同的權(quán)重。為了使實(shí)驗(yàn)數(shù)據(jù)更有說服力,分別選擇了兩組不同的權(quán)重來對疲勞特征融合。見表1。
表1 各疲勞特征權(quán)重分配
根據(jù)疲勞特征融合公式及疲勞等級分配的權(quán)重,可以計(jì)算機(jī)出融合后的疲勞等級,見表2。
表2 疲勞等級劃分表
傳統(tǒng)的疲勞特征計(jì)算采用的是單特征完成,本文利用的是多特征的融合計(jì)算疲勞特征,不同的計(jì)算結(jié)果見表3。
表3 不同特征的疲勞分析表
不同特征不同權(quán)重計(jì)算出來的疲勞值見表4。
表4 不同特征不同權(quán)重的疲勞分析表
從上表可以看出,當(dāng)學(xué)生出現(xiàn)多特征疲勞狀況時(shí),分配的疲勞特征分配的權(quán)重不同,計(jì)算出來的結(jié)里也有差異,方案1更為精確。因此,本文采用方案1的物權(quán)重對疲勞值進(jìn)行計(jì)算。
如果采用單特征進(jìn)行疲勞檢測,當(dāng)學(xué)生吃東西或者大笑時(shí),會(huì)影響檢測的準(zhǔn)確率,為了進(jìn)一步驗(yàn)證本文提出方法的有效性,隨機(jī)抽取6段學(xué)生網(wǎng)課視頻數(shù)據(jù)進(jìn)行分析。實(shí)驗(yàn)結(jié)果見表5。
表5 兩種疲勞檢測方法數(shù)據(jù)對比
根據(jù)多特征融合計(jì)算出學(xué)生網(wǎng)課時(shí)的狀態(tài)。以實(shí)際檢測到的數(shù)值對學(xué)生的疲勞狀態(tài)進(jìn)行分級,當(dāng)出現(xiàn)嚴(yán)重疲勞時(shí),給予”warning”提醒,當(dāng)出現(xiàn)輕度疲勞時(shí),給予“Attention”提醒。效果如圖10。
圖10 學(xué)生上課狀態(tài)截圖
本文提出的學(xué)生網(wǎng)課疲勞檢測方法能及時(shí)有效地檢測出學(xué)生在網(wǎng)課中的疲勞狀態(tài),幫助教師發(fā)現(xiàn)并提醒學(xué)生,提升課堂管理水平,保證網(wǎng)課課堂教學(xué)質(zhì)量。該方法通過具有更強(qiáng)抗干擾能力的PHOG算法對人臉進(jìn)行標(biāo)定,通過計(jì)算眼睛縱橫比(Er)和嘴巴縱橫比(Mr),得到學(xué)生臉部的實(shí)時(shí)特征。為了減少不同個(gè)體的眼睛大小、頭部姿態(tài)對Er值和Mr值的影響,采用了眼部自適應(yīng)閉眼閾值和基于歐拉角的特征校正。最后分別為不同的疲勞特征設(shè)置權(quán)重,融合加權(quán)計(jì)算,得到學(xué)生的疲勞值,解決了單一特征疲勞值計(jì)算容易受外界影響的問題,進(jìn)一步提高了檢測的準(zhǔn)確性。實(shí)驗(yàn)表明,在學(xué)生網(wǎng)課疲勞檢測中,本文的算法準(zhǔn)確性較高,實(shí)時(shí)性較好,對監(jiān)管網(wǎng)課課堂、提升網(wǎng)課教學(xué)質(zhì)量有明顯的作用。