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