金維香,邢 晨
(浙江水利水電學(xué)院 信息工程與藝術(shù)設(shè)計(jì)學(xué)院,浙江 杭州 310018)
自動(dòng)化信息技術(shù)是一門(mén)新興的科學(xué)技術(shù)[1],其中人臉識(shí)別是屬于自動(dòng)化信息技術(shù)中新興的生物識(shí)別技術(shù)。人臉識(shí)別就是利用計(jì)算機(jī)分析人臉視頻或者圖像,并從中提取出有效的個(gè)人識(shí)別信息,最終判別出來(lái)人臉對(duì)象的身份,通常也叫做面部識(shí)別、人像識(shí)別[2-4]。隨著科技的進(jìn)步,人工智能和圖像處理的發(fā)展,人臉識(shí)別技術(shù)也愈發(fā)成熟[5-6]。通過(guò)采集人臉信息、對(duì)圖片進(jìn)行處理、檢測(cè)人臉、識(shí)別人臉、錄入數(shù)據(jù)庫(kù)等過(guò)程即可完成一個(gè)簡(jiǎn)單的人臉考勤機(jī)制。
大學(xué)課堂出勤率低一直是各大高校面臨的問(wèn)題。相比各行各業(yè)陸續(xù)出現(xiàn)的各類(lèi)考勤系統(tǒng),高校課堂目前較多的仍然是采用傳統(tǒng)的課堂點(diǎn)名方式。而近年來(lái),也曾有一些新興方式在某些高校出現(xiàn):如手機(jī)App簽到、指紋識(shí)別[7]以及校園一卡通刷卡等。雖然這些新的方式較傳統(tǒng)點(diǎn)名來(lái)說(shuō),是一種進(jìn)步且日趨成熟,但是仍然有不少人為漏洞。比如手機(jī)或者校園卡有遺失與忘帶的情況,學(xué)生也可以攜帶其他同學(xué)的手機(jī)與校園卡幫忙考勤;另外指紋識(shí)別實(shí)現(xiàn)成本較高。本文基于對(duì)國(guó)內(nèi)高校點(diǎn)名機(jī)制現(xiàn)狀的分析,通過(guò)人臉檢測(cè)技術(shù),設(shè)計(jì)并實(shí)現(xiàn)人臉識(shí)別課堂考勤系統(tǒng),進(jìn)而實(shí)現(xiàn)智慧課堂[8-10]。
OpenCV能夠直接應(yīng)用于很多不同領(lǐng)域,其中就包括利用自身算法來(lái)進(jìn)行相關(guān)人臉識(shí)別技術(shù)的開(kāi)發(fā)與實(shí)現(xiàn),是作為第二次開(kāi)發(fā)的理想工具[11]。OpenCV工具庫(kù)屬于輕量級(jí)數(shù)據(jù)庫(kù),但是它的效率很高,結(jié)合編程語(yǔ)言,可以實(shí)現(xiàn)圖像處理以及計(jì)算機(jī)視覺(jué)體系處理等功能[12-13]。OpenCV提供了一套物體檢測(cè)功能,經(jīng)過(guò)訓(xùn)練后能夠檢測(cè)出你需要的物體。該庫(kù)可以為多個(gè)場(chǎng)景檢測(cè)所需的對(duì)象,如人臉、行為姿態(tài)、車(chē)牌等。
人臉識(shí)別技術(shù)簡(jiǎn)而言之是將攝像頭識(shí)別到的人臉與系統(tǒng)錄入的人臉進(jìn)行特征判斷,多方位多角度匹配特征最符合的一個(gè)。攝像頭先檢測(cè)人臉是否存在,再對(duì)檢測(cè)識(shí)別到的人臉圖像進(jìn)行特征值計(jì)算,從而匹配對(duì)應(yīng)的人臉,顯示人臉信息。其中人臉檢測(cè)是人臉識(shí)別的重要環(huán)節(jié),人臉檢測(cè)將人臉的特征與人臉圖像進(jìn)行各個(gè)區(qū)域的特征做對(duì)比,相似度達(dá)到一定的閾值則判斷為人臉。本文的人臉檢測(cè)采用基于Haar特征的AdaBoost算法,由于Haar特征數(shù)量龐大,用常規(guī)方式計(jì)算其特征值的計(jì)算量大、占用資源多、耗時(shí)較長(zhǎng),因此,可以借助積分圖的方式來(lái)計(jì)算Haar特征值,可以大大提高計(jì)算效率。借助積分圖方式進(jìn)行人臉Haar特征識(shí)別的總體思路是將圖像中的Haar特征(矩形特征)提取出來(lái)并計(jì)算出積分圖像,得到的積分圖像與人臉的積分圖像對(duì)比,符合人臉特征的區(qū)域則被標(biāo)記起來(lái)。
OpenCV目標(biāo)檢測(cè)的方法是利用樣本的Haar特征進(jìn)行分類(lèi)器訓(xùn)練,由弱分類(lèi)器到強(qiáng)分類(lèi)器,得到級(jí)聯(lián)boosted分類(lèi)器(Cascade Classification)。Haar-like算法原理介紹如下。
由三類(lèi)Haar特征(邊緣特征、線性特征、中心特征)組合成特征模板。特征模板內(nèi)有白色和黑色兩種矩形,并定義該模板的特征值為白色矩形像素之和減去黑色矩形像素之和。Haar特征值反映了圖像的灰度變化情況。人的一些臉部特征能簡(jiǎn)單的由矩形描述,例如:眼睛的顏色要比臉頰顏色要深,鼻梁兩側(cè)的顏色比鼻梁的顏色要深,嘴巴的顏色要比周?chē)伾畹?。但是單個(gè)Haar-like特征的分類(lèi)能力很弱,矩形特征只能描述一些簡(jiǎn)單的特征圖形,還需要利用特定的級(jí)聯(lián)算法將簡(jiǎn)單Haar-like特征應(yīng)用于目標(biāo)的檢測(cè)。Haar-like特征(見(jiàn)圖1)。
圖1 Haar-like特征
利用圖像積分圖可以快速得到圖像中任意矩形的像素和,大大提高了計(jì)算矩形相應(yīng)特征值的速度,是Haar分類(lèi)器能夠?qū)崟r(shí)檢測(cè)人臉的保證。積分圖像是將圖像左上側(cè)的全部像素進(jìn)行累加計(jì)算,并將圖像中的每一個(gè)像素替換成所求得的和。在Haar-like分類(lèi)器的訓(xùn)練和檢測(cè)過(guò)程中都需要計(jì)算當(dāng)前子圖像特征值,積分圖算法求出圖像中所有區(qū)域像素之和只需要遍歷一次,解決了算法的耗時(shí)問(wèn)題。構(gòu)造的積分圖(見(jiàn)圖2)。
圖2 圖像積分圖
圖2中由角標(biāo)L1、L2、L3、L4四個(gè)像素所表示的矩形區(qū)域D像素和為:
SumD=L4+L1-L2-L3
AdaBoost算法就是一種基于級(jí)聯(lián)分類(lèi)模型在Haar特征上構(gòu)建多個(gè)簡(jiǎn)單的分類(lèi)器,允許設(shè)計(jì)者不斷加入新的“弱分類(lèi)器”。首先對(duì)每個(gè)樣本的權(quán)值分布進(jìn)行初始化,如果有N個(gè)樣本,則將每個(gè)訓(xùn)練樣本賦予相同的權(quán)重1/N,隨后訓(xùn)練弱分類(lèi)器。在具體訓(xùn)練過(guò)程中,如果某個(gè)樣本已經(jīng)被準(zhǔn)確分類(lèi),那么在下一個(gè)訓(xùn)練集的構(gòu)造過(guò)程中,其權(quán)重將會(huì)被降低;相反,如果某個(gè)樣本點(diǎn)沒(méi)有被準(zhǔn)確分類(lèi),其權(quán)重將會(huì)升高。與此同時(shí),得到弱分類(lèi)器相對(duì)應(yīng)的話語(yǔ)權(quán)。在結(jié)束對(duì)各個(gè)弱分類(lèi)器的訓(xùn)練過(guò)程后,分類(lèi)誤差率小的弱分類(lèi)器擁有較大話語(yǔ)權(quán),在最終的分類(lèi)函數(shù)中起著較大決定作用,而分類(lèi)誤差率大的弱分類(lèi)器擁有較小的話語(yǔ)權(quán),在最終的分類(lèi)函數(shù)中起著較小決定作用。其次,更新權(quán)值后的樣本集將被用于訓(xùn)練下一個(gè)分類(lèi)器,整個(gè)訓(xùn)練過(guò)程不斷進(jìn)行迭代。最后,若干個(gè)訓(xùn)練后的弱分類(lèi)器組合成一個(gè)強(qiáng)分類(lèi)器,而一個(gè)級(jí)聯(lián)分類(lèi)器將多個(gè)強(qiáng)分類(lèi)器連接在一起并進(jìn)行操作。
由于每一個(gè)強(qiáng)分類(lèi)器對(duì)負(fù)樣本的判別準(zhǔn)確度非常高,所以檢測(cè)到負(fù)例樣本,便不再繼續(xù)調(diào)用后面的強(qiáng)分類(lèi)器,減少了大量的檢測(cè)時(shí)間。因?yàn)橐粡垐D像中的待檢測(cè)區(qū)域大部分都是負(fù)例樣本,級(jí)聯(lián)分類(lèi)器在分類(lèi)器的初期就不會(huì)進(jìn)行很多負(fù)例樣本的復(fù)雜檢測(cè),所以級(jí)聯(lián)分類(lèi)器的速度是非常快的;只有正例樣本才會(huì)被送到下一個(gè)強(qiáng)分類(lèi)器進(jìn)行再次檢驗(yàn),這樣就保證了最后輸出的正例樣本的偽正(false positive)的可能性非常低。級(jí)聯(lián)分類(lèi)模型(見(jiàn)圖3)。
圖3 級(jí)聯(lián)分類(lèi)模型
人臉檢測(cè)系統(tǒng)大致分為以下步驟進(jìn)行:
(1)人臉采集:對(duì)動(dòng)態(tài)視頻中的人臉根據(jù)設(shè)定值截取相對(duì)應(yīng)數(shù)量的圖片并保存;
(2)人臉預(yù)處理:對(duì)采集到的人臉圖片進(jìn)行灰度化、歸一化等處理,統(tǒng)一圖片大小與色彩對(duì)比度;
(3)人臉識(shí)別:計(jì)算識(shí)別到的人臉特征值,并根據(jù)特征值與之前系統(tǒng)錄入的人臉信息進(jìn)行匹配;
(4)考勤:識(shí)別到的人臉信息返回?cái)?shù)據(jù)庫(kù),將識(shí)別到的人臉的實(shí)時(shí)時(shí)間與系統(tǒng)設(shè)定時(shí)間進(jìn)行對(duì)比,判斷是否遲到。
通過(guò)調(diào)用攝像頭捕捉人臉并截取100張圖片進(jìn)行標(biāo)號(hào),將圖片保存在指定文件夾下,因?yàn)樵撐募婕拜^多人員信息且涉及個(gè)人隱私,所以在實(shí)現(xiàn)過(guò)程中將其進(jìn)行加密處理。在采集過(guò)程中為了排除其他干擾,選擇顏色單一的背景、燈光較強(qiáng)的場(chǎng)地進(jìn)行人臉采集。在采集人臉時(shí),為提高人臉識(shí)別準(zhǔn)確性,首先將面部完全暴露于攝像頭前,便于攝像頭采集,其次保證人臉信息的完整度,進(jìn)行人臉不同部位、不同面部表情的數(shù)據(jù)采集,包括人臉正面,人臉側(cè)面、笑臉、閉眼等。
在將采集的人臉圖像用于訓(xùn)練之前,需要將采集到的人臉信息進(jìn)行灰度化、歸一化等預(yù)處理,保證人臉圖片的尺寸與色彩對(duì)比度保持統(tǒng)一。使用OpenCV內(nèi)置函數(shù)cv2.face.LBPHFaceRecognizer_create()將LBP特征圖像分成m個(gè)局部塊,并提取每個(gè)局部塊的直方圖,然后將這些直方圖依次連接在一起形成LBP特征并完成統(tǒng)計(jì)。若未對(duì)圖片進(jìn)行預(yù)處理,可能導(dǎo)致Harr特征值計(jì)算結(jié)果的誤差,最終匹配到錯(cuò)誤的人臉信息。圖4展示了采集到的并處理過(guò)的部分人臉樣本。
圖4 部分人臉信息
采集被檢測(cè)對(duì)象的人臉圖像或視頻,提取并計(jì)算其人臉Harr特征值,與之前處理過(guò)的人臉進(jìn)行匹配,找到最為相似的人臉,最后在視頻或圖像中顯示檢測(cè)到的匹配人臉的名字。人臉識(shí)別簡(jiǎn)單流程(見(jiàn)圖5),實(shí)際運(yùn)行效果(見(jiàn)圖6),通過(guò)實(shí)際系統(tǒng)運(yùn)行發(fā)現(xiàn),該系統(tǒng)亦可以實(shí)現(xiàn)多人識(shí)別功能,既出現(xiàn)在視野中的人臉均可以被識(shí)別出并作出姓名標(biāo)記。因考慮到此次被拍攝者信息安全及隱私等問(wèn)題,均使用姓名拼音首字母大寫(xiě)代替姓名。
圖5 人臉識(shí)別流程
圖6 人臉識(shí)別
使用Python語(yǔ)言與本地?cái)?shù)據(jù)庫(kù)進(jìn)行連接,將識(shí)別到的人臉信息返回至數(shù)據(jù)庫(kù),并根據(jù)檢測(cè)到的人臉的實(shí)時(shí)時(shí)間將該學(xué)生的簽到信息與系統(tǒng)設(shè)定的簽到時(shí)間做對(duì)比,判斷是否遲到。該表格數(shù)據(jù)包括學(xué)生學(xué)號(hào)、姓名、打卡時(shí)間、是否遲到等判斷。其余信息可結(jié)合具體需求進(jìn)行相關(guān)設(shè)置。課堂簽到結(jié)果(見(jiàn)圖7)。
圖7 簽到結(jié)果數(shù)據(jù)表
本文利用OpenCV與Python語(yǔ)言實(shí)現(xiàn)了基于人臉識(shí)別的大學(xué)課堂考勤系統(tǒng),經(jīng)過(guò)測(cè)試,該系統(tǒng)實(shí)現(xiàn)了通過(guò)識(shí)別學(xué)生人臉完成課堂簽到,完成了對(duì)學(xué)生考勤的全面化、自動(dòng)化、簡(jiǎn)易化管理,省去了教師點(diǎn)名的時(shí)間,方便了同學(xué)的簽到,大大提高課堂管理效率。此外,該技術(shù)可適用于其他需人員打卡場(chǎng)地,具有較為實(shí)際的使用價(jià)值。