趙衛東,秦 鋒
(1.滁州職業技術學院,安徽 滁州 239000;2.安徽工業大學,安徽 馬鞍山 243002)
隨著社會生產力的提高,計算機視覺技術越來越多地用于各行各業,比如人臉識別,金融行業中的刷臉支付、公司里的人臉考勤、安防監控中的可疑人員識別等等[1-2]。人臉識別是計算機視覺技術在現實世界中的落地點之一,是較為通用的技術落地突破口。但是,識別算法對同一個人在不同時間段不同背景不同的穿戴情況有較高的要求。
在人臉識別方面,國內研究人員已經取得了一定研究成果,如任飛凱[3]提出基于LBP和數據擴充的CNN人臉識別研究,針對卷積神經網絡在人臉識別存在的數據集比較少的問題,容易發生過擬合,提出了對人臉進行局部二值模式處理,提升圖像特征;再引入深度卷積生成對抗網絡對局部二值化的人臉進行生成,有效的擴充數據集,提升卷積神經網絡的泛化能力。該研究從擴展數據展開討論,雖然解決部分問題,但擴展效果有限,在部分場景中,算法泛化能力仍然不理想。司琴[4]利用局部二值模式信息與原圖信息相結合作為SDFVGG網絡的輸入,使得提取的人臉特征更加豐富且更具表征能力;SDFVGG網絡是將VGG網絡進行深淺特征相融合后的網絡,將網絡深淺特征相融合。該研究從學習算法展開討論,雖然解決部分問題,但未考慮數據量不足問題,在部分訓練數據不足的項目場景中,效果達不到工程要求。黃法秀[5]提出了數據增廣下的人臉識別,針對訓練數據缺乏問題,提出了利用濾波、亮度調節和腐蝕操作3種傳統圖像處理方法 ,增加數據量和數據的多樣性,進而來提高識別算法性能;將原始數據和增廣數據作為訓練數據訓練模型,選擇了從不同地方拍攝的視頻上截取的人臉圖像組成了四個測試集,增廣方式對提升識別性能有一定效果,但考慮算法與數據增廣兼容的問題,在定制化場景中,算法識別效果往往會有所下降。
本研究的識別對象是人臉,算法需要排除拍攝環境的各種干擾。本研究的目的為了精準識別人臉信息,對抗光照干擾,對抗復雜環境干擾。本文結合自動標記工程與深度神經網絡,設計并實現了一套人臉圖像智能識別算法。本文解決了兩個問題:實現數據標記的大規模快速化和自動化,解決數據標記工作量大的問題;基于深度神經網絡,解決人臉識別穩定性和準確度問題。
在實際應用場景中,同一個人在不同時間段、不同環境、不同穿戴和不同表情下拍攝的圖像會有一定的差異,這些對于人臉識別算法都有一定的挑戰。開發出一套準確且穩定,能夠排除各種干擾的人臉識別算法,具有很高的使用價值和社會價值。針對人臉識別項目中的問題,本文算法流程設計如圖1所示。本研究基于掃描儀圖像制式SDK,完成人臉圖像的讀取與分解。首先采集大數據樣本庫,其中包含了大量人臉圖像,由于傳統人工標記時間過長、商業版本標記軟件付費過高,本算法開發了自動標記算法,基于直方圖均衡化和OpenCV函數,在完成90%人臉自動檢測和標記基礎上,對剩下的10%機器檢測不確定的圖像,進行人工干預,完成整個數據工作的人臉標記,同時保證了效率和質量。接著,本研究從深度神經網絡的原理出發,深度分析了網絡組成和訓練機理,形成人臉識別系統。最后結合自動標記和深度神經網絡,形成本研究的人臉識別系統。待識別原圖如圖2所示,圖像中人物戴了帽子,對人臉識別算法有一定干擾,本文后續將對其進行識別和討論。
為了展開人臉識別研究工作,首先進行數據收集,即采集大量包含人臉的圖像,并且圖像中的人臉信息(姓名)也包含在采集信息內。然后進行數據清洗,將人臉所在圖像區域,按照統一大小進行原清晰度截取,截取出包含人臉圖像的圖像塊,本研究中統一大小為256*256像素。由此構成本研究的圖像學習庫,圖像庫中包含10萬幀圖像塊,為了達到樣本庫全面覆蓋性,從而保證深度學習算法都學習到,樣本庫種類覆蓋各個年齡層、各種表情以及各個角度,每個圖像塊都有對應的人臉信息。深度神經網絡的隱藏層上有激活函數和偏移值,假設首先建立M個隱藏層,依據一定的順序將輸入層和隱藏層進行聯結,然后嵌入激活函數和偏移值,而每個節點有自己的激活函數和偏移值。建立和訓練深度神經網絡的過程就是求解每個隱藏層節點激活函數、權重和偏移值的過程。
其中的激活函數是對各輸入求和之后,做增強的函數,典型激活函數有:Sigmoid、tanh、ReLU。由于ReLU函數的增強效果都體現在X軸以上[6-7],更適合本研究中的人臉識別問題,各激活函數如下所示:

