裴慶慶
(鄭州工業應用技術學院 河南省新鄭市 451100)
隨著人臉識別技術的不斷的發展,其不僅能夠將靜態圖片中的人臉準確的識別、標記出來,還能夠捕獲動態視頻中的人臉信息,并做出準確識別,這個過程即為人臉識別人臉識別是目前最直觀的生物特征識別技術,在各個領域的應用也十分廣泛。目前常用的生物識別技術包括指紋識別、語音識別、虹膜識別等,相比這類生物識別技術, 人臉識別具有非侵入性的功能優勢,只要錄像設備視野內出現人臉信息,系統就可以識別出人臉,因此即使在用戶不希望與系統合作的環境中該技術仍然適用。除此以外人臉識別系統還具備身份認證、欺詐檢測、訪問控制等多種功能。當然,現實中人臉圖像具有高度的可變性,比如光照因素、年齡變經、頭部角度與姿勢、表情等因素均有可能更改臉部圖像特征,因此在環境不受限制的條件下人臉識別是最具挑戰性的生物識別方法之一。
深度學習是機器學習范疇中的一個子集,是指利用深度神經網絡實現機器學習的一種方法模型,也稱為深度結構學習或分層學習。深度學習需要海量的數據支持及強大的計算能力,學習的深度越深就能夠提取到越高級的特征。深度學習是一種無需人工構建特征的端到端的數據驅動方法,其根據標簽融合、交叉、替換抽取到的特征,完成自我調節,最終獲得更優化的模型。在非監督數據上可以通過以下兩個步驟有效訓練多層神經網絡:先是層層構建單層的神經元,每次訓練即訓練一個單層網絡;然后所有訓練都結束后再用wake-sleep 算法進行優化處理。在該算法中最頂層是單層神經網絡,其它層間均為雙向權重的圖模型,雙向權重包括向上與向下兩種,向上權重的作用是“認知”,向下權重的作用是“生成”,每層網絡訓練完成后,wake-sleep 算法會對所有權重做出調整,以保證所生成的最頂層表示能夠準確復原底層節點,使得“認知”與“生成”達成一致。wake-sleep 算法包括“wake”與“sleep”兩個階段,wake(醒)階段通過外界的特征與向上的權重采用梯度下降的方法修改層與層之間的向下權重,是一個認知的過程,而sleep(睡)階段則是通過最頂層表示與向下的權重生成底層狀態,修改層與層之間的向上權重,屬于生成過程。學習第一層的參數,得到一個三層神經網絡的隱藏層,該隱藏層可以使得輸入與輸出相差最小。如此層層訓練、學習即可得到每一層的參數。
人臉識別主要流程包括建立數據集、識別目標正面、將實時采集的人臉圖像與數據庫中存儲的面部圖像進行比較、識別圖像。訓練模型之前采集人臉圖像時要對數據進行預處理,提高數據質量;然后檢測人臉的位置,標注人臉關鍵點;對采集到的人臉圖像進行結構簡化處理,將人臉圖像的特征提取出來,為后續的人臉識別做準備;人臉識別過程中將訓練好的數據輸入系統,構建人臉識別模型后再與目標圖數據庫中的數據進行比對;最后再進行活體檢測,即通過眨眼、點頭等動作檢測人臉是否實際生物存在。下文針對每個環節進行詳細介紹:
人臉圖像采集主要包括兩個來源,一是批量疊加導入現有的人臉圖像,完成人臉圖像采集,批量疊加導入的人臉圖像需要合并幾個不同的原始圖片集,將同一個人在不同來源的圖像信息集合在一起。另外一個來源即為實時圖像采集,利用某個特定樣本的實時跟蹤設備錄入信息,比如攝像頭。采集到的人臉圖像會受到許多外部因素的干擾,比如光線、面部表情的變化等,因此原始圖像不適合提取模型特征,需要通過一系列圖像轉換對數據進行預處理,比如旋轉、切割、降噪、縮放等等。
人臉檢測的主要目的是進一步篩選人臉圖像信息,消除噪聲,獲取更精準的圖像信息,進一步確認人臉的具體位置,確定圖像大小及位置等。不過人臉檢測的主要困難在于對面部內部變化的檢測及獲取圖像時環境的變化,人臉通常會隨著情緒的變化而產生一些復雜的細節動態,且裝飾物也可能會改變面部特征,因此增加了人臉檢測的難度。另一方面,圖像獲取環境會發生變化,包括獲取圖像的角度、光線影響、成像設備的景深及焦距等參數。因此為改善圖像采集質量,現在人臉檢測的方法主要包括檢測膚色、檢測邊緣特征以及基于統計的檢測方法,應用最為廣泛的為基于統計的方法,雖然其誤檢率較高,但是其效率高、性能好,因此被廣泛應用于各個領域。
根據算法模型提取人臉上的特征。人臉特征包括人臉視覺特征與人臉像素統計性特征兩大類,而提取人臉特征的方法又包括基于代數特征的提取以及基于知識的提取。提取人臉特征時先將人臉圖像進行維度放大處理,將其轉換為一個灰度矩陣后經過一系列的代數變化即可提取出特定的代數特征值,這些數據具有良好的聚類性,能夠將人臉的特點準確的表示出來,整個過程即為基于代數特征的人臉特征提取方法。用幾何形態表征將人臉中最具代表性的部位描述出來,再將其轉換為幾何圖案的組合,這個過程即為基于知識的人臉特征提取方法。
獲取人臉圖像特征數據后通過模型映射到訓練集上,模開設置相似度閾值,超出相似度閾值的數據信息可以篩除,接下來再根據相似度信息、人物信息對輸出人臉圖像做進一步篩選,最終確定最合適的人臉圖像?;铙w鑒別的主要作用是判斷系統識別的對象是否為真實生物體,以保證人臉識別的安全性,因為系統獲得的人臉可能是一張照片的復刻,如果缺乏活體鑒別可能會存在安全隱患,因此系統中需要加出眨眼、轉頭等活體鑒別過程。
本研究提出的人臉識別系統是基于tensorflow 深度學習框架,采用FaceNet 構建實時人臉檢測及識別系統,實驗在應用場景下多姿態及光照的人臉識別任務,能夠由攝像頭讀取視頻提取幀,檢測人臉特征,將采集到的數據與數據庫中預存的人臉特征數據進行對比,最終完成人臉識別。具體設計是先由攝像頭中提取人臉圖像保存于本地數據庫中,針對同一個人臉需要提取多張圖片,提取出每張圖片的128 維特征值,再將同一個人臉多張圖片的128 維特征均值計算出來,再對照攝像頭錄制的人臉特征值,比照二者人臉向量的歐式距離即可計算機數據庫中人臉圖像與攝像頭錄制人臉圖像的相似性。該系統能夠實現人臉數據的實時采集,并支持人臉實時注冊,建立人臉數據庫,能夠實時采集攝像頭圖像進行人臉識別,并支持多張人臉的檢測與識別。
FaceNet 主要用于驗證人臉是否為同一個人,是基于百萬級人臉數據訓練的深度卷積神經網絡,其可以將人臉圖像映射(embedding)成128 維度的特征向量,直接以該特征向量為特征依據,通過機器學習的方法實現人臉識別。本研究在進行人臉匹配數據訓練時,將LFW 數據集中照片轉換為統一大小,形成人臉檢測與關鍵點的對齊,便于后續的人臉識別任務。FaceNet 模型訓練過程中可以借助訓練好的embedding 來幫助下個模型生成新的embedding,可以獲得更穩定、效果更好的模型。
本研究提出的基于深度學習算法的人臉識別系統包括人臉圖像實時采集與注冊模塊、人臉檢測模塊、人臉識別模塊及可視化操作界面。
3.3.1 人臉圖像實時采集與注冊模塊
本系統先搭建一個基本框架,將攝像頭錄制到的人臉圖像信息收集起來,建立一個人臉特征數據庫,收集到的人臉圖像都對應設置一個文件名,將同一個人多張人臉圖片存儲為對應的文件夾。上文中提到,完成人臉識別需要利用FaceNet 對人臉圖像數據進行訓練,構建對應的人臉識別模型,人臉識別數據庫構建完成后,即可利用該模型提取人臉特征數據,數據庫中包含每個ID 人臉的embedding 信息,提取到的數據再利用FaceNet 生成npz 文件,每張人臉均進行特征提取并存儲于一個詞典中。自建數據庫集完成圖像采集,多次人臉注冊,多次采集圖像,并進行多次特征提取,最終將人臉特征保存于數據庫中。
3.3.2 人臉檢測模塊
攝像頭可以實時收集人臉信息,通過攝像頭檢測每個視頻幀中的人臉特征信息,并標記人臉框,采用MTCCN 提取視頻提取幀人臉框,再將人臉框數據輸入facenet 提取人臉特征。MTCNN 可以檢測出人臉位置,獲取一個人臉的bounding box,利用訓練好的Facenet 模型提取人臉圖像的特征,注意所有人臉圖片需要對齊統一圖片大小。
3.3.3 人臉識別模塊
人臉圖像對齊后利用訓練好的Facenet 模型將人臉圖像embedding 成128 維特征值,提取embedding vector 后對照人臉數據庫中所有特征數據。數據庫中包含了自建的人臉數據庫,可以生成embedding 人臉特征數據庫,采用facenet 提取出人臉特征采用訓練好的SVM 分類器對檢測到的人臉特征向量進行分類,不僅能夠提高處理效率,且精度更高。
3.3.4 制作可視化操作界面
采用python 語言設計可視化界面,利用PyQt5 及QtDesigner制作操作界面,將.ui 文件轉換為.py 文件代碼,Qt5 有自己的返回值無法實時占用攝像頭,可以用定時器完成人臉圖像的實時采集,每秒能夠識別30 張左右的圖片,且能夠依次完成多個ID 人臉圖像的采集。點擊“開始”系統即實時檢測視頻幀中的人臉圖像,并在對應區域顯示出人臉識別的結果。
總之,人臉識別技術有著其它生物識別技術不具備的獨特優勢,比如非接觸式的驗證過程提升了用戶體驗,人臉識別能夠同時比對多張人臉信息,且每張人臉信息都是獨一無二的,因此人臉識別技術的應用越來越廣泛。而經過多年發展深度學習已經成為極為普及的多種識別模型技術,尤其是在人臉識別領域,一直都是人工智能領域的重要研究方向。相信隨著科技的進步,人臉識別技術對人們生活的影響也會越來越大。