繆來瑞 顧燁波
(淮陰師范學院,江蘇 淮安 223300)
目前,我國高等教育入學的學生規(guī)模在不斷擴張,2020年我國將新增100萬數(shù)量的從事職業(yè)技能學習的學生,不同于中學教育,高等教育教學環(huán)境較為自由寬松,學生逃課已經(jīng)成為目前高校急需解決的現(xiàn)實問題。為了有效督促學生按時上課,保證教學和學習質(zhì)量,對學生進行有效簽名考勤變得勢在必行。然而傳統(tǒng)的人工點名的方式進行課堂點名費時費力,難以真正起到有效監(jiān)督作用。
為了實現(xiàn)上述需求,本文提出了一種結合OpenCV和Dlib的人臉檢測器與卷積神經(jīng)網(wǎng)絡在課堂環(huán)境下的人臉考勤算法。以輕量級網(wǎng)絡作為基礎網(wǎng)絡模型,通過特征提取構建數(shù)據(jù)庫、圖像特征匹配等考勤系統(tǒng)關鍵部件,完成有效的課堂考勤系統(tǒng)的設計與實現(xiàn)。
人臉識別技術是基于分析人臉圖象,從中提取出有效的識別信息,用來“辨認”身份的一門技術[1]。在深度學習出現(xiàn)之前,人臉識別主要通過提取人臉幾何特征等方法,其技術主要基于人臉特征點的間距、比率等參數(shù)為特征進行的人臉識別,但這種方式缺陷較多,識別率較低,極易受光線、角度等因素的影響。目前,人臉識別的主流技術是通過深度卷積神經(jīng)網(wǎng)絡進行識別,如CNN、SPLM、CL等[2]。本考勤系統(tǒng)系統(tǒng)圍繞人臉識別主要技術展開,增加了相似度計算的環(huán)節(jié)。
要想識別人臉,首先需要通過OpenCV的函數(shù)讀取連續(xù)視頻幀,并在捕獲的圖像中找到所有人臉的位置,并將人臉部分的圖像切割出來。接著將圖片灰度化,因為色彩對于找到人臉位置并無明顯作用,接著計算圖像中各像素的梯度。通過將圖像變換為方向梯度直方圖(Histogram of Oriented Gradients)形式,提取圖像的特征,從而獲取人臉位置[3]。
一張圖片中的人臉可能是傾斜的,或者僅僅是側(cè)臉。為了方便給人臉編碼,需要將人臉對齊成同一種標準的形狀。人臉對齊的第一步就是人臉的特征點估計。
Dlib庫的人臉矯正過程是在OpenCV取得圖像后進 行,通 過Dlib的extract_image_chip(img,dlib::get_face_chip_details(shape,150,0.25),face_chip)函數(shù),能夠?qū)⑷四樀?8個人特征點處理成51個特征點。在 找 到 特 征 點 后,通 過get_face_chip_details(shape,150,0.25)函數(shù)計算每兩個特征點的相似變換人臉區(qū)域的旋轉(zhuǎn)角度以及縮放系數(shù)。最后通過插值法完成相應的處理,使各個特征點對齊(將眼睛、嘴等部位移到相同位置),實現(xiàn)Dlib的人臉矯正。
Dlib庫的人臉特征提取主要是通過其深度神經(jīng)網(wǎng)絡ResNet(Residual Neural Network),對提取的人臉特征數(shù)據(jù)進行對比分類識別。
ResNet是一種基于殘差學習的深度神經(jīng)網(wǎng)絡,其結構包含一個殘差支路和short-cut支路,比傳統(tǒng)的卷積結構多了一個short-cut支路,用于傳遞低層的信息。ResNet通過residual mapping被push為0有效地解決了隨著網(wǎng)絡的加深,梯度的范數(shù)急劇下降,即梯度消失以及梯度爆炸現(xiàn)象,使得準確率保持在相對穩(wěn)定的狀態(tài)[4]。
最后將人臉的68個特征點坐標帶入face_encodings(face_image,known_face_locations=None,num_jitters=1)等函數(shù)中,返回一個128維的臉部編碼列表。
預先將所有的人臉圖像放入人臉庫中,全部用上述的神經(jīng)網(wǎng)絡轉(zhuǎn)化為128維的臉部編碼列表并保存。識別時,將人臉編碼轉(zhuǎn)換為128維的向量后,與人臉庫中的數(shù)據(jù)進行比對。通過人臉匹配函數(shù)compare_faces(known_face_encodings,face_encoding_to_check,tolerance=0.6)比較臉部編碼列表和候選編碼,看看它們是否匹配,設置一個閾值,若兩張人臉特征向量的距離,在閾值范圍之內(nèi),則認為其是同一個人。
項目組計劃以卷積神經(jīng)網(wǎng)絡作為深度學習框架,以FaceNet為模型進行分類訓練,結合已有算法中光照等因素對識別準確度的影響,研究減少識別噪聲的方法,并將算法應用到課堂智能考勤系統(tǒng)的設計和開發(fā),系統(tǒng)設計的具體步驟包括以下4步。
仿照通用型軟件界面設計的原則,所有的操作都在菜單欄里實現(xiàn),一部分區(qū)域用于展示攝像頭實時讀取并由程序加工后的視頻流信息,另一部分區(qū)域做控制臺輸出,打印相關信息,比如提示學生面部信息添加成功、添加失敗及其原因,提示學生打卡成功、打卡失敗及其原因;添加面部信息時人是必須和程序進行交互的,比如輸入一些相關的信息,這個時候程序是阻塞的;但是在打卡的時候,程序是不阻塞的,如果不點擊關閉打卡,它會一直在打卡的模式,等待并識別每一個前來打卡的學生,這比較符合現(xiàn)實的使用場景。
采集的數(shù)據(jù)通過建表來存儲學生信息和考勤信息,每次新建錄入學生面部信息時,要求輸入學號、姓名,并查無重后方可錄入,錄入時只取距離屏幕最近的學生的面部信息,這是考慮到實際打卡都是依次進行而不是一群人一群人地打卡,錄入時有兩種模式可供選擇,自動模式:一旦識別到人臉就自動捕獲截圖,連續(xù)截圖達到10張就結束錄入;手動模式:點擊菜單結束錄入,不一定要得到10張。結束錄入后就開始從剛才捕獲的學生面部提取人臉特征數(shù)據(jù)并連同之前輸入的學生姓名等數(shù)據(jù)作為一行記錄保存到數(shù)據(jù)庫中,如果沒有捕獲到學生面部或者剛才捕獲的面部信息不是同一個人,這行記錄就被丟棄。
圖像識別時將依據(jù)特征提取模型和相似度匹配算法對錄入的人臉信息進行有效檢測和質(zhì)量評估,達到檢測閾值的方可視為通過。考勤時,須滿足三個條件:面部信息已錄入、在打卡時間段內(nèi)、未重復打卡,只有打卡成功,打卡人姓名及學號、打卡日期及時間才會被當成一行記錄保存到數(shù)據(jù)庫并在控制臺輸出打卡成功信息,否則會在控制臺輸出失敗及其原因信息。
系統(tǒng)設計考勤統(tǒng)計模塊,計劃采用短信通知等方法對曠課或者遲到的學生進行實時預警。
為了驗證系統(tǒng)運行的準確性以及穩(wěn)定性,特將該人臉識別考勤系統(tǒng)進行一系列測試,以計算機科學與技術學院學生為測試對象,從中隨機抽取8個班(336人)作為樣本數(shù)據(jù),對每個班級依次進行考勤,測試過程相關數(shù)據(jù)的統(tǒng)計如表1所示。
表1 不同考勤方式測試對比
由此可以看出,本系統(tǒng)的人臉識別考勤各方面性能均優(yōu)于其他兩種考勤方式,有助于管理者對人員的管理,減輕考勤工作負擔。
人臉識別經(jīng)過多年的發(fā)展,在社會各界已得到了廣泛的應用。傳統(tǒng)的人工、指紋考勤的方式費時費力,難以真正起到有效的監(jiān)督作用。這種非接觸,無感知,快捷方便的簽到方式不僅有利于疫情防控常態(tài)化的管理還可以極大地提高考勤的效率,滿足快速考勤的需求。