(1)
tanh=tanh(x) (2)
ReLU=max(0,x) (3)
式中x代表輸入值,等式左側代表輸出值。深度神經網絡的本質就是權值乘以輸入值加上偏移值。對于求解權值和偏移值,可以通過反向傳播和梯度下降相結合的方式來求解,開始時采用隨機數初始化各個節點的權值,然后通過深度神經網絡計算輸出值跟真實輸出值做比對。如果這個比對值相差比較大,則修改當前層節點的權重[8]。當這個比對值相差不大時,則修改更低一層的權重。按照這個規則一直往前推,逐步推薦到第一層的權值。
深度神經網絡存在3個原生缺陷:梯度消失、訓練耗時過長、存在過度擬合。深度神經網絡求解是基于反向傳播和梯度下降,但是反向傳播從輸出層開始一步一步推進到第一層時,越到低層,節點權值變化越小,直到沒變化,即出現了梯度消失的現象[9]。本研究的解決方法是:使用ReLU作為激活函數,不選擇傳統的隨機設置方式,采用特定標準差來初始化節點權重。根據本研究大量經驗性實驗,每層將輸入值轉化以0為中心的分布。最后,在反向傳播過程中限制梯度不超過某個閾值,如果超過就減去相應的閾值。
對于訓練時間過長的問題,通常采用已有的訓練好的網絡,在此基礎上再進行訓練,本研究基于公開基本框架,減少一定的訓練時間。除此之外,本函數對無標簽訓練數據,以類似聚類算法進行訓練,可以提取較為核心特征,通過這樣的規則一步步得到整個隱藏層,最后再用有標簽數據來矯正性訓練最終網絡。
對于過擬合的問題,本研究采用早停止模式,一旦發現驗證集上性能下降就停止訓練。添加模型復雜度懲罰項,模型用到的節點權值越大,懲罰越大,不僅使偏差最小化,同時使模型簡單化。接著使用丟包方式,每次隨機選擇一些節點不參與訓練,只有在最終輸出時這些節點生效,這些節點輸出值乘以概率值,降低了節點之間的依賴性。本研究的樣本庫經過數據的不斷補充,不僅數據量大,而且質量高,用來做訓練可以提升算法泛化能力。
經過本研究系統的訓練和優化方案,對大數據樣本庫中人臉圖像塊和人臉信息,進行訓練,生成人臉識別模型框架,后續只要輸入疑似人臉圖像塊,就可以輸出人臉信息結果。
在實際工業級項目中,需要采集大量的圖像用于學習,訓練深度學習框架,本研究采集了10萬幀人臉圖像,如此龐大的數據庫,需要進行高質量的精確標注。目前傳統的做法是人工標注或者購買比較好用的商業版本自動標注軟件。人工標注的方法需要大量的人力成本,在當下人力成本昂貴的大背景下,人工標注成本巨大,所需時間較長,而且不排除主觀誤差的可能,如果采用人工標注,對項目的進度、成本和質量都構成了較高風險。付費的商業版本自動標注軟件比較好用,可以提高標注效率和質量,但是存在成本較高的問題,尤其越好用的標注軟件往往價格昂貴,而價格低廉的標注軟件解決不了項目標注工程中的痛點問題。在此背景下,本研究提出了一套自動標記方案,并且在項目中進行了實施。
首先采用基于OpenCV的人臉檢測,這種方式可以檢測出大部分人臉,為標注做好準備,少部分情況,比如斜臉和帶帽等等干擾,檢測效果會受到影響,但是這種情況較少,可以采取人工介入的半自動化檢測的方式。這樣既保證了標注效率,又保證了標注質量。
為了增強人臉圖像特性,進行直方圖均衡化處理[10]:

