徐常惠,高艷平,王 奧,馬文龍,朱晨鑫
(河南科技大學(xué),河南 洛陽(yáng) 471000)
近年來(lái),隨著IT行業(yè)的興起,人工智能技術(shù)得到了快速發(fā)展,人臉識(shí)別技術(shù)成為當(dāng)今智能時(shí)代下的熱門(mén)技術(shù),被應(yīng)用于社會(huì)的各個(gè)領(lǐng)域。隨著研究的深入,人臉識(shí)別的準(zhǔn)確率越來(lái)越高,安全性也得到了進(jìn)一步提高,已被廣泛應(yīng)用于銀行等金融行業(yè)的業(yè)務(wù)辦理、網(wǎng)點(diǎn)監(jiān)控、安全防控中[1],以及商業(yè)領(lǐng)域中的刷臉支付、生活領(lǐng)域中的刷臉開(kāi)鎖、公安領(lǐng)域中通過(guò)人臉識(shí)別辨認(rèn)身份信息等方面。隨著人臉識(shí)別技術(shù)進(jìn)一步發(fā)展成熟,其應(yīng)用范圍也將不斷擴(kuò)大。
目前,不少高校學(xué)生自上了大學(xué)后,出現(xiàn)生活懶散、學(xué)習(xí)怠慢等問(wèn)題,層出不窮,相信人工智能技術(shù)在高校教育中也將大有用武之地,幫助大學(xué)生改掉不良習(xí)慣。
人臉識(shí)別技術(shù),屬于生物識(shí)別技術(shù)的一種,是用攝像頭或者攝像機(jī)等圖像采集儀器采集人的臉部形成視頻流,該技術(shù)從視頻流中采集一幀幀圖片,把圖中的每一個(gè)像素點(diǎn)轉(zhuǎn)化成數(shù)據(jù)后,從數(shù)據(jù)中測(cè)量出五官的大小和距離,這些數(shù)值轉(zhuǎn)化成數(shù)碼,也就是每個(gè)人獨(dú)一無(wú)二的臉部識(shí)別碼,并存儲(chǔ)到數(shù)據(jù)庫(kù)中。此后,每當(dāng)有人臉被掃描時(shí)能自動(dòng)計(jì)算其臉部識(shí)別碼,一旦與數(shù)據(jù)庫(kù)所存儲(chǔ)的數(shù)據(jù)有吻合,則會(huì)識(shí)別出其身份。
1965年,Chan和Bledsoe在Panoramic Research Inc.上發(fā)表了人臉自動(dòng)識(shí)別技術(shù)報(bào)告[2],這是關(guān)于人臉識(shí)別最早的學(xué)術(shù)論文。人臉識(shí)別技術(shù)研究?jī)?nèi)容包括人臉檢測(cè)、人臉表征、人臉識(shí)別、面部表情、姿態(tài)分析、生理分類(lèi)[3]。而在識(shí)別算法研究中又有基于人臉特征點(diǎn)、基于整幅人臉圖像、基于模板、利用神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別等不同的算法。本文所用的人臉檢測(cè)、人臉識(shí)別和人臉數(shù)據(jù)功能均來(lái)自Python擴(kuò)展庫(kù)OpenCV,在整幅人臉圖像上使用LBPH(Local Binary Pattern Histogram,局部二進(jìn)制模式直方圖)來(lái)實(shí)現(xiàn)。
目前的高校課堂教學(xué)中,少數(shù)學(xué)生存在著惰性和僥幸心理,習(xí)慣性逃課,有的同學(xué)甚至從來(lái)沒(méi)去教室上過(guò)課[4]。大學(xué)是學(xué)習(xí)技術(shù)的地方,也是為未來(lái)的工作打好夯實(shí)的基礎(chǔ),而簽到是老師為了保證學(xué)生到課,保障教學(xué)效果的必要手段之一。目前的簽到方式包括人工點(diǎn)名簽到、利用手機(jī)等電子設(shè)備簽到等,這些方式均存在弊端,如表1所示,人工簽到浪費(fèi)時(shí)間,電子簽到可能出現(xiàn)代簽的情況。所以本系統(tǒng)通過(guò)使用人臉識(shí)別技術(shù),對(duì)現(xiàn)有的電子簽到系統(tǒng)進(jìn)行改進(jìn),避免了他人代簽或異地簽到(學(xué)生不在教室)的情況。
表1 當(dāng)前簽到方式利弊
本系統(tǒng)使用Python語(yǔ)言實(shí)現(xiàn),基于OpenCV相關(guān)庫(kù)進(jìn)行設(shè)計(jì),其工作流程如圖1所示。將攝像頭拍攝的照片或已有的學(xué)生照片傳入系統(tǒng),然后對(duì)照片進(jìn)行預(yù)處理和數(shù)據(jù)訓(xùn)練,存入數(shù)據(jù)庫(kù)中,簽到時(shí)可以直接調(diào)用數(shù)據(jù)庫(kù)中處理好的數(shù)據(jù)進(jìn)行比對(duì)。在發(fā)起一次簽到后,系統(tǒng)會(huì)打開(kāi)設(shè)備攝像頭,獲取設(shè)備中出現(xiàn)的人臉,對(duì)識(shí)別到的人臉數(shù)據(jù)進(jìn)行匹配,如果設(shè)備識(shí)別出來(lái)的人臉數(shù)據(jù)信息與數(shù)據(jù)庫(kù)中的人臉訓(xùn)練數(shù)據(jù)信息沒(méi)有匹配成功,可在規(guī)定次數(shù)內(nèi)反復(fù)匹配,在識(shí)別的人臉數(shù)據(jù)信息與數(shù)據(jù)庫(kù)中的人臉訓(xùn)練數(shù)據(jù)信息成功匹配之后顯示簽到成功,否則顯示簽到失敗,完成一次簽到活動(dòng)。
圖1 智能考勤管理系統(tǒng)工作原理
彩色圖中的特征數(shù)據(jù)太多,常見(jiàn)的24 bit色彩大概是1 678萬(wàn)種,也就是常見(jiàn)的1 600萬(wàn)真彩色。以最常見(jiàn)的RGB格式為例,像素點(diǎn)由R,G,B 3個(gè)數(shù)值共同表示,從而呈現(xiàn)出彩色。其中,R,G,B是由不同的灰度級(jí)來(lái)描述。3字節(jié)(每個(gè)分量用1 Byte儲(chǔ)存,共24 bit)可表示一個(gè)像素,灰度代表該顏色的深淺,越大越深。
利用Opencv庫(kù)進(jìn)行人臉識(shí)別,需要先進(jìn)行灰度化處理,也就是將彩色圖片轉(zhuǎn)化成灰色圖片。具體實(shí)現(xiàn)方法為使用Python語(yǔ)言導(dǎo)入CV2庫(kù),然后使用CV2.cvtColor(Src,Code,Dst,DstCn)(Src,要更改顏色的圖像;Code,色彩轉(zhuǎn)化代碼;Dst,與Src圖像大小和深度相同的輸出圖像;DstCn,是目標(biāo)中的頻道數(shù))。灰度化的目的是將每個(gè)像素點(diǎn)的RGB值統(tǒng)一成同一個(gè)值,灰度化后的圖像由三通道變?yōu)閱瓮ǖ?,單通道的?shù)據(jù)處理起來(lái)會(huì)簡(jiǎn)單許多。在灰度化處理之后再開(kāi)始圖像處理,將灰度化的圖片進(jìn)行數(shù)據(jù)化整理。每次圖片數(shù)據(jù)處理后都會(huì)存成文件,經(jīng)過(guò)大量的圖像處理后,形成一個(gè)小型數(shù)據(jù)庫(kù),為后續(xù)的人臉識(shí)別比對(duì)提供數(shù)據(jù)訓(xùn)練的基礎(chǔ)。
活體檢測(cè)技術(shù)是一項(xiàng)應(yīng)用在人臉檢測(cè)方面的核心技術(shù),這項(xiàng)技術(shù)的運(yùn)用,可以在很大程度上避免有人利用照片、視頻、人臉模型達(dá)到欺騙檢測(cè)系統(tǒng)的目的[5]。而在本系統(tǒng)中使用活體檢測(cè)技術(shù)的目的就是為了防止部分同學(xué)會(huì)使用照片或視頻的方式進(jìn)行代簽。目前的人臉活體檢測(cè)算法中,可使用的方法大致分為基于手工特征的方法、基于深度學(xué)習(xí)的方法、基于更多學(xué)習(xí)范式的人臉活體驗(yàn)證方法、面向未知類(lèi)型攻擊的人臉活體驗(yàn)證方法[6]。在實(shí)際應(yīng)用中,采取的是根據(jù)人臉關(guān)鍵點(diǎn)的活體檢測(cè)方法來(lái)實(shí)現(xiàn)對(duì)照片或者真人的區(qū)分[7]。例如,可以將兩眼之間的位置作為兩個(gè)關(guān)鍵點(diǎn),將這兩個(gè)關(guān)鍵點(diǎn)的距離進(jìn)行計(jì)算并存儲(chǔ)。于是,便可以用n個(gè)關(guān)鍵點(diǎn)將眼睛部位框出來(lái),再將其坐標(biāo)化,每個(gè)點(diǎn)就擁有了對(duì)應(yīng)的X值與Y值。從而可以找到睜眼狀態(tài)下Y的最大值Ymax和最小值Ymin,同理可以找到閉眼狀態(tài)下的ymax和ymin。此時(shí),可以得到如圖 2所示的上下眼皮之間的最大距離,通過(guò)對(duì)人像的多次采集,會(huì)得到多次數(shù)據(jù),如果上下眼皮之間的最大距離發(fā)生了改變,便可以認(rèn)為這不是圖片冒充真人進(jìn)行簽到,同時(shí)為了防止關(guān)鍵點(diǎn)標(biāo)注時(shí)產(chǎn)生的誤差,故當(dāng)Y(差值)≥0.05時(shí),方可認(rèn)為通過(guò)了活體檢測(cè),如公式(1)所示。
圖2 上下眼皮最大距離
Y(差值)=|(Ymax-Ymin)-(ymax-ymin)|
(1)
本系統(tǒng)開(kāi)發(fā)采用的技術(shù)為基于LBPH(Local Binary Pattern Histogram)的人臉識(shí)別[8]。LBPH將檢測(cè)到的人臉?lè)譃樾卧?,?duì)每個(gè)區(qū)域的匹配值產(chǎn)生一個(gè)直方圖,這種方法具有很強(qiáng)的靈活性,允許人臉模型樣本和檢測(cè)到的人臉在不同情況下完成人臉識(shí)別。在人臉識(shí)別的第一步,首先調(diào)取所訓(xùn)練的數(shù)據(jù)集,然后通過(guò)Python的擴(kuò)展庫(kù)CV2中的Predict()函數(shù),返回個(gè)體標(biāo)簽和置信度評(píng)分。
原始LBPH是定義在像素的鄰域內(nèi),以鄰域中心像素為閾值,將相鄰8個(gè)像素的灰度值與其進(jìn)行比較。若周?chē)袼刂荡笥谥行南袼刂?,則該像素點(diǎn)的位置標(biāo)記為1,否則標(biāo)記為0。最終可得該鄰域內(nèi)中心像素點(diǎn)的LBPH值,并用此值反映該區(qū)域的紋理信息。
在統(tǒng)計(jì)學(xué)中,置信度是一個(gè)概率樣本的置信區(qū)間(Confidence Interval),是對(duì)這個(gè)樣本的某個(gè)總體參數(shù)的區(qū)間估計(jì)。置信區(qū)間展現(xiàn)的是這個(gè)參數(shù)的真實(shí)值有一定概率落在測(cè)量結(jié)果的周?chē)某潭?。置信區(qū)間給出的是被測(cè)量參數(shù)測(cè)量值的可信程度范圍,即前面所要求的“一定概率”,這個(gè)概率被稱(chēng)為置信水平。
在基于LBPH的人臉識(shí)別中,會(huì)返回一個(gè)置信度,置信度越低越好,所以在識(shí)別中可以對(duì)設(shè)備返回的置信度制定一個(gè)評(píng)判識(shí)別好壞的范圍,本系統(tǒng)中要求置信度低于30為好的識(shí)別參數(shù)。但這樣的精確度有時(shí)還不夠準(zhǔn)確,或者有時(shí)會(huì)出現(xiàn)極端情況。因此,在設(shè)計(jì)過(guò)程中采取了統(tǒng)計(jì)學(xué)的方法,通過(guò)多次取置信度,然后取平均值的方法,防止因?yàn)槌霈F(xiàn)極端值影響數(shù)據(jù)結(jié)果,因此排除了返回的置信度的極大值和極小值,如公式(2)所示。
(2)
本文研究了OpenCV在人臉識(shí)別中的具體應(yīng)用,并在應(yīng)用客戶端通過(guò)使用OpenCV庫(kù)中LBPH的人臉識(shí)別技術(shù)、圖像灰度化技術(shù)、圖像數(shù)據(jù)化處理技術(shù),結(jié)合基于人臉識(shí)別基礎(chǔ)的活體檢測(cè)技術(shù),實(shí)現(xiàn)人臉識(shí)別簽到功能。經(jīng)多次實(shí)驗(yàn)測(cè)試,總體識(shí)別效果令人滿意。在識(shí)別功能上,進(jìn)行了不斷完善,基本實(shí)現(xiàn)了人臉識(shí)別簽到功能、教師代簽功能、一鍵導(dǎo)出出勤率等簽到系統(tǒng)應(yīng)有的功能,具有了較好的實(shí)用性。但本系統(tǒng)仍存在不足之處,例如:數(shù)據(jù)庫(kù)存儲(chǔ)方面,沒(méi)有使用云數(shù)據(jù)庫(kù),而是將數(shù)據(jù)保存在本地,所以訓(xùn)練的數(shù)據(jù)量沒(méi)有巨量數(shù)據(jù)提供支持,而且通過(guò)不斷的訓(xùn)練數(shù)據(jù),在識(shí)別時(shí),對(duì)處理器要求較高,使得目前人臉識(shí)別的時(shí)效性還有待提高。