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