陳濤杰,劉雙,曹穩,李青陽
(1.鄭州科技學院,河南鄭州,450000;2.溫州醫科大學,浙江溫州,325000)
近年來,隨著基于深度學習的人工智能技術的進步,人臉識別也在不斷地應用到了各種領域各種場景,其身影已經完全融進我們的生活。 以前主流的人臉識別技術主要是通過臉部反射的光形成的圖像進行識別,這種方式雖然很常見,但是對于光照環境的依賴性太高,只要光照環境微微變化就會使識別效果得到改變,已經不能夠滿足實際使用中的需求,而解決這一問題的方案有兩種:一種是基于3D 圖像的人臉識別,另一種是基于熱成像原理的人臉識別,但是這兩種方案目前的技術還不是太成熟太完善,應用使用的效果還沒有達到理想的效果[1]。
從現實角度來看,隨著科學技術的發展和社會的進步,指紋識別等一些相對成熟性的識別方式都具有一定的不便性,而人臉識別技術的研究可以使人們在無接觸的情況下自動進行,基于樹莓派的人臉識別技術更是帶有一定的便攜性,具有低成本易安裝的優點,由此看來,進行快速的人臉識別技術能夠便利人們的生活。
從學術角度上來看,臉部具有相對復雜的細節變化的一些自然結構,在檢測過程中會面臨一些挑戰,比如人臉的可變性以及臉部的一些附屬物,這表明當代人臉識別技術仍需進一步地完善,其中人臉檢測的因素、收集的信息是人臉識別技術的重中之重,只有這兩方面有所突破,人臉識別技術才能突飛猛進。
綜上而言,研究基于樹莓派的特定人臉識別,能夠便捷人們的日常生活,提升生活品質;同時也可以降低生產成本,促進市場上的人臉識別裝置的改進和優化,具有一定的實際應用價值以及良好的市場前景。
本次系統主要研究的是以OpenCV 作為視覺識別庫的人臉識別。OpenCV 提供的算法中可以讓圖像顯示得更加清晰,特征更加容易區別,同時OpenCV 提供了完善的Python 接口,能夠達到調用的作用。所實現的特定人臉識別系統囊括多種平臺資源技術,從底層硬件到驅動層軟件再到應用層第三方及業務算法邏輯接口函數,硬件是系統的根基,這一層決定著上層部件是否能運行牢固。應用層軟件包括基于樹莓派Linux 操作系統平臺圖像處理的一段流程,具體為圖像預處理、下一鏈條編解碼、框架模型推理、最終識別易引擎訓練的過程。
基于以上的因素考慮,本次系統研究最終決定采用OpenCV 視覺庫,樹莓派開發板、攝像頭、繼電器的實現架構,具體的,通過樹莓派開發板為CPU 處理器算法運行核心和網絡載體,攝像頭采集獲取人臉圖像,板卡部署樹莓派linux 系統和OpenCV 環境,映射端口網絡驅動,安裝攝像頭圖像傳輸軟件實時查看本地圖像,遠程連接工具遠程登錄板卡系統,運行人臉識別編譯的Python 腳本,輸入賬號信息,運行算法模型,后臺推理采集到的人臉圖像是否匹配后臺預處理的圖像庫,如果是,則返回識別成功指令到樹莓派IO 處理器端口,繼而繼電器得以響應。
人臉識別系統主要有四大塊:人臉頭像檢測及拍攝、人臉頭像優化處理、人臉頭像特殊區域提取以及對照與分析[2]。
關于實現人臉識別主要包含如下幾個步驟:
(1)獲取捕獲高清的圖像。
(2)人臉識別比對,比對也影響著3 個要點,即人臉預處理,特征提取,特征比對,到最后一步就是人臉識別結果輸[3]。
人臉識別的一個更困難的方面是它受到光線和環境的影響[4]。在光線不足的情況下,人臉信息仍然可以完全提取,這是一項重要的技術升級。從人臉預處理,到人臉檢測和人臉對齊,再到實時識別,可以描述為一個連鎖過程。對應框圖詳見圖1。

圖1 人臉識別系統結構流程框圖
為了搭建一個比較完善的人臉識別系統,本次研究完成了以下三個階段:
(1)人臉的檢測與收集數據;
(2)訓練識別器;
(3)人臉識別。
第1 步:材料清單件:樹莓派3500 萬像素 1080p 傳感器 OV5647 迷你攝像頭模塊。
第2 步:檢測攝像頭是否正常。
第3 步:使用OpenCV 中人臉檢測函數對檢測人臉進行特征點提取。
人臉檢測是實現人臉識別最基礎的一項任務,首先需要對人臉圖像進行捕捉,也就是第一階段,這樣才可以和捕捉到新的人臉圖像進行對比并且去識別新的人臉圖像,也就是第三階段[5]。
第4 步:收集上一步所提取的特征點數據,并運用算法簡化收集的數據。
對灰度圖的每個ID 人臉圖像采集40 個樣本,在最后一個條件語句中修改要提取的樣本數;如果要識別新用戶或修改現有用戶的照片,則必須編寫腳本注釋。
第5 步:訓練。
在第二階段,需要在數據庫里面提取出用戶的人臉圖像數據,并練習識別器。可以使用特定功能執行此步驟,本研究采用OpenCV 提供的Lbph(localbinary patternshistograms)人臉識別器。
第6 步:識別器。
識別器是實現人臉識別技術的最后一步,利用攝像頭抓捕人臉圖像,當人臉圖像是屬于數據庫中的圖像時,識別器會返回預測的“id”號和索引,并且會顯示出該人臉圖像的可信度;若不是,則只會顯示人臉圖像的可信度。
本系統所實現的人臉識別系統硬件由樹莓派3B+開發板、Pi 攝像頭和普通鍵盤組成。硬件框圖如圖2 所示。

