摘要:近年來,人臉識別技術(shù)已經(jīng)由弱人工智能向強人工智能轉(zhuǎn)化,隨著人臉識別算法的不斷改進(jìn),人臉識別技術(shù)已經(jīng)在公安、金融等部門得到了廣泛應(yīng)用。本文提出了一種Python語言利用Dlib第三方庫實現(xiàn)基于深度學(xué)習(xí)的人臉識別方法。
關(guān)鍵詞:Python;Dlib;人臉識別
1、人臉識別技術(shù)概述
人臉識別技術(shù)是一種基于圖像識別,是根據(jù)人臉的特征信息進(jìn)行身份判定的技術(shù),它經(jīng)過了幾十年的發(fā)展已經(jīng)由弱人工智能向強人工智能轉(zhuǎn)化,隨著人臉識別算法的不斷改進(jìn),人臉識別技術(shù)已經(jīng)成為人工智能領(lǐng)域的重要應(yīng)用。目前人臉識別技術(shù)已經(jīng)比較成熟,得到了公安金融等部門的廣泛應(yīng)用。(1)公安部門:通過相片匹配戶籍?dāng)?shù)據(jù),尋找目標(biāo)對象。(2)安防領(lǐng)域:通過人臉識別對重點管控區(qū)域人員的身份識別,在公共場所對人群進(jìn)行監(jiān)視,以達(dá)到身份識別的目的,例如在機場、車站等人流量大的場所,通過智能監(jiān)控系統(tǒng)識別犯罪分子。(3)金融領(lǐng)域:利用人臉識別實現(xiàn)交易支付,例如支付寶實名認(rèn)證用戶可通過刷臉支付。
2、人臉識別的過程
人臉識別是一個比較復(fù)雜的過程,歸納起來可以由五個步驟組成:人臉檢測、人臉關(guān)鍵點檢測、人臉規(guī)整、人臉特征提取、人臉識別,人臉識別的過程如圖1所示。不同技術(shù)會采用不同的方法來實現(xiàn)人臉面部特征的抽象,比如Harmon和Lesk采用多維特征矢量來表示,而Kaya和Kobayashi則采用歐氏距離來表示,本文第三部分提到的Dlib庫則是基于深度學(xué)習(xí),利用已經(jīng)訓(xùn)練好的人臉關(guān)鍵點檢測器和人臉識別模型,得到人臉面部特征值。
3、Dlib庫介紹
近些年,Python語言發(fā)展迅猛,在很多開發(fā)語言排行榜名列前三名。Python語言能夠得到這么快的發(fā)展,得益于其源代碼開源性和代碼開發(fā)的高效性。Python社區(qū)提供了大量的第三方庫,它們能夠?qū)崿F(xiàn)科學(xué)計算、數(shù)據(jù)可視化、數(shù)據(jù)分析等多個領(lǐng)域,Dlib庫就是一個知名的第三方庫,能夠?qū)崿F(xiàn)人臉檢測和識別,其算法采用HOG特征與級聯(lián)分類器,算法的實現(xiàn)大概過程有:(1)將圖像灰度化。(2)采用Gamma校正法對圖像進(jìn)行顏色空間的標(biāo)準(zhǔn)化。(3)對每個圖像像素進(jìn)行梯度計算。(4)對圖像進(jìn)行小單元格劃分。(5)生成每個單元格的梯度直方圖。(6)把單元格組合成大的塊,塊內(nèi)歸一化梯度直方圖。(7)生成HOG特征描述向量。
4、Python利用Dlib庫實現(xiàn)人臉識別
4.1 前期準(zhǔn)備
(1)安裝好Dlib第三方庫。
(2)下載人臉識別模型和人臉關(guān)鍵點檢測器,分別保存為文件1.dat和2.dat(可從網(wǎng)址http://dlib.net/files/下載)。
(3)準(zhǔn)備好已知人臉相片和待識別人臉相片,本例準(zhǔn)備已知人臉相片20張存放在Faces文件夾中,待識別人臉2張,其中test01.jpg和Faces文件夾中的第19張相片是同一個人,test02.jpg和Faces文件夾中的第7張相片是同一個人,主程序為testface.py,整個文件夾如圖2所示。
4.2 實現(xiàn)過程
實現(xiàn)過程主要有三個步驟:根據(jù)人臉識別模型和人臉關(guān)鍵點檢測器,得到已知人臉相片的特征值庫;根據(jù)人臉識別模型和人臉關(guān)鍵點檢測器,得到待識別人臉相片的特征值;計算待識別人臉相片的特征值和特征值庫的歐式距離,距離最小者就是參考識別結(jié)果。程序的實現(xiàn)主要包括以下三個子函數(shù),fun1函數(shù)功能是得到一張相片的特征值,fun2函數(shù)功能是得到多張相片的特征值庫,fun3函數(shù)功能是計算待識別人臉相片的特征值和特征值庫的歐式距離,輸出距離最小者為參考識別結(jié)果。
(1)fun1函數(shù)代碼如下,例如執(zhí)行fun1(test01. jpg)就可以得到以下128個特征值,結(jié)果如表1所示。
(2)fun2函數(shù)代碼如下。
(3)fun3函數(shù)代碼如下。
(4)主程序代碼如下。
主程序分別用test01.jpg和test02.jpg相片進(jìn)行測試,測試結(jié)果均正確,都能識別出與test01.jpg和test02.jpg匹配的相片,測試結(jié)果圖3所示。
5、結(jié)束語
本方法實現(xiàn)了人臉識別的功能,但由于每張相片有128個特征值,如果已知人臉相片較多,特征值庫較大,計算歐式距離所用時間較長,還要改進(jìn)算法,需要引進(jìn)并行計算等技術(shù),提高人臉識別效率。
作者簡介:張枝令,寧德師范學(xué)院信息與機電工程學(xué)院,副教授,研究方向:計算機網(wǎng)絡(luò)、數(shù)據(jù)挖掘和大數(shù)據(jù)。