王國琿,張 璇,鄭 浩
(西安工業(yè)大學(xué) 光電工程學(xué)院,西安 710021)
課堂是學(xué)校教育教學(xué)工作的主陣地,教學(xué)過程中學(xué)生的課堂表現(xiàn)對于任課教師把握學(xué)生的學(xué)習(xí)狀態(tài)至關(guān)重要,同時也是教學(xué)質(zhì)量評價的重要依據(jù)[1-2]。大多數(shù)高校在進行教學(xué)質(zhì)量評價時,通常采用傳統(tǒng)的問卷調(diào)查等課后調(diào)查方式[3],致使任課教師在教學(xué)過程中無法實時獲得學(xué)生課堂狀態(tài)的反饋。部分高校對學(xué)生上課過程進行視頻采集,教師通過課后觀察上課視頻進行教學(xué)效果評估,這不僅耗費極大的精力和時間,而且無法兼顧到每一個學(xué)生[4]。近年來,隨著科學(xué)技術(shù)的進步和計算機技術(shù)的迅速發(fā)展,人工智能技術(shù)已經(jīng)走進課堂,成為教師有力的助手。研究人員開始致力于使用深度學(xué)習(xí)的方法檢測課堂狀況,分析學(xué)生課堂學(xué)習(xí)狀態(tài),有助于任課教師精準(zhǔn)、實時地掌握學(xué)生的學(xué)習(xí)情況,及時改進和優(yōu)化教學(xué)方式,調(diào)整教學(xué)策略,從而提升教學(xué)質(zhì)量,并促進學(xué)生的學(xué)習(xí)效率。
現(xiàn)有關(guān)于學(xué)生課堂表現(xiàn)的識別和分析研究主要分為兩類:行為識別和表情識別。針對學(xué)生課堂行為識別研究,廖鵬等[5]利用VGG 預(yù)訓(xùn)練網(wǎng)絡(luò)模型遷移學(xué)習(xí),提取學(xué)生課堂異常行為特征,實現(xiàn)玩手機、睡覺等行為的識別和分析;蔣沁沂等[6]通過訓(xùn)練殘差網(wǎng)絡(luò)識別到學(xué)生上課狀態(tài)的6 種行為;徐家臻等[4]通過Boosting 算法和卷積神經(jīng)網(wǎng)絡(luò)算法提取了學(xué)生的骨架信息,從而識別到5 種課堂行為;何秀玲等[7]利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)CNN-10 提取人體骨架信息實現(xiàn)了7 種學(xué)生課堂行為識別。進行學(xué)生課堂行為識別時,骨架信息識別雖可以排除學(xué)生體態(tài)、著裝和教室背景等無關(guān)信息,但是增加了識別過程的復(fù)雜性。事實上,足夠深度的神經(jīng)網(wǎng)絡(luò)能夠從復(fù)雜的場景中直接識別出學(xué)生的課堂行為。
針對學(xué)生課堂表情識別研究,侯鳳芝等[8]構(gòu)建了基于情感計算的適應(yīng)性網(wǎng)絡(luò)學(xué)習(xí)系統(tǒng)模型,并對情感缺失問題進行了描述。隨著人工智能技術(shù)的發(fā)展,對于表情識別的研究更為深入,賈鸝宇等[9]利用機器學(xué)習(xí)SVM(Supporting Vector Machin,SVM)算法構(gòu)建了人臉68個關(guān)鍵點,實現(xiàn)了學(xué)生課堂中高興、憤怒、平常和困惑4種表情的識別;馬曉玲等[10]通過建立雙模態(tài)情感識別模型對學(xué)習(xí)者進行了全面的情感分析。
針對學(xué)生課堂狀況分析的研究,賈鵬宇等[9]運用YOLO[11]神經(jīng)網(wǎng)絡(luò)對上課學(xué)生人數(shù)進行了統(tǒng)計,接著通過K-means聚類分析了學(xué)生的位置分布情況,最后利用SVM 算法對學(xué)生表情識別進而分析了學(xué)生上課的活躍度。本文提出僅通過YOLOX[12]深度學(xué)習(xí)網(wǎng)絡(luò)即可實現(xiàn)對學(xué)生從整體到個人的考勤評估,統(tǒng)計學(xué)生出勤人數(shù)并對缺勤名單進行標(biāo)注,并完成學(xué)生課堂狀態(tài)的表情和行為識別分析,實現(xiàn)對課堂學(xué)習(xí)狀態(tài)從個體到整體的分析。
用于人工智能和深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)模型為多層次神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)的每一層將上一層輸出進行非線性映射,通過多層非線性映射的堆疊,神經(jīng)網(wǎng)絡(luò)可以在深層網(wǎng)絡(luò)中計算出抽象的特征用于目標(biāo)識別和分析。典型的神經(jīng)網(wǎng)絡(luò)包括輸入層、卷積層、池化層及全連接層。由于學(xué)生課堂狀態(tài)的復(fù)雜性,需要足夠深度的神經(jīng)網(wǎng)絡(luò)來進行識別分析,該網(wǎng)絡(luò)能夠在復(fù)雜的場景下識別學(xué)生的面部表情,同時也能識別學(xué)生的肢體行為。本文在前人工作的基礎(chǔ)上,僅利用YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò),實現(xiàn)學(xué)生缺勤名單的統(tǒng)計并完成學(xué)生課堂表情和行為的同步識別。
1.學(xué)生課堂狀態(tài)分析流程
基于YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)的學(xué)生考勤及課堂表情和行為識別分析的流程如圖1 所示。對學(xué)生進行考勤分析時,深度學(xué)習(xí)網(wǎng)絡(luò)提取的人臉特征與人臉識別系統(tǒng)比對,統(tǒng)計學(xué)生出勤人數(shù),從而可以進行班級學(xué)風(fēng)評價,并對缺勤名單標(biāo)注,完成學(xué)生課堂考勤的評估。對學(xué)生表情和行為識別分析時,首先,同時采集學(xué)生課堂表情和行為數(shù)據(jù),具體包含2 種學(xué)生課堂表情和6種課堂行為的圖像與標(biāo)簽;其次,通過Imgaug 軟件對學(xué)生課堂表情和行為數(shù)據(jù)進行數(shù)據(jù)增強,滿足復(fù)雜場景的訓(xùn)練需求;最后,將數(shù)據(jù)增強后的學(xué)生課堂狀態(tài)圖像與標(biāo)簽對應(yīng)輸入到Y(jié)OLOX 深度學(xué)習(xí)網(wǎng)絡(luò)中進行訓(xùn)練和測試。
圖1 基于YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)的學(xué)生考勤及課堂表情和行為識別分析流程
2.YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)
用于學(xué)生課堂狀態(tài)識別分析的YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示,包括3 個部分:主體網(wǎng)絡(luò)、Neck連接部分和預(yù)測部分(YOLO Head)。主體網(wǎng)絡(luò)由連續(xù)卷積、池化等一系列殘差網(wǎng)絡(luò)結(jié)構(gòu)組成,部分卷積層的激活函數(shù)為SiLU 函數(shù)[13]。輸入的圖片在主體網(wǎng)絡(luò)進行特征提取,提取到的特征集合為特征層。在主體網(wǎng)絡(luò)將得到3 個特征層,3 個輸出尺度分別為:76×76×256、38×38×512 和19×19×1 024。Neck 連接部分采用了特征金字塔結(jié)構(gòu),在主體網(wǎng)絡(luò)獲得的3 個特征層在Neck部分進行特征融合,以進一步提取特征。YOLO Head是YOLOX 的分類器和回歸器,主要作用是判斷特征點是否有物體與其對應(yīng)。在主體網(wǎng)絡(luò)的最后一個特征層進行3 次聯(lián)合卷積后,分別利用4 個不同尺度的最大池化進行處理,池化核大小為13×13、9×9、5×5 和1×1。最大池化處理可極大地增加感受野,分離出學(xué)生課堂狀態(tài)圖像中最顯著的上下文和高級抽象特征。鑒于YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)足夠復(fù)雜并經(jīng)實驗驗證,其能夠同時識別到學(xué)生的課堂學(xué)習(xí)狀態(tài),包括面部表情和肢體行為。
圖2 YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)圖
在預(yù)測過程中,輸入圖像被劃分S×S 個網(wǎng)格,每個網(wǎng)絡(luò)由B 個bounding box 來檢測物體,從而一張圖像將生成S×S×B 網(wǎng)格。如果物體落在某個網(wǎng)格中,含有這個網(wǎng)格的bounding box 將用來預(yù)測該物體。此外,置信閾值的設(shè)置可以減少bounding box 的冗余。如果bounding box 的置信度高于此閾值,該bounding box 將保留;否則該bounding box 將被刪除。置信度分數(shù)可由公式(1)獲得。用于學(xué)生課堂狀態(tài)識別分析的深度學(xué)習(xí)網(wǎng)絡(luò)損失函數(shù)如公式(2)所示。
本文中,損失函數(shù)被分為3 部分:bounding box 回歸損失lossReg、置信度損失lossObj和類別損失lossCls。訓(xùn)練過程中損失函數(shù)振蕩下降直至最小值,即損失函數(shù)連續(xù)多次不下降或下降幅度小于閾值時,認為學(xué)生課堂狀態(tài)識別分析的深度學(xué)習(xí)網(wǎng)絡(luò)已訓(xùn)練好,訓(xùn)練過程結(jié)束。
學(xué)生課堂學(xué)習(xí)狀態(tài)的數(shù)據(jù)集來源于課堂教學(xué)視頻,將教學(xué)視頻分幀為圖像序列,選取其中的3 000 幅圖像作為數(shù)據(jù)集,并利用LabelImg 軟件進行標(biāo)注。標(biāo)注分為以下2 個部分:行為標(biāo)注和表情標(biāo)注。學(xué)生的行為和表情共同反映了課堂的學(xué)習(xí)狀態(tài),有助于任課教師及時改進和優(yōu)化教學(xué)方式,從而提升教學(xué)質(zhì)量和學(xué)習(xí)效率。
將序列圖像的分辨率調(diào)整為608×608,并按照VOC2007 的格式進行標(biāo)注。學(xué)生行為標(biāo)注時,按以下6 種類型進行標(biāo)注:舉手、交頭接耳、睡覺、抬頭、低頭學(xué)習(xí)和低頭玩手機;學(xué)生表情標(biāo)注是建立在學(xué)生行為的基礎(chǔ)上,僅標(biāo)注抬頭時的表情,包括微笑和平常,標(biāo)注圖像如圖3 所示。LabelImg 標(biāo)注文件為xml 格式,每幅圖像與其標(biāo)注文件一一對應(yīng)輸入深度學(xué)習(xí)網(wǎng)絡(luò),同時將學(xué)生課堂狀態(tài)數(shù)據(jù)集按8∶1∶1 的比例隨機拆分為訓(xùn)練集、驗證集和測試集。拆分完數(shù)據(jù)集后,利用Imgaug 軟件進行數(shù)據(jù)增強,分別利用不同角度旋轉(zhuǎn)、局部模糊、光強變化和鏡像等圖像處理方法,最終得到所有的訓(xùn)練圖像,共計24 000 幅。
圖3 數(shù)據(jù)集標(biāo)注
本文的實驗環(huán)境為Ubuntu 18.04,CPU 為Intel Core i9-9900X CPU(3.50 GHz),CPU 為NVIDA GeForce GTX 2080Ti(11 G RAM);在Pytorch 1.7 框架下對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練和測試,Python 版本為3.7,編輯器Pycharm版本為3.2.0。
(1)將課堂學(xué)習(xí)狀態(tài)數(shù)據(jù)集隨機分成訓(xùn)練集、驗證集和測試集,神經(jīng)網(wǎng)絡(luò)獲取所有標(biāo)注類別的Ground-Truth。
(2)利用Adam 進行YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練,以VOC 數(shù)據(jù)集的權(quán)重作為初始權(quán)重輸入,epoch 設(shè)為100。訓(xùn)練分為2 個階段,分別為凍結(jié)階段和解凍階段,其epoch 各為50。凍結(jié)階段的batchsize 設(shè)為8,解凍階段的batchsize 設(shè)為4。學(xué)習(xí)率初始值設(shè)為0.001,隨著epoch 的變化而改變,此外可依據(jù)訓(xùn)練結(jié)果的好壞確定學(xué)習(xí)率的初始值。
(3)用訓(xùn)練好的深度學(xué)習(xí)網(wǎng)絡(luò)對數(shù)據(jù)集驗證及測試,根據(jù)驗證結(jié)果得到mAP(mean Average Precision),可以評估神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)性能和對學(xué)生課堂學(xué)習(xí)狀態(tài)的監(jiān)測性能。
為避免侵犯學(xué)生隱私,所有學(xué)生的姓名皆以序號替代。對多個班級如A、B、C 班進行考勤時,將YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)與學(xué)校的人臉識別系統(tǒng)相結(jié)合,統(tǒng)計多個班級學(xué)生出勤人數(shù)并給出缺勤名單,同時可針對某一班級分析多次課堂的學(xué)生出勤情況,結(jié)果分別見表1 和表2,實現(xiàn)對學(xué)生從整體到個人的考勤評估。表1 為某一課堂的A、B、C 3 個班級的學(xué)生課堂出勤情況統(tǒng)計表,表2為C 班6 次課堂的學(xué)生出勤統(tǒng)計分析情況。
表1 不同班級學(xué)生出勤情況統(tǒng)計
表2 C 班多次課堂學(xué)生出勤統(tǒng)計分析
從表1 中可知,B 班的出勤率為86.1%,高于A 班和C 班的出勤率,可以得出B 班的學(xué)風(fēng)更為濃郁。對多次課堂學(xué)生出勤名單進行對比,可以發(fā)現(xiàn)哪些學(xué)生經(jīng)常缺勤、學(xué)習(xí)態(tài)度不夠端正,有助于任課教師進一步了解學(xué)生個人的學(xué)習(xí)情況。由表2 的多次缺勤學(xué)生名單中可以發(fā)現(xiàn),C 班的31 號學(xué)生缺勤次數(shù)最多、學(xué)習(xí)態(tài)度可能存在問題,進一步結(jié)合缺勤次數(shù)較多的同宿舍30 號學(xué)生,應(yīng)關(guān)注所在宿舍的整體學(xué)風(fēng),需要任課教師或輔導(dǎo)員及時幫助學(xué)生端正學(xué)習(xí)態(tài)度。
對學(xué)生課堂學(xué)習(xí)狀態(tài)進行訓(xùn)練時,50 epochs 之后,網(wǎng)絡(luò)主體部分開始訓(xùn)練,YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)的loss值急速下降并收斂于2.44,此時訓(xùn)練得到的權(quán)重達到最好效果。根據(jù)數(shù)據(jù)集的劃分比例,其中2 400 個數(shù)據(jù)樣本用于深度學(xué)習(xí)網(wǎng)絡(luò)對學(xué)生課堂狀態(tài)的測試。本文以mAP為測試指標(biāo),對神經(jīng)網(wǎng)絡(luò)訓(xùn)練的效果進行評定,結(jié)果見表3,其中mAP 值越高,表示網(wǎng)絡(luò)的訓(xùn)練效果越好。
表3 各種類別AP 和mAP
表3 表明神經(jīng)網(wǎng)絡(luò)的訓(xùn)練精度已經(jīng)很高,由于學(xué)生微笑的樣本相比于其他行為或表情偏少,測試時微笑的AP 值略低于其他幾類,但精度也已達到69.86%。
YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)實時動態(tài)檢測,對學(xué)生課堂學(xué)習(xí)狀態(tài)進行精準(zhǔn)識別,識別效果如圖4 所示。在實時動態(tài)檢測過程中,教師可根據(jù)學(xué)生的表情和行為兼顧到所有學(xué)生的學(xué)習(xí)狀態(tài),觀察每個學(xué)生的連續(xù)專注時間,進而判斷學(xué)生對教學(xué)內(nèi)容是否感興趣,并及時改進和優(yōu)化教學(xué)方式,實施更為合適的教學(xué)方案,從而提升教學(xué)質(zhì)量,促進學(xué)生的學(xué)習(xí)效率。
圖4 學(xué)生課堂表情和行為識別效果
學(xué)生課堂學(xué)習(xí)狀態(tài)識別分析時,不可避免會出現(xiàn)部分學(xué)生被遮擋的情況,使得整體檢測結(jié)果受到影響,降低檢測精度。需要指出的是,本文無法處理學(xué)生面部和肢體被大比例遮擋的情況,這也是下一步研究工作的重點。
本文聚焦于學(xué)生課堂考勤、面部表情和肢體行為識別研究,提出了一種基于YOLOX 深度學(xué)習(xí)網(wǎng)絡(luò)的學(xué)生課堂學(xué)習(xí)狀態(tài)分析方法,實時獲取到學(xué)生的課堂學(xué)習(xí)狀態(tài)。經(jīng)實驗驗證,該方法能夠在復(fù)雜的場景下準(zhǔn)確統(tǒng)計考勤情況、識別學(xué)生的表情和行為。今后工作中可以嘗試深度學(xué)習(xí)網(wǎng)絡(luò)與其他方法結(jié)合解決學(xué)生面部和肢體被大比例遮擋的情況,同時應(yīng)采集樣本量更大、課堂狀態(tài)更加豐富的數(shù)據(jù)來完善本文研究工作。