圖2 硬件構成框圖
攝像頭為CSI 接口,排線接入開發板,連接圖如圖2所示,像素越高越有利于人臉圖像的識別,但同時耗費的計算資源也就會變高,有可能樹莓派運行不起來,或者會變得卡頓。
在標準模塊擴展性方面,樹莓派 3B+它擁有非常好的特性。在它主板上有預留的接口,該接口可與它配套的樹莓派攝像頭進行無條件對接,而且有40 個GPIO 引腳。
考慮本系統的任務要求的準確率較高,且具有便攜性,樹莓派的性能不足以進行快速的深度學習,所以采用基于OpenCV 的人臉識別。具有下面功能:
(1)拍攝圖像并對圖像進行處理,下載人臉識別數據并通過拍攝圖片建立人臉識別數據。
(2)當人臉進行采集時,可在圖像識別的過程之前進行計算,將采集到的圖像數據進行優化處理。
OpenCV 使用Haar 級聯分類器的人臉檢測器,通過XML 文件中的數據確定每個局部搜索圖像的位置,并通過內置的函數庫進行臉部特征檢測。使用分類器對矩形區域進行分類,包含圖像中的目標對象,將這些區域劃分為一系列矩形形狀,并將最后的結果保存在變量中。在這個過程中,其主要的方式與方法和處理手段,是通過PCA 算法完成的。
PCA 算法通過對人臉的投影在這些低維線性空間可以分離,然后這些投影可以用來作為特征的特征向量。它的本質是一種線性的映射算法[6]。在圖像識別中可以對提取出的圖像特征點進行壓縮,找到一個低維空間,將一組數據映射到這個低維空間中,采用更少數據量表示重要的信息,它有如下算法步驟:
式(1)中μ 為觀測樣本的均值向量,因為 xj是一個零向量,所以μ 為零值向量[8],∑是n×n矩陣,求解得出:
根據運算的要求和需要,我們將新特征向量組進行相對應的轉化和改變。
那么,∑的第i 個特征值等于方差,第i 個主成分的方差貢獻率為:
繼而在累計方差貢獻率這一方面,前面的m 個主成分的相應貢獻率為:
在累計方差貢獻方面上來說,如果這m 個貢獻率足夠大,然后只取前m 個主成分作為新特征,對L-m 個新特征進行取整,最終實現初始觀測數據的特征提取。此時重構誤差的極小值為:
重構誤差的極大值為:
該方法的基本思想是將圖像從高維向量轉化為低維向量作為空間模型,然后把人臉繪制到低維空間,將預測系統作為識別人臉的向量。輸出識別模板對應的編號并與數據庫中模板的輸出編號進行比較,以確定哪一個是最接近的,PCA 算法流程圖如圖3 示。

圖3 PCA 算法處理流程圖

圖4 人臉識別結果圖
(1)模型訓練
具有的重要環節有下面所涉及的幾個部分:
①通過采集或下載的方式,得到一個人臉照片集用于訓練。
②求出各個訓練的人臉圖像的特征值,并保存最大特征值所對應的M 個圖像。這M 個圖像可以定義為“特征臉空間”,添加新面時,可以更新和重新計算特征面[9]。
③在“特征平面空間”中,要識別的每個單獨的圖像被投影到每個軸(特征平面)上,并且計算m 維權重向量。簡單來說就是計算每個個體的M 個權重空間對應的坐標值[10]。
(2)身份識別
①將新收集的圖像投影到每個特征面上獲得權重集(權重向量)。
②判斷新的頭像中是否有符合人臉特征的區域。
③如果頭像中具有人臉特征的區域,系統就會計算每個個體的權重,并將其與之前的權重進行比對,選擇距離最近的一個,識別該個體,如果超過了設置的閾值,直接跳過,識別下一個個體。
④更新特征面或權重模式。
⑤若檢測到某個陌生的人臉圖像多次出現,系統會自動計算該圖像的權重集,并加入已知的人臉圖像中。
分別測試系統在不同側臉度數的識別率,測試結果如表1 所示,然后測試在單人環境和多人環境中平均識別出人臉的時間,結果如表2 所示。根據測試結果得知對于側臉的識別,識別率會明顯降低一些,在單人環境中的識別率也高于多人環境中的識別率,光照條件以及側臉度數的高低會影響識別率,在加入PCA 算法后的系統與傳統人臉識別系統在識別準確度方面有明顯的提升。

表1 測試結果

表2 測試結果
本研究以人臉識別智能門禁為研究背景,設計了一個基于樹莓派PCA 算法的人臉識別系統。針對主流人臉識別系統對光照環境的依賴太高,利用人臉生物特征的唯一性,對傳統人臉識別系統加入PCA 算法,進行降維處理,將多個變量進行線性變換,在少數重要變量當中選擇一個,這樣便可以將人臉檢測的難度降低,在識別準確度上有所提升。
當然,本次研究設計離實際的市場產品的開發還相差甚遠,只是實現了功能需求而已,系統還有待迭代優化,為了更好地與市場產品開發接軌,接下來會基于本需求重點思考性能點,以用戶的角度去設計開發,以前沿技術的角度去完善該系統。