H、W代表圖像高、寬,histo(k)代表像素灰度值是k的像素個數。

histo代表輸出圖的直方圖,histi代表輸入圖的直方圖,建立一個均衡化映射關系。

上式代表累加直方圖的數學模型。進行轉化,得到q值:

q值代表經過均衡化后的像素映射值。進行圖像矩陣化處理:

式中O代表像素值,I代表輸入像素值。完成直方圖均衡化處理后,開始檢測人臉,本研究利用開源視覺庫函數檢測并保存目標外接矩形大小。該函數進行多尺度多目標檢測,通過檢測符合的模板匹配對象,可有多個目標,均輸出到數據集向量中[11]。
完成檢測后,進行標記庫特征訓練,準備2種樣本,正樣本為人臉圖像特征,負樣本為非人臉圖像的其它圖像特征,得到正、負樣本集以及描述文件后開始訓練。啟動Haartraining訓練函數,載入正、負樣本圖像特征,訓練并判斷是否達到指定目標,根據訓練結果值與實際值比對結果,識別率和誤報率如果達標,則生成相應的xml文件,否則進行糾偏并繼續訓練直到達到指定目標[12]。
在本文系統中,先建立深度神經網絡框架并訓練,形成識別機制,達到精準識別人臉的目的;同時建立自動標記,在數據采集后達到自動標記,保證了數據工程的效率和質量。
如圖3所示,大量人臉圖像經過自動標記后,紅色標記框準確的在人臉圖像區域上。如圖4所示,結合自動標記和深度神經網絡的識別算法處理圖2,得到識別結果,可見識別精準,識別信息會在后續實驗部分的軟件界面中顯示。

圖3 自動標記結果 圖4 人臉識別結果
本文系統基于QT平臺開發實現,深度學習環境基于英偉達1080TI顯卡部署完成,算法實驗參數:ReLu= 0.286。
如圖5所示,本系統算法界面功能有:“自動標記”、“深度神經網絡”、“人臉識別”、“識別結果”和“數據庫圖像”。 如圖6所示,待識別的人臉圖像不但戴了帽子還是側臉,由于周邊信息干擾較大,對人臉識別算法有較大干擾。如圖7所示,本研究耦合自動標記、OpenCV函數和深度神經網絡,檢出人臉和調出的數據庫圖像是同一個人,可見本研究檢測正確、識別正確。
為了對比已有類似算法,驗證本算法的先進性,設立對照組1、2兩組,分別來自文獻3、4的技術,本研究將其應用在本系統內進行測試對比。文獻3提出了對人臉進行局部二值模式處理,提升圖像特征;再引入深度卷積生成對抗網絡對局部二值化的人臉進行生成,有效的擴充數據集,提升卷積神經網絡的泛化能力[3]。該研究從擴展數據展開討論,雖然解決部分問題,但擴展效果有限,在部分落地場景中,算法泛化能力仍然不理想,如圖8所示,雖然檢測正確,但是識別有誤,未能很好的完成人臉識別。文獻4將局部二值模式信息與原圖信息相結合作為SDFVGG網絡的輸入,使得提取的人臉特征更加豐富且更具表征能力[4]。該研究從學習算法展開討論,雖然解決部分問題,但未考慮數據量不足問題,在部分訓練數據不足項目場景中,識別效果達不到工程要求。如圖9所示,檢測有誤,直接導致識別不出結果。


圖9 文獻[4]算法
為了解決人臉圖像特征難識別和標記工程量過大的問題,本文分別從大數據樣本自動標記、傳統圖像目標檢測方面,利用深度神經網絡復雜數據和隱藏特性的分析計算能力,根據人臉圖像特征,對大數據樣本圖像庫進行分析,區分人臉圖像與非人臉圖像,結合傳統OpenCV人臉檢測和深度學習,建立起一套健壯的人臉識別機制。為人臉識別的準確度和穩定性,給出了算法保證和數據基礎。下一步要解決的問題是將算法從電腦端移植到移動端,同時保證算法的效率和識別精度。