楊長凡 , 呂夢鴿 , 周澤宇 , 張子騰 , 趙彤陽 , 趙 桐
(中國礦業(yè)大學(xué),北京 100083)
如今高校大部分仍采用傳統(tǒng)點名簽到的方式統(tǒng)計學(xué)生的出勤狀況,這存在著許多隱藏問題,例如消耗人力且效率低下,以及人工點名可能存在“放水”的包庇行為,無法約束學(xué)生課堂遲到或早退等行為,大多數(shù)考勤資料以紙質(zhì)形式保存,難以進(jìn)行統(tǒng)計,容易遺失等。對于高等院校來說,教學(xué)的秩序和質(zhì)量至關(guān)重要。在課堂環(huán)節(jié),學(xué)生是主體,學(xué)生對課堂內(nèi)容的專注程度極其重要。然而,目前老師只能通過課堂隨機(jī)提問或者觀察的方式來實時地獲取學(xué)生課堂專注度的情況,這種方式易使老師分心,從而影響教學(xué)質(zhì)量。綜合學(xué)生、老師和高校三方面考慮,找到一種高效的課堂考勤方法是十分有必要的。
隨著深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)的發(fā)展,人臉檢測技術(shù)越來越多地在身份核驗、大數(shù)據(jù)統(tǒng)計等信息工程領(lǐng)域廣泛應(yīng)用,各種檢測算法如雨后春筍一般涌現(xiàn)[1-2]。2001年,文獻(xiàn)[3-4]提出了Viola-Jones檢測器,在AdaBoost算法的基礎(chǔ)上,使用Haar-like小波特征和積分圖方法進(jìn)行人臉檢測,設(shè)計了針對人臉檢測更有效的特征,并對AdaBoost訓(xùn)練出的強分類器進(jìn)行級聯(lián)。文獻(xiàn)[5]將Viola-Jones檢測器進(jìn)行了擴(kuò)展,形成了OpenCV現(xiàn)在的Haar分類器。近年來,人臉檢測領(lǐng)域常用的算法有DeepFace、FaceNet、SphereNet和InsightFace[6-9]等。InsightFace[9]算法提出ArcFace 損失函數(shù),將角度距離作為分類依據(jù),提高了準(zhǔn)確率。RetinaFace[10]是目前最強的開源人臉檢測算法,它提出了一種新型像素智能人臉定位方法,采用多任務(wù)學(xué)習(xí)策略同時預(yù)測人臉分?jǐn)?shù)、面部框、五個面部標(biāo)志點和三維位置。本文借助課堂監(jiān)控視頻,利用RetinaFace算法設(shè)計了一種多層次評價等級的課堂考勤方法,旨在進(jìn)一步提高課堂考勤的效率。
RetinaFace是一種魯棒的單級人臉檢測算法,該算法利用聯(lián)合監(jiān)督和自我監(jiān)督的多任務(wù)學(xué)習(xí),實現(xiàn)在各種人臉尺度上執(zhí)行像素級的人臉定位。使用輕量級主干網(wǎng)絡(luò)——Mobilenet-0.25,使其可以在VGA分辨率的圖片上實時運行,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 RetinaFace算法網(wǎng)絡(luò)結(jié)構(gòu)示意圖
RetinaFace的特征提取網(wǎng)絡(luò)采用P2~P6的特征金字塔層,其中P2~P5通過使用自頂向下和橫向連接計算相應(yīng)的ResNet殘差階段C2~C5的輸出。P6是在C5處通過一個步長為2的3×3卷積計算得到的。C1~C5使用了在ImageNet-11k數(shù)據(jù)集上預(yù)先訓(xùn)練好的ResNet-152分類網(wǎng)絡(luò),P6是通過“Xavier”方法隨機(jī)初始化得到的。它將P2~P6五個特征金字塔層應(yīng)用于五個獨立的上下文模塊,來提高感受野的作用,同時增加剛性上下文建模的能力。
對于任意一個訓(xùn)練的錨點i,多任務(wù)損失函數(shù)定義為:
其中,Lcls(pi,pi*)是人臉的分類損失函數(shù),pi是第i個錨點框中一個人臉的預(yù)測概率,pi*為1表示正錨點框,反之為0代表負(fù)錨點框。Lbox(ti,ti*)為人臉檢測框的回歸損失函數(shù),其中ti={tx,ty,tw,th,}i和ti*={tx*,ty*,tw*,th*,}i代表與正錨相關(guān)的預(yù)測框和真實框的坐標(biāo)。Lpts(li,li*)為人臉密集點回歸損失函數(shù)。損失平衡調(diào)節(jié)參數(shù)λ1~λ3分別設(shè)置為0.25、0.1和0.01,增加檢測框和面部標(biāo)志位置的顯著性。
RetinaFace在P2~P6特征金字塔級別上使用特定比例的錨點,如表1所示。
表1 細(xì)節(jié)特征金字塔
其中P2通過平鋪尺寸小的錨點來捕獲微小的面部,以花費更多的計算時間,承擔(dān)更多的誤報風(fēng)險作為代價。
目前常用的人臉檢測數(shù)據(jù)集為WiderFace數(shù)據(jù)集,但是WiderFace中圖片的場景跨度、人臉位置變化較大,圖片之間獨立性較強,與課堂環(huán)境中的區(qū)別較大。由于沒有公開的課堂環(huán)境中人臉數(shù)據(jù)集,本文在真實的課堂環(huán)境中錄制視頻并將其截取成圖像,進(jìn)行數(shù)據(jù)采集。筆者選擇電氣工程及其自動化專業(yè)的專業(yè)核心必修課“電機(jī)與拖動”(以下簡稱電機(jī)課),以及計算機(jī)科學(xué)與工程專業(yè)的學(xué)科基礎(chǔ)必修課“電工原理”(以下簡稱電工課),在課堂上分別錄制了709s和256s的視頻。
由于課堂環(huán)境較為單一,人臉位置變化較小,本文選定時間間隔為5s,即每隔5s從視頻中提取一張圖片作為本文的數(shù)據(jù)集。電機(jī)課與電工課分別得到142張和52張照片,并對每張照片進(jìn)行了標(biāo)注,兩種課程的樣本圖片如圖2、圖3所示。
圖2 電機(jī)課樣本示意圖
圖3 電工課樣本示意圖
筆者借助Mobilenet-0.25的 RetinaFace 算法[10],基于Pytorch深度學(xué)習(xí)框架,采用python 3.7進(jìn)行編程。硬件配置包括Intel(R)Core(TM) i7-8550U@1.80 GHz,GPU為NVDIA GeForce MX130,RAM為24 GB。
電機(jī)課和電工課的檢測結(jié)果,即人臉坐標(biāo)和五點信息,如圖4、圖5所示。由圖可知,圖片中存在部分人臉未檢出現(xiàn)象。主要考慮如下3點原因:
1)視頻的錄制角度問題,導(dǎo)致許多后排的學(xué)生經(jīng)常被遮擋,甚至前排的學(xué)生也會被“完全”遮擋;
2)畫面內(nèi)的人臉數(shù)量較少,畫面邊緣的人臉,會出現(xiàn)時而在鏡頭內(nèi),時而不在鏡頭內(nèi)的情況;
3)受拍攝設(shè)備的限制,后排、角落中學(xué)生的人臉部位較為模糊,亦或相機(jī)失焦、偶爾的局部亮度過低等,都會導(dǎo)致算法檢測不出人臉,導(dǎo)致了誤差。
綜合上述誤差分析,為了更好地計算課堂出勤率,刪去了3個由于坐在后排,臉部經(jīng)常被遮擋或頻繁不在鏡頭內(nèi)的學(xué)生圖像,單個位置檢出率低于30%的人臉位置,重新進(jìn)行人臉檢測,最后通過所有畫面中的總方框數(shù)除以總檢測到的人數(shù)進(jìn)行計算,得到的總檢出率為81.20%。
圖4 電機(jī)課檢測結(jié)果示意圖
圖5 電工課檢測結(jié)果示意圖
根據(jù)拍攝到的畫面及教室的比例,選擇電機(jī)課和電工課圖片中的應(yīng)到人數(shù)為班級總?cè)藬?shù)的四分之一,即22人和15人,并以此給出課堂出勤率的計算方法。
根據(jù)2.2節(jié)中的檢測結(jié)果,提出3種計數(shù)方案。
1)比較所有圖片中的人臉數(shù)量,取數(shù)量最小的數(shù)值作為最終的出勤人數(shù)。視頻中有些人坐在教室的后排或邊緣,經(jīng)常不抬頭,甚至整堂課持續(xù)趴在桌上,這種情況將其記錄為未出勤。經(jīng)計算得到,電機(jī)課與電工課檢測出的人數(shù)最小值分別為10人和8人,對應(yīng)的出勤率分別為45.5%和53.3%。
但同時,由于存在人臉被遮擋、攝像頭清晰度不高等原因所致的未檢測到的情況,以最小值作為最終結(jié)果而不將其計入考勤,這種考勤方法顯得有些嚴(yán)苛。
2)比較所有圖片中的人臉數(shù)量,取數(shù)量最大的數(shù)值作為最終的出勤人數(shù)。取最大值作為最終結(jié)果,這種方法能夠彌補由于設(shè)備和算法問題而帶來的漏檢。經(jīng)計算得到,電機(jī)課與電工課檢測出的人數(shù)最大值分別為17人和11人,對應(yīng)的出勤率分別為77.3%和73.3%。
但是這種檢測方法,無法檢出學(xué)生遲到早退的現(xiàn)象,也就是說,只要檢測到一次全班同學(xué)都在的情況,本堂課即被記為全勤,如果中間有學(xué)生溜走,最終結(jié)果也不會有所變化。
3)因此提出了第3種方法,比較每張圖片中的人臉數(shù)量,取出現(xiàn)次數(shù)最多的數(shù)值作為最終的出勤人數(shù),即眾數(shù)的概念。這樣可以有效避免取最小值、最大值帶來的漏檢、多檢和忽略遲到早退的現(xiàn)象,可以反映出較為真實的課堂出勤情況。經(jīng)計算得,電機(jī)課與電工課檢測出人數(shù)的眾數(shù)分別為14人和10人,對應(yīng)的出勤率分別為63.6%和66.7%。
采用最大值、最小值和眾數(shù)的計數(shù)方法較為籠統(tǒng)、單一。于是,筆者提出了一種多層次的評價標(biāo)準(zhǔn),可以將出勤情況分為多個等級,從而靈活地進(jìn)行課堂考勤,為智能化課堂考勤提供一種新的可解思路。
分別根據(jù)電機(jī)課和電工課得到的142張和52張圖片,按照一定的間距,在盡可能跨越全部圖片的原則下,均勻地抽取五組連續(xù)圖片,最終確定電機(jī)課和電工課每組圖片的數(shù)量分別為5張和3張。這樣就得到了一個縮小后的數(shù)據(jù)集,并依此來進(jìn)行考勤統(tǒng)計。抽取圖片均勻跨越了整個課堂視頻的始終,數(shù)據(jù)集可信度高,可以將其視為整個課堂的真實情況。
對電機(jī)課的5張照片進(jìn)行處理,若該位置有檢測框,即記為1,若沒有則記為0。若該位置在5張圖片中只要出現(xiàn)一次人臉框,即算作本組中出現(xiàn),接著將得到的5組結(jié)果進(jìn)行求和,得到最終的評價值。這樣記錄考勤,可以有效記錄到遲到早退的情況,即使遲到早退,也有分值被記錄,不會被單純地算作未出勤,同時也不會被絕對地否定,即一次都沒被相機(jī)抓拍到即記作未出勤。設(shè)定5表示優(yōu)秀,4代表良好,3為一般,0~2則為較差。其中,5分和4分都能很好地表明該位置上的同學(xué)本堂課認(rèn)真聽課,沒有缺勤的情況。3分則表示,該位置上的同學(xué)可能有遲到、早退的現(xiàn)象,亦或是在教室的角落玩手機(jī)、睡覺等,聽課效果不佳。0分~2分的情況,老師可以根據(jù)自己的標(biāo)準(zhǔn),來判定該位置上的同學(xué),本堂課算作出勤還是缺勤。將所有位置上同學(xué)的得分取平均值,即可得到本堂課的綜合評價分?jǐn)?shù)。經(jīng)計算得,電機(jī)課和電工課的得分分別是4.78分和4.55分,均為優(yōu)秀。
經(jīng)綜合評價可知,電機(jī)課的最終得分總體上是略高于電工課的??紤]是由于電機(jī)課為該專業(yè)的核心必修課,而電工課則為大類必修課。電機(jī)課的課程性質(zhì)較電工課更重要,難度更大,學(xué)生心里更加重視,因此出勤率更高。
借助Retinaface算法,提出了一種基于人臉檢測的多等級評價的課堂考勤方法。該方法對真實課堂的畫面分時間段、分組進(jìn)行人臉檢測,將各組之間的檢測情況求和,得到該位置上同學(xué)本堂課的出勤表現(xiàn)得分。設(shè)定優(yōu)秀、良好、一般、較差四個等級反饋給授課教師,依此作為本堂課每個位置同學(xué)的出勤及聽課情況的評判標(biāo)準(zhǔn)。經(jīng)計算得,電機(jī)課和電工課的最終得分分別為4.78分和4.55分,均為優(yōu)秀。在下一步的研究中,準(zhǔn)備將人臉比對與識別加入算法中,即可給出每名同學(xué)的出勤情況統(tǒng)計表,同時,進(jìn)一步優(yōu)化網(wǎng)絡(luò),訓(xùn)練自己的網(wǎng)絡(luò)模型,提高課堂環(huán)境中人臉的檢測能力和檢測效率。