盧鏗棟,周玲,蔡沛潛,陳曉星,羅中良
(惠州學(xué)院電子信息與電氣工程學(xué)院,惠州 516007)
學(xué)校教師為了有效管理學(xué)生上課情況,點(diǎn)名考勤是最常見和傳統(tǒng)的方式,其占用時間長,又容易出現(xiàn)幫忙應(yīng)到或者代課的現(xiàn)象存在。隨著計(jì)算機(jī)、通信技術(shù)和移動設(shè)備應(yīng)用的普及,出現(xiàn)了各種新的考勤方式,如指紋機(jī)考勤,以生物特征指紋作為對象識別依據(jù)加快點(diǎn)名考勤,但手指上有灰塵或者有汗液存在或天氣較冷季節(jié)和地方,指紋識別存在一定的困難;微信考勤也是一種新的考勤方式,它是讓學(xué)生微信連接特定網(wǎng)絡(luò)作為到勤依據(jù);虹膜識別考勤,其特點(diǎn)有可依靠性強(qiáng)、識別準(zhǔn)確率高的情況。但是在驗(yàn)證的過程中要求被識別者摘下眼鏡,存在一定的不方便性。而人臉識別技術(shù)具有考勤方便、速度快以及生物特征唯一等特點(diǎn)[1],是大學(xué)考勤是較理想的方式。本文針對此需求設(shè)計(jì)了基于人臉識別的上課點(diǎn)名考勤系統(tǒng),系統(tǒng)采用樹莓派作為系統(tǒng)開發(fā)平臺,并由充電寶移動電源供電解決其移動應(yīng)用便利性。設(shè)計(jì)的系統(tǒng)通過OpenCV人臉識別算法設(shè)計(jì)和Python語言編程實(shí)現(xiàn),完成人臉采集和識別并與微信相關(guān)聯(lián),實(shí)現(xiàn)將考勤數(shù)據(jù)在微信上傳輸給上課教師,同時將缺課學(xué)生名單數(shù)量加以統(tǒng)計(jì)并顯示,讓教師一目了然,極大地提升點(diǎn)名效率。
根據(jù)大學(xué)校園點(diǎn)名考勤的經(jīng)驗(yàn),系統(tǒng)設(shè)計(jì)的功能主要包括:①樹莓派連接好Wi-Fi后,教師通過啟動程序生成微信二維碼并進(jìn)行登錄,學(xué)生到攝像頭面前進(jìn)行人臉識別,當(dāng)識別度大于預(yù)設(shè)的閾值表示識別成功并發(fā)出“嘀嘀嘀”提示音;②點(diǎn)名結(jié)束后按下鍵盤按鍵“Esc”結(jié)束錄制,到勤學(xué)生的名單會以Excel的形式發(fā)送到當(dāng)堂教師的微信,文檔里面包括到勤學(xué)生的姓名字母縮寫與學(xué)號,以及出勤時間,進(jìn)而對學(xué)生遲到、缺勤人數(shù)進(jìn)行統(tǒng)計(jì);③與微信平臺中的文件傳輸助手相連,無需關(guān)注公眾號或下載App,方便使用。
該系統(tǒng)主要由樹莓派3B+模塊、攝像組模塊、有源蜂鳴器模塊及電源、按鍵等外部設(shè)備組成,系統(tǒng)總體設(shè)計(jì)如圖1所示。
圖1 系統(tǒng)總體設(shè)框圖
LBP(Local Binary Pattern,局部二值模式)算子在3×3圖形領(lǐng)域中,將周圍的像素點(diǎn)的灰度值分別與中心像素點(diǎn)的灰度值進(jìn)行比較,當(dāng)周圍的某一像素點(diǎn)灰度值比中心像素點(diǎn)的灰度值大,便將該點(diǎn)的像素點(diǎn)記為1,反之為0。因此中心像素點(diǎn)的LBP算子[2]可以由圖2所示算出。
圖2
其中,LBP的公式可以定義為以下公式(1):
其中,(XC,YC)為3×3領(lǐng)域的中心像素,iC是中心像素的灰度值,而iP則是周圍像素點(diǎn)的灰度值。P為領(lǐng)域內(nèi)整個采樣點(diǎn)的數(shù)量,p為領(lǐng)域內(nèi)的第p個像素。s(x)是一個符號函數(shù)[3],定義為公式(2):
因基本的LBP算子在圖像大小發(fā)生變化的情況下會發(fā)生編碼錯誤。因此本項(xiàng)目使用了可變半徑的圓形LBP算子來實(shí)現(xiàn)人臉識別。以圓形圖像代替原先的3×3方形圖形領(lǐng)域[4]。因此圓形圖像上可以捕獲多個采樣點(diǎn),如圖3所示。
采樣點(diǎn)的坐標(biāo)可以通過式(3)和式(4)計(jì)算。
其中,(xc,yc)為中心像素點(diǎn),P為采樣點(diǎn)的數(shù)量,R為圓形圖像的半徑[5]。其中P的采樣點(diǎn)位置為(xp,yp),p∈P。
圖3
人臉檢測是目標(biāo)檢測的一部分,主要涉及兩個方面:①對檢測人臉進(jìn)行概率統(tǒng)計(jì),從而理解待檢測人臉的某些特征,創(chuàng)造人臉檢測模型。②再使用已經(jīng)創(chuàng)造的人臉模型匹配輸入圖像,如果匹配,則將匹配的區(qū)域輸出,否則什么也不做。使用OpenCV檢測人臉,OpenCV使用對象檢測中的Haar功能的級聯(lián)列表[6]。OpenCV中有一個文件夾數(shù)據(jù)/haarcascades。該文件夾包含OpenCV這些文件可用于檢測相機(jī)獲取的圖像中的靜止圖像,視頻和臉部[7]。筆者的人臉圖像檢測與捕獲如圖4(a)所示。然后使用OpenCV進(jìn)行圖像預(yù)處理,在從相機(jī)獲得幀(圖像)之后,將圖像從RGB模式轉(zhuǎn)換為灰度圖像,并且執(zhí)行灰度直方圖均衡操作,因?yàn)镺penCV中的面部檢測需要灰色空間[8]。
OpenCV有三種人臉識別的方法,它們分別基于三種不同的算法:Eigenfaces、Fisherfaces和 Local Binary Pattern Histogram(LBPH)。所有的方法都有類似的過程,即使用了分好類的訓(xùn)練數(shù)據(jù)集(人臉數(shù)據(jù)集[9],每個人都有很多樣本,這里我們設(shè)置為每個人200張)來進(jìn)行“訓(xùn)練”,對圖像或視頻中檢測到的人臉進(jìn)行分析,訓(xùn)練過后將產(chǎn)生后綴名為yml的訓(xùn)練文件。
圖4 人臉檢測捕獲與預(yù)處理
通過攝像頭捕捉一個新人臉,如果這個人的面孔之前被捕捉和訓(xùn)練過,識別器將會返回其預(yù)測的id和索引,并顯示其id和匹配正確的概率(概率=100-置信度指數(shù))。同時在識別功能的基礎(chǔ)上,我們還引入連接微信的功能,引入itchat接口,使微信可與程序連接起來;同時,當(dāng)人臉匹配正確的概率大于閾值時,會將匹配成功人的id與對應(yīng)的名字寫入文本,并將文本形式由.txt轉(zhuǎn)化為.excel,同時引入蜂鳴器鳴叫功能,每當(dāng)識別成功就發(fā)出“嘀嘀嘀”響聲。引入k=cv2.waitKey(10)函數(shù),使程序能夠在鍵盤按下“Exc”鍵時就能退出識別,并將寫入之前寫入帶有姓名字母縮寫與學(xué)號的文本發(fā)送到相關(guān)聯(lián)的微信。
圖5 人臉識別與匹配考勤結(jié)果圖
根據(jù)上述原理,系統(tǒng)總體軟件設(shè)計(jì)流程圖如圖6所示。
圖6 系統(tǒng)總體軟件流程圖
本文設(shè)計(jì)的基于人臉識別的考勤設(shè)備,自動生成考勤文本發(fā)送到對應(yīng)的微信賬號上,使得考勤信息一目了然,讓教師精確掌握遲到、缺課的學(xué)生名單、數(shù)量。同時采用人臉識別技術(shù)這一生物特征識別技術(shù),通過比較不同人臉圖像LBP編碼直方圖達(dá)到人臉識別的目的,識別結(jié)果不受光照、縮放、旋轉(zhuǎn)和平移的影響[10],保證了識別的精準(zhǔn)率,極大地降低了學(xué)生找代課的可行性,提高教育質(zhì)量。所設(shè)計(jì)的設(shè)備經(jīng)過測試,具備很高的識別精準(zhǔn)度,具備一定的應(yīng)用價值。