劉曉龍,顧梅花
(西安工程大學(xué) 電子信息學(xué)院,陜西 西安710048)
課堂考勤是教學(xué)不可缺少的環(huán)節(jié),它保證了教學(xué)任務(wù)的順利進(jìn)行、維護(hù)了教學(xué)秩序,也是督促學(xué)生學(xué)習(xí)的重要手段[1]。為了提高考勤質(zhì)量,人臉識(shí)別[2-3]、深度學(xué)習(xí)[4]、藍(lán)牙[5]等方法和設(shè)備被應(yīng)用于考勤系統(tǒng)的實(shí)際。李昕昕等采用深度學(xué)習(xí)的方法[6],設(shè)計(jì)了由分布式處理平臺(tái)、圖像處理平臺(tái)、云平臺(tái)和應(yīng)用平臺(tái)構(gòu)成的智慧課堂框架,優(yōu)化了課堂效率。Puckdeevongs等采用藍(lán)牙定位系統(tǒng)[7],自動(dòng)捕獲學(xué)生射頻設(shè)備,用于自動(dòng)記錄教室的學(xué)生出勤情況。上述考勤系統(tǒng)雖然在一定程度上提高了考勤效率,但在識(shí)別過(guò)程中仍然需要學(xué)生主動(dòng)面向攝像機(jī)進(jìn)行簽到。同時(shí),當(dāng)老師查詢考勤信息時(shí),需讀取考勤設(shè)備SD卡統(tǒng)計(jì)信息,這不僅會(huì)干擾學(xué)生和教師的正常上課,同時(shí)增加了額外的人工開銷。
為了解決上述問題,設(shè)計(jì)一種人臉識(shí)別的無(wú)感知課堂考勤系統(tǒng),以Android為平臺(tái)[8],搭載改進(jìn)的Fust人臉檢測(cè)算法和VIPLFaceNet人臉識(shí)別算法。在無(wú)感知情況下,采集課堂圖片傳入服務(wù)器進(jìn)行人臉檢測(cè)與識(shí)別,管理員可訪問服務(wù)器統(tǒng)計(jì)考勤信息。
系統(tǒng)采用Android開發(fā)平臺(tái),以輕量級(jí)OkHttp3[9]為框架進(jìn)行前后端的信息交互。通過(guò)Android手機(jī)攝像頭采集課堂圖像,并發(fā)起通信協(xié)議將課堂圖片和班級(jí)信息傳輸?shù)胶笈_(tái)服務(wù)端,通過(guò)Java調(diào)用以Python語(yǔ)言編寫的人臉檢測(cè)和識(shí)別算法,便于后期對(duì)系統(tǒng)算法的維護(hù)。同時(shí)管理員可訪問服務(wù)器進(jìn)行數(shù)據(jù)查詢與修改。考勤系統(tǒng)設(shè)計(jì)流程如圖1所示。
圖 1 考勤系統(tǒng)設(shè)計(jì)流程Fig.1 Attendance system design process
教師使用系統(tǒng)APP采集課堂照片,并將班級(jí)信息一同傳入云服務(wù)器,云服務(wù)器接收數(shù)據(jù)并進(jìn)行處理,最后將結(jié)果傳入前端。Android系統(tǒng)的架構(gòu)分為4層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和 Linux 核心層[10]。本文考勤系統(tǒng)的開發(fā)使用了應(yīng)用程序框架層,具有豐富可擴(kuò)展的視圖和資源管理器,并提供非代碼資源訪問[11]。
在課堂考勤中,首先采集課堂圖像并上傳,然后云端服務(wù)器利用人臉檢測(cè)算法提取輸入圖像中的人臉,利用人臉識(shí)別算法提取人臉特征,最后與數(shù)據(jù)庫(kù)中人臉信息進(jìn)行比對(duì),得出考勤結(jié)果并傳輸?shù)角岸恕?/p>
Fust人臉檢測(cè)算法[12]頂層包含多個(gè)快速LAB級(jí)聯(lián)分類器[13],但是快速LAB級(jí)聯(lián)分類器存在檢測(cè)精度低與累加權(quán)重值閾值設(shè)置的問題,針對(duì)此問題,采用LAB特征結(jié)合Adaboost級(jí)聯(lián)分類器[14]進(jìn)行多姿態(tài)、低分辨率場(chǎng)景下的人臉檢測(cè)算法。通過(guò)結(jié)合Adaboost級(jí)聯(lián)分類器,將Fust算法頂層 LAB級(jí)聯(lián)分類器中的弱分類器進(jìn)行多輪迭代組成強(qiáng)分類器,最后將多個(gè)強(qiáng)分類器級(jí)聯(lián)形成更強(qiáng)的分類器。
給定一個(gè)數(shù)據(jù)集T={(X1,Y1),(X2,Y2),…,(XN,YN)},Xi表示數(shù)據(jù),Yi→{-1,+1}表示數(shù)據(jù)所屬的類。初始化訓(xùn)練數(shù)據(jù)的權(quán)值分布,并在最開始賦予相同的權(quán)值,即1/N,N為樣本總數(shù)。在迭代中,使用具有權(quán)值分布的訓(xùn)練數(shù)據(jù)學(xué)習(xí),得到基本的弱分類器Gm(x)。em為Gm(x)在訓(xùn)練集上的誤差,即被Gm(x)誤分類樣本的權(quán)值總和,可表示為
(1)
(2)
式中:wm,i為算法進(jìn)行第m輪迭代運(yùn)算時(shí)的權(quán)重值;Wm為第m輪的閾值,它的大小為本輪訓(xùn)練全部樣本權(quán)重的均值;當(dāng)分類錯(cuò)誤I(·)值取1,反之取0。
通過(guò)得到的誤差率計(jì)算基本分類器在最終的強(qiáng)分類器中所占的比重β,可表示為
(3)
式中:em<1/2 時(shí),β>0。β隨em的減小而增大,分類誤差越小的基本分類器在最終分類的作用越大。
當(dāng)一個(gè)樣本多回合迭代后,仍不能正確分類,則其權(quán)值將不斷增大,從而影響對(duì)其他樣本的判別。wm+1,i可表示為
(4)
利用新的權(quán)值更新規(guī)則,由式(4)可得,在每輪權(quán)值更新時(shí)設(shè)定閾值Wm,當(dāng)?shù)\(yùn)算得到的權(quán)重系數(shù)小于本輪設(shè)定的閾值時(shí),下一輪迭代的權(quán)重才會(huì)增加,否則就保持不變,避免了困難樣本權(quán)重不斷增大而造成性能退化的現(xiàn)象。
VIPLFaceNet網(wǎng)絡(luò)[15]由7個(gè)卷積層與2個(gè)全連接層組成,由AlexNet網(wǎng)絡(luò)[16]改進(jìn)而來(lái)。與AlexNet相比,VIPLFaceNet減少了每層特征圖的數(shù)量,增加了一個(gè)卷積層,增加了網(wǎng)絡(luò)深度[17],提高了算法性能。針對(duì)課堂考勤場(chǎng)景,對(duì)VIPLFaceNet識(shí)別閾值進(jìn)行調(diào)整,識(shí)別閾值確定流程如圖2所示。
圖 2 閾值確定流程Fig.2 Threshold determination process
在課堂考勤場(chǎng)景下,為了使人臉識(shí)別算法在誤識(shí)別率和漏識(shí)別率之間達(dá)到平衡,將班級(jí)中每人的人臉圖像類內(nèi)相似度相加求平均值,求得個(gè)人平均類內(nèi)相似度,再將30組個(gè)人平均類內(nèi)相似度相加求平均值,記作類內(nèi)相似度值Smax;再將所有的類間相似度值相加求平均值[18],記作類間相似度值Smin。課堂場(chǎng)景下的識(shí)別閾值σ可表示為
σ=(Smax+Smin)/2
(5)
針對(duì)課堂場(chǎng)景,通過(guò)設(shè)置最小人臉尺寸、滑動(dòng)步長(zhǎng)等關(guān)鍵參數(shù)進(jìn)行算法測(cè)試。算法測(cè)試設(shè)備型號(hào)為GT740M i5-4200U,采用150張課堂圖像,其中圖像分辨率統(tǒng)一為950×550,每張圖像有20人,共有3 000 個(gè)人臉,人員位置相對(duì)集中,人臉并無(wú)較大遮擋,且無(wú)低頭現(xiàn)象。 采用召回率R、準(zhǔn)確率P和F1值作為算法評(píng)價(jià)標(biāo)準(zhǔn)。其中F1值可以看作是模型召回率和精確率的一種加權(quán)平均,可表示為
F1=2PR/(P+R)
(6)
設(shè)置滑動(dòng)步長(zhǎng)為2,調(diào)節(jié)最小人臉尺寸,R、P、F1以及運(yùn)行時(shí)間如表1所示。
表 1 最小人臉參數(shù)Tab.1 The minimum face parameters
從表1可以看出,最小人臉尺寸為40時(shí),R、P、F1值最優(yōu)。設(shè)置最小人臉尺寸為40,調(diào)節(jié)滑動(dòng)步長(zhǎng),召回率,準(zhǔn)確率,F(xiàn)1以及運(yùn)行時(shí)間如表2所示。
表 2 滑動(dòng)步長(zhǎng)Tab.2 The sliding step length
從表2可以看出,滑動(dòng)步長(zhǎng)為2時(shí),F(xiàn)1值最大,檢測(cè)效果最好。
采用上述參數(shù),通過(guò)FDDB人臉數(shù)據(jù)庫(kù),對(duì)改進(jìn)的Fust人臉檢測(cè)算法與Fust、Joint Cascade[19]、ACF[20]算法性能進(jìn)行對(duì)比,其中FDDB數(shù)據(jù)庫(kù)包含多種不同偏轉(zhuǎn)角度、表情姿態(tài)、遮擋程度的人臉圖片,共計(jì)2 845張圖像,5 171張人臉,隨機(jī)選取其中的2 000張圖像進(jìn)行測(cè)試,測(cè)試結(jié)果如圖3所示。
圖 3 FDDB人臉數(shù)據(jù)庫(kù)測(cè)試召回率曲線Fig.3 Recall curve of FDDB face database test
圖3中,改進(jìn)的Fust算法、Fust算法、ACF算法和Joint Cascade算法的召回率的最優(yōu)值為90.18%、86.72%、83.67%和85.91%。這是因?yàn)楦倪M(jìn)的Fust算法將Fust算法頂層弱分類器進(jìn)行迭代組合成新的分類器,在一定程度上增加了檢測(cè)精度。
針對(duì)人臉識(shí)別算法,為了綜合評(píng)估模型,采用ROC特征曲線圖。對(duì)樣本進(jìn)行排序,按此順序逐個(gè)把把樣本作為正例進(jìn)行預(yù)測(cè),每次計(jì)算出特征曲線的橫坐標(biāo)(RFP)、縱坐標(biāo)(RTP)。特征曲線下的面積越大,則算法具有越好的檢測(cè)性能。如式(7)和(8)所示。
(7)
(8)
式中:TP為識(shí)別正確的出勤學(xué)生數(shù)量;FP為是識(shí)別錯(cuò)誤的出勤學(xué)生數(shù)量;TN為正確識(shí)別到的缺席學(xué)生數(shù)量;FN為錯(cuò)誤識(shí)別到的缺席學(xué)生數(shù)量。
在課堂考勤場(chǎng)景下,經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,VIPLFaceNet的人臉識(shí)別算法識(shí)別閾值σ為0.56。在考勤系統(tǒng)中,利用VIPLFaceNet算法提取人臉特征,得出相似度值,若相似度值大于0.56,則認(rèn)為是同一個(gè)人;若相似度值小于0.56,則認(rèn)為不是一個(gè)人。
選取LFW人臉數(shù)據(jù)庫(kù)進(jìn)行實(shí)驗(yàn)測(cè)試。將VIPLFaceNet人臉識(shí)別算法與Fisher Vector Face[21]、DeepFace[22]、VGGFace[23]、AlexNet算法進(jìn)行測(cè)試對(duì)比。從數(shù)據(jù)庫(kù)中隨機(jī)選擇6 000對(duì)人臉圖像,其中3 000對(duì)是同一個(gè)人的2張人臉圖像,屬于正樣本;而另外3 000對(duì)屬于不同人的2張人臉圖像,屬于負(fù)樣本。實(shí)驗(yàn)過(guò)程中,通過(guò)提取輸入圖像和比對(duì)圖像中的人臉特征,計(jì)算2個(gè)人臉特征向量之間的余弦值,即相似度值,若大于0.56則是一個(gè)人,小于0.56,則不是一個(gè)人。根據(jù)6 000對(duì)人臉測(cè)試結(jié)果即可得出人臉識(shí)別算法的識(shí)別率,測(cè)試結(jié)果如圖4所示。
圖 4 LFW人臉數(shù)據(jù)庫(kù)測(cè)試ROC曲線Fig.4 ROC curve of LFW face database test
圖4中,VIPLFaceNet算法、Fisher Vector Face算法、DeepFace算法、VGGFace算法、AlexNet算法的識(shí)別率的最優(yōu)值為98.79%、93.13%、97.47%、98.85%、97.70%。雖然VIPLFaceNet算法的識(shí)別率低于VGGFace,但是VGGFace算法采用了16層的卷積神經(jīng)網(wǎng)絡(luò),而VIPLFaceNet只包含7個(gè)卷積層和2個(gè)全連接層,而且采用了快速歸一化策略提高收斂速度,所以VGGFace的計(jì)算復(fù)雜度遠(yuǎn)高于VIPLFaceNet。通過(guò)以上實(shí)驗(yàn)測(cè)試可得,VIPLFaceNet在計(jì)算成本與準(zhǔn)確率之間具有最好的均衡表現(xiàn),可以很好地應(yīng)用于課堂考勤系統(tǒng)。
選取100張?jiān)谡n堂中實(shí)際拍攝的學(xué)生上課場(chǎng)景的圖像,將4種算法分別嵌入系統(tǒng)進(jìn)行測(cè)試,圖5是對(duì)同一張教室全景圖測(cè)試結(jié)果。
(a) ACF算法
(b) Joint Cascade算法
(c) Fust算法
(d) 改進(jìn)的Fust算法圖 5 課堂場(chǎng)景圖像4種算法結(jié)果Fig.5 Four algorithm results of classroom scene images
圖5(a)、(b)、(c)3種人臉檢測(cè)算法中檢測(cè)效果最好的是Fust算法,因局部遮擋和姿態(tài)變化造成漏檢5位同學(xué),ACF算法和Joint Cascade算法漏檢數(shù)量較多。圖5(d)采用改進(jìn)的Fust人臉檢測(cè)算法的檢測(cè)結(jié)果優(yōu)于Fust算法,對(duì)于局部遮擋和姿態(tài)變化的人臉具有較好的檢測(cè)結(jié)果。
課堂考勤系統(tǒng)中,在Android平臺(tái)搭載改進(jìn)的Fust人臉檢測(cè)算法和VIPLFaceNet人臉識(shí)別算法,教師通過(guò)登錄界面進(jìn)入系統(tǒng),采集課堂圖像,選擇班級(jí)信息進(jìn)行上傳識(shí)別,后端服務(wù)器處理數(shù)據(jù)信息,并將考勤結(jié)果返回前端APP。學(xué)生查看考勤結(jié)果,如果發(fā)現(xiàn)漏檢或誤檢,可通過(guò)APP進(jìn)行反饋,管理員可以訪問服務(wù)器對(duì)考勤數(shù)據(jù)進(jìn)行查詢與修改??记诮缑嫒鐖D6所示,考勤結(jié)果界面如圖7所示。
圖 6 考勤界面 圖 7 數(shù)據(jù)界面Fig.6 Attendance interface Fig.7 Data interface
從圖6和圖7可以看出,在多人數(shù)、低分辨率、存在部分遮擋的課堂場(chǎng)景下,系統(tǒng)具有良好的檢測(cè)與識(shí)別能力,能夠滿足課堂考勤需求。
基于人臉識(shí)別的無(wú)感知課堂考勤系統(tǒng)以Android為平臺(tái),采用Java編程和MySQL數(shù)據(jù)庫(kù)設(shè)計(jì),通過(guò)人臉檢測(cè)與人臉識(shí)別進(jìn)行課堂考勤。后臺(tái)生成的簽到表有利于后期數(shù)據(jù)的查詢,以便于考察學(xué)生的出勤情況。以智能手機(jī)客戶端作為考勤平臺(tái),利用人臉檢測(cè)和識(shí)別算法使課堂考勤工作更加高效。本文為課堂考勤提供了一種新思路,具有一定的實(shí)踐意義。