陳濤杰,劉雙,曹穩(wěn),李青陽
(1.鄭州科技學(xué)院,河南鄭州,450000;2.溫州醫(yī)科大學(xué),浙江溫州,325000)
近年來,隨著基于深度學(xué)習(xí)的人工智能技術(shù)的進(jìn)步,人臉識(shí)別也在不斷地應(yīng)用到了各種領(lǐng)域各種場景,其身影已經(jīng)完全融進(jìn)我們的生活。 以前主流的人臉識(shí)別技術(shù)主要是通過臉部反射的光形成的圖像進(jìn)行識(shí)別,這種方式雖然很常見,但是對(duì)于光照環(huán)境的依賴性太高,只要光照環(huán)境微微變化就會(huì)使識(shí)別效果得到改變,已經(jīng)不能夠滿足實(shí)際使用中的需求,而解決這一問題的方案有兩種:一種是基于3D 圖像的人臉識(shí)別,另一種是基于熱成像原理的人臉識(shí)別,但是這兩種方案目前的技術(shù)還不是太成熟太完善,應(yīng)用使用的效果還沒有達(dá)到理想的效果[1]。
從現(xiàn)實(shí)角度來看,隨著科學(xué)技術(shù)的發(fā)展和社會(huì)的進(jìn)步,指紋識(shí)別等一些相對(duì)成熟性的識(shí)別方式都具有一定的不便性,而人臉識(shí)別技術(shù)的研究可以使人們在無接觸的情況下自動(dòng)進(jìn)行,基于樹莓派的人臉識(shí)別技術(shù)更是帶有一定的便攜性,具有低成本易安裝的優(yōu)點(diǎn),由此看來,進(jìn)行快速的人臉識(shí)別技術(shù)能夠便利人們的生活。
從學(xué)術(shù)角度上來看,臉部具有相對(duì)復(fù)雜的細(xì)節(jié)變化的一些自然結(jié)構(gòu),在檢測過程中會(huì)面臨一些挑戰(zhàn),比如人臉的可變性以及臉部的一些附屬物,這表明當(dāng)代人臉識(shí)別技術(shù)仍需進(jìn)一步地完善,其中人臉檢測的因素、收集的信息是人臉識(shí)別技術(shù)的重中之重,只有這兩方面有所突破,人臉識(shí)別技術(shù)才能突飛猛進(jìn)。
綜上而言,研究基于樹莓派的特定人臉識(shí)別,能夠便捷人們的日常生活,提升生活品質(zhì);同時(shí)也可以降低生產(chǎn)成本,促進(jìn)市場上的人臉識(shí)別裝置的改進(jìn)和優(yōu)化,具有一定的實(shí)際應(yīng)用價(jià)值以及良好的市場前景。
本次系統(tǒng)主要研究的是以O(shè)penCV 作為視覺識(shí)別庫的人臉識(shí)別。OpenCV 提供的算法中可以讓圖像顯示得更加清晰,特征更加容易區(qū)別,同時(shí)OpenCV 提供了完善的Python 接口,能夠達(dá)到調(diào)用的作用。所實(shí)現(xiàn)的特定人臉識(shí)別系統(tǒng)囊括多種平臺(tái)資源技術(shù),從底層硬件到驅(qū)動(dòng)層軟件再到應(yīng)用層第三方及業(yè)務(wù)算法邏輯接口函數(shù),硬件是系統(tǒng)的根基,這一層決定著上層部件是否能運(yùn)行牢固。應(yīng)用層軟件包括基于樹莓派Linux 操作系統(tǒng)平臺(tái)圖像處理的一段流程,具體為圖像預(yù)處理、下一鏈條編解碼、框架模型推理、最終識(shí)別易引擎訓(xùn)練的過程。
基于以上的因素考慮,本次系統(tǒng)研究最終決定采用OpenCV 視覺庫,樹莓派開發(fā)板、攝像頭、繼電器的實(shí)現(xiàn)架構(gòu),具體的,通過樹莓派開發(fā)板為CPU 處理器算法運(yùn)行核心和網(wǎng)絡(luò)載體,攝像頭采集獲取人臉圖像,板卡部署樹莓派linux 系統(tǒng)和OpenCV 環(huán)境,映射端口網(wǎng)絡(luò)驅(qū)動(dòng),安裝攝像頭圖像傳輸軟件實(shí)時(shí)查看本地圖像,遠(yuǎn)程連接工具遠(yuǎn)程登錄板卡系統(tǒng),運(yùn)行人臉識(shí)別編譯的Python 腳本,輸入賬號(hào)信息,運(yùn)行算法模型,后臺(tái)推理采集到的人臉圖像是否匹配后臺(tái)預(yù)處理的圖像庫,如果是,則返回識(shí)別成功指令到樹莓派IO 處理器端口,繼而繼電器得以響應(yīng)。
人臉識(shí)別系統(tǒng)主要有四大塊:人臉頭像檢測及拍攝、人臉頭像優(yōu)化處理、人臉頭像特殊區(qū)域提取以及對(duì)照與分析[2]。
關(guān)于實(shí)現(xiàn)人臉識(shí)別主要包含如下幾個(gè)步驟:
(1)獲取捕獲高清的圖像。
(2)人臉識(shí)別比對(duì),比對(duì)也影響著3 個(gè)要點(diǎn),即人臉預(yù)處理,特征提取,特征比對(duì),到最后一步就是人臉識(shí)別結(jié)果輸[3]。
人臉識(shí)別的一個(gè)更困難的方面是它受到光線和環(huán)境的影響[4]。在光線不足的情況下,人臉信息仍然可以完全提取,這是一項(xiàng)重要的技術(shù)升級(jí)。從人臉預(yù)處理,到人臉檢測和人臉對(duì)齊,再到實(shí)時(shí)識(shí)別,可以描述為一個(gè)連鎖過程。對(duì)應(yīng)框圖詳見圖1。
圖1 人臉識(shí)別系統(tǒng)結(jié)構(gòu)流程框圖
為了搭建一個(gè)比較完善的人臉識(shí)別系統(tǒng),本次研究完成了以下三個(gè)階段:
(1)人臉的檢測與收集數(shù)據(jù);
(2)訓(xùn)練識(shí)別器;
(3)人臉識(shí)別。
第1 步:材料清單件:樹莓派3500 萬像素 1080p 傳感器 OV5647 迷你攝像頭模塊。
第2 步:檢測攝像頭是否正常。
第3 步:使用OpenCV 中人臉檢測函數(shù)對(duì)檢測人臉進(jìn)行特征點(diǎn)提取。
人臉檢測是實(shí)現(xiàn)人臉識(shí)別最基礎(chǔ)的一項(xiàng)任務(wù),首先需要對(duì)人臉圖像進(jìn)行捕捉,也就是第一階段,這樣才可以和捕捉到新的人臉圖像進(jìn)行對(duì)比并且去識(shí)別新的人臉圖像,也就是第三階段[5]。
第4 步:收集上一步所提取的特征點(diǎn)數(shù)據(jù),并運(yùn)用算法簡化收集的數(shù)據(jù)。
對(duì)灰度圖的每個(gè)ID 人臉圖像采集40 個(gè)樣本,在最后一個(gè)條件語句中修改要提取的樣本數(shù);如果要識(shí)別新用戶或修改現(xiàn)有用戶的照片,則必須編寫腳本注釋。
第5 步:訓(xùn)練。
在第二階段,需要在數(shù)據(jù)庫里面提取出用戶的人臉圖像數(shù)據(jù),并練習(xí)識(shí)別器??梢允褂锰囟üδ軋?zhí)行此步驟,本研究采用OpenCV 提供的Lbph(localbinary patternshistograms)人臉識(shí)別器。
第6 步:識(shí)別器。
識(shí)別器是實(shí)現(xiàn)人臉識(shí)別技術(shù)的最后一步,利用攝像頭抓捕人臉圖像,當(dāng)人臉圖像是屬于數(shù)據(jù)庫中的圖像時(shí),識(shí)別器會(huì)返回預(yù)測的“id”號(hào)和索引,并且會(huì)顯示出該人臉圖像的可信度;若不是,則只會(huì)顯示人臉圖像的可信度。
本系統(tǒng)所實(shí)現(xiàn)的人臉識(shí)別系統(tǒng)硬件由樹莓派3B+開發(fā)板、Pi 攝像頭和普通鍵盤組成。硬件框圖如圖2 所示。
圖2 硬件構(gòu)成框圖
攝像頭為CSI 接口,排線接入開發(fā)板,連接圖如圖2所示,像素越高越有利于人臉圖像的識(shí)別,但同時(shí)耗費(fèi)的計(jì)算資源也就會(huì)變高,有可能樹莓派運(yùn)行不起來,或者會(huì)變得卡頓。
在標(biāo)準(zhǔn)模塊擴(kuò)展性方面,樹莓派 3B+它擁有非常好的特性。在它主板上有預(yù)留的接口,該接口可與它配套的樹莓派攝像頭進(jìn)行無條件對(duì)接,而且有40 個(gè)GPIO 引腳。
考慮本系統(tǒng)的任務(wù)要求的準(zhǔn)確率較高,且具有便攜性,樹莓派的性能不足以進(jìn)行快速的深度學(xué)習(xí),所以采用基于OpenCV 的人臉識(shí)別。具有下面功能:
(1)拍攝圖像并對(duì)圖像進(jìn)行處理,下載人臉識(shí)別數(shù)據(jù)并通過拍攝圖片建立人臉識(shí)別數(shù)據(jù)。
(2)當(dāng)人臉進(jìn)行采集時(shí),可在圖像識(shí)別的過程之前進(jìn)行計(jì)算,將采集到的圖像數(shù)據(jù)進(jìn)行優(yōu)化處理。
OpenCV 使用Haar 級(jí)聯(lián)分類器的人臉檢測器,通過XML 文件中的數(shù)據(jù)確定每個(gè)局部搜索圖像的位置,并通過內(nèi)置的函數(shù)庫進(jìn)行臉部特征檢測。使用分類器對(duì)矩形區(qū)域進(jìn)行分類,包含圖像中的目標(biāo)對(duì)象,將這些區(qū)域劃分為一系列矩形形狀,并將最后的結(jié)果保存在變量中。在這個(gè)過程中,其主要的方式與方法和處理手段,是通過PCA 算法完成的。
PCA 算法通過對(duì)人臉的投影在這些低維線性空間可以分離,然后這些投影可以用來作為特征的特征向量。它的本質(zhì)是一種線性的映射算法[6]。在圖像識(shí)別中可以對(duì)提取出的圖像特征點(diǎn)進(jìn)行壓縮,找到一個(gè)低維空間,將一組數(shù)據(jù)映射到這個(gè)低維空間中,采用更少數(shù)據(jù)量表示重要的信息,它有如下算法步驟:
式(1)中μ 為觀測樣本的均值向量,因?yàn)?xj是一個(gè)零向量,所以μ 為零值向量[8],∑是n×n矩陣,求解得出:
根據(jù)運(yùn)算的要求和需要,我們將新特征向量組進(jìn)行相對(duì)應(yīng)的轉(zhuǎn)化和改變。
那么,∑的第i 個(gè)特征值等于方差,第i 個(gè)主成分的方差貢獻(xiàn)率為:
繼而在累計(jì)方差貢獻(xiàn)率這一方面,前面的m 個(gè)主成分的相應(yīng)貢獻(xiàn)率為:
在累計(jì)方差貢獻(xiàn)方面上來說,如果這m 個(gè)貢獻(xiàn)率足夠大,然后只取前m 個(gè)主成分作為新特征,對(duì)L-m 個(gè)新特征進(jìn)行取整,最終實(shí)現(xiàn)初始觀測數(shù)據(jù)的特征提取。此時(shí)重構(gòu)誤差的極小值為:
重構(gòu)誤差的極大值為:
該方法的基本思想是將圖像從高維向量轉(zhuǎn)化為低維向量作為空間模型,然后把人臉繪制到低維空間,將預(yù)測系統(tǒng)作為識(shí)別人臉的向量。輸出識(shí)別模板對(duì)應(yīng)的編號(hào)并與數(shù)據(jù)庫中模板的輸出編號(hào)進(jìn)行比較,以確定哪一個(gè)是最接近的,PCA 算法流程圖如圖3 示。
圖3 PCA 算法處理流程圖
圖4 人臉識(shí)別結(jié)果圖
(1)模型訓(xùn)練
具有的重要環(huán)節(jié)有下面所涉及的幾個(gè)部分:
①通過采集或下載的方式,得到一個(gè)人臉照片集用于訓(xùn)練。
②求出各個(gè)訓(xùn)練的人臉圖像的特征值,并保存最大特征值所對(duì)應(yīng)的M 個(gè)圖像。這M 個(gè)圖像可以定義為“特征臉空間”,添加新面時(shí),可以更新和重新計(jì)算特征面[9]。
③在“特征平面空間”中,要識(shí)別的每個(gè)單獨(dú)的圖像被投影到每個(gè)軸(特征平面)上,并且計(jì)算m 維權(quán)重向量。簡單來說就是計(jì)算每個(gè)個(gè)體的M 個(gè)權(quán)重空間對(duì)應(yīng)的坐標(biāo)值[10]。
(2)身份識(shí)別
①將新收集的圖像投影到每個(gè)特征面上獲得權(quán)重集(權(quán)重向量)。
②判斷新的頭像中是否有符合人臉特征的區(qū)域。
③如果頭像中具有人臉特征的區(qū)域,系統(tǒng)就會(huì)計(jì)算每個(gè)個(gè)體的權(quán)重,并將其與之前的權(quán)重進(jìn)行比對(duì),選擇距離最近的一個(gè),識(shí)別該個(gè)體,如果超過了設(shè)置的閾值,直接跳過,識(shí)別下一個(gè)個(gè)體。
④更新特征面或權(quán)重模式。
⑤若檢測到某個(gè)陌生的人臉圖像多次出現(xiàn),系統(tǒng)會(huì)自動(dòng)計(jì)算該圖像的權(quán)重集,并加入已知的人臉圖像中。
分別測試系統(tǒng)在不同側(cè)臉度數(shù)的識(shí)別率,測試結(jié)果如表1 所示,然后測試在單人環(huán)境和多人環(huán)境中平均識(shí)別出人臉的時(shí)間,結(jié)果如表2 所示。根據(jù)測試結(jié)果得知對(duì)于側(cè)臉的識(shí)別,識(shí)別率會(huì)明顯降低一些,在單人環(huán)境中的識(shí)別率也高于多人環(huán)境中的識(shí)別率,光照條件以及側(cè)臉度數(shù)的高低會(huì)影響識(shí)別率,在加入PCA 算法后的系統(tǒng)與傳統(tǒng)人臉識(shí)別系統(tǒng)在識(shí)別準(zhǔn)確度方面有明顯的提升。
表1 測試結(jié)果
表2 測試結(jié)果
本研究以人臉識(shí)別智能門禁為研究背景,設(shè)計(jì)了一個(gè)基于樹莓派PCA 算法的人臉識(shí)別系統(tǒng)。針對(duì)主流人臉識(shí)別系統(tǒng)對(duì)光照環(huán)境的依賴太高,利用人臉生物特征的唯一性,對(duì)傳統(tǒng)人臉識(shí)別系統(tǒng)加入PCA 算法,進(jìn)行降維處理,將多個(gè)變量進(jìn)行線性變換,在少數(shù)重要變量當(dāng)中選擇一個(gè),這樣便可以將人臉檢測的難度降低,在識(shí)別準(zhǔn)確度上有所提升。
當(dāng)然,本次研究設(shè)計(jì)離實(shí)際的市場產(chǎn)品的開發(fā)還相差甚遠(yuǎn),只是實(shí)現(xiàn)了功能需求而已,系統(tǒng)還有待迭代優(yōu)化,為了更好地與市場產(chǎn)品開發(fā)接軌,接下來會(huì)基于本需求重點(diǎn)思考性能點(diǎn),以用戶的角度去設(shè)計(jì)開發(fā),以前沿技術(shù)的角度去完善該系統(tǒng)。