陳旭鳳 韓佳輝
摘 要:現(xiàn)代教育領(lǐng)域仍然是以教師與學(xué)生一對多的模式為主,這樣就導(dǎo)致了教師在教學(xué)環(huán)境中既要完成教學(xué)過程,又要時刻關(guān)注學(xué)生學(xué)習(xí)狀態(tài),很難做到在少數(shù)學(xué)生出現(xiàn)疲憊狀態(tài)時及時發(fā)現(xiàn)并做出提醒。針對這一現(xiàn)狀,本文提出基于卷積神經(jīng)網(wǎng)絡(luò)的學(xué)生疲勞狀態(tài)反饋策略,建立數(shù)據(jù)集并訓(xùn)練出疲憊狀態(tài)識別分類模型,結(jié)合機(jī)器視覺系統(tǒng)可應(yīng)用到教學(xué)場景中,在適當(dāng)時機(jī)向教師發(fā)出預(yù)警,提醒教師改變課堂氛圍,從而更好地幫助學(xué)生及時調(diào)整學(xué)習(xí)狀態(tài),提高學(xué)習(xí)效率。
關(guān)鍵詞:人工智能;卷積神經(jīng)網(wǎng)絡(luò);情緒分類;疲憊狀態(tài)識別
隨著人工智能的關(guān)鍵技術(shù)發(fā)展,面部表情識別技術(shù)在“人工智能教育”領(lǐng)域起著重要作用。利用識別結(jié)果可以分析學(xué)生的學(xué)習(xí)動態(tài),給老師提供及時反饋。從微觀角度來看,實時反饋可以幫助教師更全面獲得學(xué)生們的及時表達(dá),從而推斷學(xué)生們的學(xué)習(xí)情況和提高課堂教學(xué)質(zhì)量;從宏觀的角度來看,它促進(jìn)了技術(shù)支持教學(xué)的發(fā)展,使教學(xué)方法更加科學(xué)和現(xiàn)代,并加速了教育現(xiàn)代化的到來。
美國著名心理學(xué)家Ekmann和Friese將人類的表情分為七個基本表達(dá):悲傷、自然、快樂、憤怒、驚訝、厭惡和恐懼。面部表情識別是計算機(jī)視覺和人工智能研究方面的一個非常具有吸引力的研究,具有廣闊的應(yīng)用前景,例如遠(yuǎn)程教育、安全駕駛、人工智能、情感語音研究、交通出行、輔助教學(xué)系統(tǒng)等領(lǐng)域,這些應(yīng)用也不斷推動著人臉面部表情識別技術(shù)的發(fā)展[1]。當(dāng)前的人臉表情識別流程主要是人臉檢測、特征提取和表情分類,本文主要針對表情分類部分開展研究。
據(jù)教育領(lǐng)域相關(guān)研究可知,我國長期處于一對多的教學(xué)模式,這樣就導(dǎo)致了教師在教學(xué)環(huán)境中既要做到教學(xué),又要時刻關(guān)注學(xué)生學(xué)習(xí)狀態(tài),很難做到在少數(shù)學(xué)生出現(xiàn)疲憊狀態(tài)時及時發(fā)現(xiàn)并做出提醒。針對這一情況,本文提出基于卷積神經(jīng)網(wǎng)絡(luò)的學(xué)生疲勞狀態(tài)反饋策略,在適當(dāng)時機(jī)向教師發(fā)出預(yù)警,提醒教師改變課堂氛圍,從而更好地幫助學(xué)生及時調(diào)整學(xué)習(xí)狀態(tài),提高學(xué)習(xí)效率。
本文主要包含四部分內(nèi)容:模型搭建、數(shù)據(jù)集建立、模型訓(xùn)練與保存、應(yīng)用模型設(shè)計反饋策略。
1 模型搭建
本文搭建基于GPU服務(wù)器的深度學(xué)習(xí)環(huán)境平臺,使用Pytorch深度學(xué)習(xí)框架構(gòu)建了一個基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類模型。
1.1 環(huán)境部署
想要實現(xiàn)Pytorch基于卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識別的網(wǎng)絡(luò)模型搭建,首先需要搭建滿足研究需要的程序運(yùn)行平臺[2]。
本文所使用軟硬件環(huán)境包括:(1)軟硬件平臺:Windows操作系統(tǒng)、Python3.7、AnaConda3;(2)編譯器:Pycharm;(3)深度學(xué)習(xí)框架:Pytorch-GPU、OpenCV;(4)模型訓(xùn)練加速平臺:NVDIA GeForce RTX 2080 Ti。
在windows10操作系統(tǒng)下,安裝AnaConda3軟件,完成后進(jìn)入CMD命令工作界面,使用指令創(chuàng)建虛擬環(huán)境,并進(jìn)行下一步深度學(xué)習(xí)環(huán)境部署:(1)使用conda指令安裝opencv等所需環(huán)境,進(jìn)入pytorch官網(wǎng),根據(jù)Python和CUDA選擇對應(yīng)的版本,然后在CMD命令窗口輸入官方給出提示可通過運(yùn)行;(2)在CMD指令窗口分別輸入以下指令,打開jupyter notebook編程頁面,在打開成功的網(wǎng)頁頁面輸入以下指令進(jìn)行環(huán)境測試,測試Pytorch是否安裝成功:若輸出版本號則為成功;(3)下載安裝并啟動Pycharm,配置編譯環(huán)境為部署好的虛擬環(huán)境mydlenv。到此后續(xù)程序可在Pycharm中進(jìn)行編寫與運(yùn)行、調(diào)試。
1.2 建構(gòu)模型
通過Pytorch搭建基于卷積神經(jīng)網(wǎng)絡(luò)的分類模型結(jié)構(gòu),如圖1所示。首次搭建只采用其中的卷積-全連接部分[3],后期優(yōu)化時可以考慮向模型中添加Face landmarks+HOG features 部分。
卷積部分輸入圖片尺寸為48×48×1,經(jīng)過一個3×3×64卷積核的卷積操作,再進(jìn)行一次2×2的池化,得到一個24×24×64的feature map 1(以上卷積和池化操作的步長均為1,每次卷積前的padding為1,下同)。將feature map 1經(jīng)過一個3×3×128卷積核的卷積操作,再進(jìn)行一次2×2的池化,得到一個12×12×128的feature map 2。將feature map 2經(jīng)過一個3×3×256卷積核的卷積操作,再進(jìn)行一次2×2的池化,得到一個6×6×256的feature map 3。卷積完畢,數(shù)據(jù)即將進(jìn)入全連接層。進(jìn)入全連接層之前,要進(jìn)行數(shù)據(jù)扁平化,將feature map 3拉一個成長度為6×6×256=9216的一維tensor。隨后數(shù)據(jù)經(jīng)過dropout后被送進(jìn)一層含有4096個神經(jīng)元的隱層,再次經(jīng)過dropout后被送進(jìn)一層含有1024個神經(jīng)元的隱層,之后經(jīng)過一層含256個神經(jīng)元的隱層,最終經(jīng)過含有2個神經(jīng)元的輸出層。在輸出層后加上softmax層,取概率最高的類別為分類結(jié)果。
本文預(yù)期訓(xùn)練模型輸出為二分類,結(jié)果對應(yīng)是否疲憊的兩種狀態(tài),因此輸出類型值out_features為2。
2 數(shù)據(jù)集建立
2.1 數(shù)據(jù)采集
采集學(xué)習(xí)過程中人臉情緒圖像數(shù)據(jù),建立訓(xùn)練集和測試集,并標(biāo)注好對應(yīng)的標(biāo)簽。通過攝像頭等視覺傳感器以及網(wǎng)絡(luò)爬取等手段獲取視頻或圖像數(shù)據(jù),通過Python編程使用Opencv庫對獲取到的圖像數(shù)據(jù)進(jìn)行讀取和預(yù)處理;對預(yù)處理后的圖像數(shù)據(jù)再進(jìn)一步進(jìn)行深度學(xué)習(xí)模型的訓(xùn)練集和測試集劃分,并對訓(xùn)練集進(jìn)行對應(yīng)標(biāo)簽的建立。
本文所采用的人臉圖像數(shù)據(jù)獲取方法為自用筆記本電腦攝像頭錄制連續(xù)的學(xué)習(xí)狀態(tài)視頻,再對視頻加以多種處理得到模型訓(xùn)練集,具體步驟如下:
(1)獲得連續(xù)錄制視頻后,使用OpenCV對視頻定時采樣,實現(xiàn)圖像幀提取并保存圖像。
(2)由于所提取出的包含人臉在內(nèi)的圖像,人臉位置有遠(yuǎn)近大小之分,為了后續(xù)模型訓(xùn)練更準(zhǔn)確,提高數(shù)據(jù)集的質(zhì)量,使用OpenCV對圖像進(jìn)行批量適度的裁剪并重新保存圖像文件。
(3)為了便于后期模型訓(xùn)練,匹配當(dāng)前模型輸入圖像的像素尺寸,使用OpenCV對裁剪后的圖像進(jìn)行批量分辨率修改。
通過以上步驟,得到自建用于模型訓(xùn)練的人臉圖像數(shù)據(jù)集,共11589張圖片。部分示例圖像如圖2所示。
通過人工標(biāo)注,完成對以上圖像數(shù)據(jù)的標(biāo)簽分類,目的標(biāo)簽為二分類——0:不疲憊;1:疲憊。
2.2 數(shù)據(jù)集預(yù)處理
在得到數(shù)量充足的人臉圖像數(shù)據(jù)后,還需要經(jīng)過進(jìn)一步處理將其劃分為用于訓(xùn)練模型、驗證模型的數(shù)據(jù)集,本文訓(xùn)練集與驗證集的比例為3∶1。測試模型則使用少量網(wǎng)絡(luò)爬取的實際人臉圖像。
3 模型訓(xùn)練與保存
訓(xùn)練、驗證用于疲憊狀態(tài)識別的圖像分類模型?;贕PU服務(wù)器的深度學(xué)習(xí)環(huán)境平臺,對采集的學(xué)習(xí)過程中人臉圖像數(shù)據(jù)進(jìn)行分類模型的訓(xùn)練和優(yōu)化,保存訓(xùn)練結(jié)果[4]。
3.1 模型訓(xùn)練
基于前序工作,就可以通過數(shù)據(jù)的前向傳播和誤差的反向傳播來訓(xùn)練圖像分類模型了。在此之前,還需要指定優(yōu)化器(即學(xué)習(xí)率更新的方式)、損失函數(shù)以及訓(xùn)練輪數(shù)、學(xué)習(xí)率等超參數(shù)。本文采用的優(yōu)化器是SGD,即隨機(jī)梯度下降,其中參數(shù)weight_decay為正則項系數(shù);損失函數(shù)采用的是交叉熵;使用學(xué)習(xí)率衰減。
在訓(xùn)練模型過程中,通過epochs(訓(xùn)練輪數(shù))、Learning_rate(學(xué)習(xí)率)、wt_decay(衰減權(quán)重)的參數(shù)調(diào)整,先初步選定較為合適的超參數(shù)初始值;在此數(shù)據(jù)基礎(chǔ)上優(yōu)化運(yùn)行環(huán)境,并微調(diào)超參數(shù),篩選出訓(xùn)練集與驗證集相準(zhǔn)確率相對較高的模型。在經(jīng)過多次訓(xùn)練驗證后,從訓(xùn)練結(jié)果記錄數(shù)據(jù)中挑選出相對最優(yōu)模型,其參數(shù)設(shè)置為:epoch=80,Learning_rate=0.05,wt_decay=0.01。模型在訓(xùn)練集上達(dá)到的識別準(zhǔn)確率約為94.97%,在驗證集上達(dá)到的識別準(zhǔn)確率約為92.36%。在本次運(yùn)行環(huán)境下,整體模型訓(xùn)練時間約為332秒。
3.2 模型保存
模型的保存與加載方法與訓(xùn)練的模型大小有關(guān)。本次訓(xùn)練的模型結(jié)構(gòu)相對而言較為輕便,因此使用torch.save(model,'model_net1.pkl')直接保存整個模型(包括結(jié)構(gòu)和參數(shù))。
4 應(yīng)用模型設(shè)計反饋策略
4.1 模型測試
為測試模型對于非訓(xùn)練圖像數(shù)據(jù)的分類性能,設(shè)計加載模型程序,并采用網(wǎng)絡(luò)爬取的方式獲得測試圖像,測試本文所得模型對于實際場景下疲憊狀態(tài)的識別效果[5]。
用于測試的圖像數(shù)據(jù)為網(wǎng)絡(luò)爬取的65張彩色圖片,截取部分示例見圖3。
加載所保存的模型進(jìn)行疲憊分類測試,運(yùn)行程序得到的結(jié)果如圖4所示。
其中,最后一行輸出結(jié)果即為圖片分類結(jié)果。張量tensor[1]表示識別結(jié)果為標(biāo)簽1,對應(yīng)分類為疲憊(模型分類為二分類:0-不疲憊;1-疲憊)。
使用訓(xùn)練的疲憊分類模型對以上圖像進(jìn)行測試,將得到的模型分類結(jié)果記錄在表格中,與人工判定的label真實值進(jìn)行對比。對于測試圖像,模型的識別準(zhǔn)確率設(shè)置為:真實值與測試值label相同的數(shù)量之和與測試圖像總數(shù)量的比值。通過對當(dāng)前最優(yōu)分類模型進(jìn)行測試,實驗所得其疲憊狀態(tài)識別準(zhǔn)確率為78.46%。
4.2 學(xué)生疲憊狀態(tài)反饋策略
使用本文所得模型,可以完成對輸入的人臉圖像進(jìn)行疲憊狀態(tài)的識別,輸出結(jié)果為0(不疲憊)或1(疲憊)。針對教學(xué)場景下學(xué)生疲憊狀態(tài)的反饋策略問題,可基于嵌入式機(jī)器視覺實驗箱設(shè)計如下反饋系統(tǒng)解決方案。
4.2.1 圖像獲取設(shè)備
使用性價比高的視覺傳感器作為系統(tǒng)的圖像獲取設(shè)備,例如USB攝像頭模組,100萬像素,720P。
4.2.2 圖像識別處理
疲憊狀態(tài)檢測,即圖像識別處理過程需要實現(xiàn)三部分功能:接收攝像頭所傳輸?shù)臄?shù)據(jù),加載訓(xùn)練好的模型進(jìn)行疲憊狀態(tài)識別,輸出識別結(jié)果并判斷是否需要發(fā)出預(yù)警。
第一步,運(yùn)行環(huán)境設(shè)置。由于實驗箱多為Ubuntu Linux操作系統(tǒng),可在Linux環(huán)境下搭建部署pytorch深度學(xué)習(xí)環(huán)境,用于加載與運(yùn)行人臉疲憊檢測的現(xiàn)有模型與測試程序。運(yùn)行環(huán)境的設(shè)置參數(shù)值可參考本文1.1軟硬件環(huán)境配置部分。第二步,進(jìn)行人臉疲憊狀態(tài)檢測。使用Python進(jìn)行程序編寫,完成攝像頭傳輸圖像或視頻數(shù)據(jù)的讀取與保存,對圖像或視頻數(shù)據(jù)進(jìn)行預(yù)處理后,加載疲憊分類模型進(jìn)行疲憊狀態(tài)人臉的檢測。為節(jié)省系統(tǒng)性能,本步驟可設(shè)置為定時進(jìn)行檢測,例如每5分鐘運(yùn)行一次疲憊狀態(tài)檢測程序。
第三步,記錄并分析識別結(jié)果。根據(jù)疲憊狀態(tài)識別結(jié)果,例如若課堂中呈現(xiàn)疲憊狀態(tài)的學(xué)生達(dá)到總?cè)藬?shù)的30%,則系統(tǒng)向反饋預(yù)警裝置發(fā)出有效信號。
4.2.3 反饋預(yù)警裝置
設(shè)置適當(dāng)?shù)念A(yù)警方式對教師進(jìn)行預(yù)警,例如,同時設(shè)置聲光報警。其中面向教師的嵌入式實驗箱顯示屏,可以顯示文字如“請您注意改善課堂教學(xué)效果”,同時使用音頻輸出口輸出一定提示音。
通過以上學(xué)生疲憊狀態(tài)反饋系統(tǒng)的運(yùn)行,可實現(xiàn)在課堂教學(xué)中,每隔一定時間(如5分鐘)進(jìn)行學(xué)生人臉識別,若處于疲憊狀態(tài)人數(shù)達(dá)到總?cè)藬?shù)的一定比例,則向教師發(fā)出聲音提示以及顯示內(nèi)容的預(yù)警。
5 結(jié)論和改進(jìn)
本文提出了一套基于AI人臉情緒識別的學(xué)生疲憊狀態(tài)反饋策略設(shè)計方案。通過采集與建立學(xué)習(xí)過程中人臉數(shù)據(jù)集,搭建與訓(xùn)練基于卷積神經(jīng)網(wǎng)絡(luò)的人臉情緒識別模型,得到了相對最優(yōu)的人臉疲憊狀態(tài)檢測模型。通過對模型進(jìn)行實驗測試,得到以下結(jié)論與改進(jìn)方向。
5.1 研究結(jié)論
基于自建人臉疲憊訓(xùn)練數(shù)據(jù)集,訓(xùn)練所得人臉疲憊狀態(tài)檢測模型,其測試準(zhǔn)確率達(dá)到了78.46%?;诖四P?,可實現(xiàn)在課堂教學(xué)中進(jìn)行學(xué)生人臉情緒識別,在適當(dāng)時機(jī)向教師發(fā)出預(yù)警,提醒教師改變課堂氛圍,從而更好地幫助學(xué)生及時調(diào)整學(xué)習(xí)狀態(tài),提高學(xué)習(xí)效率。
5.2 改進(jìn)方向
本文所得模型的測試準(zhǔn)確率仍然有可提升的空間[6]??赏ㄟ^以下方式對訓(xùn)練模型的精度進(jìn)行優(yōu)化,提高疲憊狀態(tài)的識別率。
完善數(shù)據(jù)集:可將CK+數(shù)據(jù)集重新人工標(biāo)注以匹配疲憊的表情(打哈欠、揉眼睛等);將自建數(shù)據(jù)集與CK+數(shù)據(jù)集融合成新的大數(shù)據(jù)集來進(jìn)行訓(xùn)練和驗證模型。
優(yōu)化網(wǎng)絡(luò)模型:網(wǎng)絡(luò)結(jié)構(gòu)調(diào)整,可嘗試加入Face landmarks+HOG features,更新模型結(jié)構(gòu);更新優(yōu)化器,當(dāng)前使用SGD,可對比BGD、MBGD、指數(shù)加權(quán)平均等優(yōu)化器;修改超參數(shù),基于以上工作,重新進(jìn)行多輪試驗調(diào)整超參數(shù)的值,得到新的相對最優(yōu)解。
參考文獻(xiàn):
[1]胡敏,等.表情識別技術(shù)的教育應(yīng)用[J].教育現(xiàn)代化,2019,6(75):100-102.
[2]廖星宇.深度學(xué)習(xí)入門之PyTorch[M].北京:電子工業(yè)出版社,2017.
[3]詳解CNN卷積神經(jīng)網(wǎng)絡(luò)[EB/OL].https://blog.csdn.net/liangchunjiang/article/details/79030681.
[4]模型的訓(xùn)練和測試、保存和加載[EB/OL].https://blog.csdn.net/u011276025/article/details/78507950.
[5]使用訓(xùn)練好的模型測試自己圖片[EB/OL].https://blog.csdn.net/u011276025/article/details/72817353.
[6]李珊,鄧偉洪.Deep Facial Expression Recognition:A Survey[J].中國圖像圖形學(xué)報,2020,25(11).
平臺支撐:“河北省冶金工業(yè)過程數(shù)字化控制技術(shù)創(chuàng)新中心”支撐(平臺編號:SG2021185);“河北省鋼鐵焦化企業(yè)污染治理技術(shù)創(chuàng)新中心”支撐(平臺編號:SG2020220)
基金項目:中央引導(dǎo)地方科技發(fā)展資金項目(項目編號:216Z1004G);河北省科技廳大學(xué)生科技創(chuàng)新能力培育專項項目(項目編號:2021H011002)
作者簡介:陳旭鳳(1991— ),女,漢族,河北定州人,碩士研究生,講師,研究方向:人工智能、機(jī)器視覺。
*通訊作者:韓佳輝。