張晨
(廈門軟件職業技術學院 軟件工程系,福建廈門 361023)
人臉識別技術作為當下國內外研究熱門,是一種利用圖像來匹配人臉特征從而區分個體的生物識別技術。人臉識別的過程主要包括人臉檢測定位、歸一化、特征提取、人臉識別幾個方面[1],已有的相關技術廣泛采用區域特征分析算法,并融合計算機圖像處理技術及生物統計學原理。人臉識別技術已有幾十年的發展歷程,逐漸由弱人工智能向強人工智能進行轉化,已成為人工智能領域的重要應用。隨著深度學習領域尤其是以卷積神經網絡(Convolutional Neural Networks,CNN)為代表的相關技術的快速發展,更加推動了人臉識別技術的發展。
CNN 是一種深度學習模型,其本質為前饋神經網絡,模型的工作方法和參數通常不需要人為過多干預即可完成特征提取和模式識別,相關模型可通過構建深度神經網絡的訓練模式,來模擬人類大腦學習過程從而完成無監督學習和有監督學習。CNN 已廣泛滲透于規模化的圖像數據集的分類與識別領域,其中LeNet、AlexNet、VggNet、ResNet 是最為典型的四種網絡模型,其中AlexNet 網絡模型具有收斂快、不易過擬合、訓練速度快等特點。本文主要對卷積神經網絡特點出發,針對人臉識別的過程基于AlexNet 卷積神經網絡模型展開應用研究。
CNN 通過多層次網絡結構的卷積運算來完成樣本圖像的深度抽象特征提取工作,模型能夠自適應及自我學習,在有限的條件下也能夠很好提取目標圖像特征并完成分類。CNN 通常由輸入層、卷積層、池化層、全連接層及輸出層組成,不同的CNN網絡,其卷積層與全連接層的數量也不相同。其中,輸入層用于接收樣本數據并進行一定的預處理,網絡把輸入的原始數據通過一些簡單的非線性模型處理轉化為更深層次、更抽象的表達,輸出層通常作為分類器完成模式分類。
1)卷積層:CNN 網絡中的卷積層通過進行卷積運算完成特征提取和特征映射,其中卷積核用于提取輸入圖片的不同特征,每個卷積層單元可以被理解為是圖像濾波器的集合。n 個卷積核的掃描將得到深度為n 的特征空間,即提取到了n 種類型的特征,卷積公式一般形式為:

其中,yj為卷積層第j 個神經元的輸出,f 為使用的激活函數,Mj為輸入的特征空間,xi為上一層第i個神經元結點的輸出,Wij為該層對應上一層第i 個神經元結點在當前層第j 個神經元結點間卷積核賦值的權重,bj為第j 個神經元對應的偏值置,n 為卷積核的位移量,*為卷積。在卷積神經網絡中,卷積核越深則卷積后得到的特征圖數目相應更多,同時該卷積層存儲的特征空間就更大,網絡模型學習效率也越高。但并不是層數越多越好,模型結構越復雜計算量則越大。當輸入矩陣大小為n×n、卷積核大小為f×f 時,卷積后輸出的卷積維度的大小為:

2)池化層:位于卷積層之間,主要通過完成數據和參數的壓縮并降低特征維度,可達到減小模型的計算量和避免過擬合的目的。常用的有最大池化(Max-Pooling)和平均池化(Mean-Pooling),在特定需求下為了保留更多的圖像特征紋理,通常采用最大池化來輸出目標區域中的最大值:
其中,p 為池化窗口大小,即上一層輸出的特征圖縮放的倍數。
3)全連接層:通常在卷積神經網絡的末尾位置對特征進行重新擬合,將含有類別區分性的部分信息進行整合,減少特征信息的損失[2]。全連接層的每個神經元都和上一層的全部神經元相連接,同時每個神經元對應著一組權值與偏置值。常規的CNN網絡在輸出層基于softmax 激勵函數完成最后分類結果的輸出,把一個n 維的神經元輸出向量y={y1,y2,y3…,yn} 轉換為與之對應的另一個特征向量p={p1,p2,p3…,pn},其中所有向量值累加值為1,可等價于概率,故可以根據概率的大小來進行分類的預測和判別,概率最大時就得到最優分類[3]。
4)激活函數:由于卷積層的卷積計算是一種線性運算,因此需要通過激活函數來增加非線性映射,從而減少參數的相互依賴性,減緩模型的過擬合情況。激活函數可以將數據歸一化,避免模型產生線性依賴。常用的激活函數有Sigmoid、ReLU、Tanh 等。其中ReLU 函數具有收斂快、求梯度簡單的特點。
AlexNet 是經典的CNN 網絡,由Krizhevsky[4]等于2012 年提出,是LeNet 的一種延伸,網絡引入隨機失活層來處理網絡中的過擬合,并使用激活函數ReLU 替代Sigmoid 作為激活函數使模型收斂速度得到提升。AlexNet 算法性能較為穩定,是具有層次結構的學習模型,可以通過卷積和采樣操作自適應地來完成圖像深層特征的提取最后完成分類。AlexNet 模型結構見圖1,網絡由五個卷積層和三個全連接層共八個層次構成,其中最后一層全連接層完成模式識別分類工作。

圖1 AlexNet 網絡模型結構示意圖
網絡模型的相關基本參數見表1,模型根據輸入的陣列自適應得出當前情況下行與列參數的值。

表1 AlexNet 模型基本參數
AlexNet 模型默認輸入大小為227×227,對于人臉識別過程中經過預處理后得到的黑白二值樣本,輸入AlexNet 的將是一個227×227 的二維神經元。網絡的算法過程如下:
Step1:輸入227×227×3 的樣本;
Step2 :經過卷積層conv1 的卷積操作生成227×227×d1的特征空間;
Step3 :經過池化層pool1 的池化操作后得到227/2×227/2×d1的特征空間;
Step4:經過卷積層conv2 的卷積操作生成227/2×227/2×d2的特征空間;
Step5:經過池化層pool2 的池化操作后得到227/4×227/4×d2的特征空間;
Step6:經過卷積層conv3 的卷積操作生成227/2×227/4×d3的特征空間;
Step7:經過卷積層conv4 的卷積操作生成227/2×227/4×d4的特征空間;
Step8:經過卷積層conv5 的卷積操作生成227/2×227/4×d5的特征空間;
Step9:經過卷積層pool3 的池化操作生成227/2×227/8×d5的特征空間;
Step10:經數據降維將特征空間轉化為m 維特征向量,并經最后一個全連接層(softmax)輸出。其中,dn為卷積提取的特征空間的深度。
實驗所需的人臉圖像樣本選取尺寸適宜且樣本數據量較大的LFW 公開人臉數據集,該數據集是由來自全球范圍內的部分知名人士在自然場景下不同表情、朝向、光照條件,共5749 個個體的13233 張人臉圖像構成,數據集以彩色圖像為主,原始尺寸為250×250,每張圖片都有其唯一的姓名ID 和序號加以區分。由于數據集的樣本均來源于自然場景,尤其是在不同姿態、表情、年齡、光照、遮擋等因素下會使同一個個體對象拍攝出來的圖像差別較大,因此數據集的預處理工作尤為重要。實驗搭建的環境為An aconda(Python3.8,64bit)、PyCharm(Community2021.1.2),程序主要調取及采用PIL、Numpy、TensorFlow、OpenCV、Dlib 等庫,同時利用輕量、高性能的Tornado,編寫發布一個簡單的web 頁面作為前端人機交互窗口。圖像的預處理通過OpenCV 中GaussianBlur 函數完成高斯濾波,降低客觀環境條件帶來的圖像噪聲;使用cvtColor函數完成圖像的灰度化,將彩色RGB 圖像到灰度圖像進行轉換,轉化后圖像為單通道的灰度圖;使用threshold 函數完成圖像的二值化,將整個圖像處理轉化為只有黑與白的視覺效果的圖像;使用resize 函數將原始樣本歸一化為227×227 的尺寸,契合模型輸入要求。同時完成所有樣本的數據類別標注工作,利用Numpy 庫將圖片信息和類別標簽信息轉化為array 矩陣格式。
采用了由五個卷積層、三個全連接層組成的AlexNet 網絡模型,池化層采用最大池化,其大小為3×3,激活函數采用的是ReLU,程序調取及采用TensorFlow 庫進行模型的訓練。為了使模型更具魯棒性,通過添加隨機噪聲、水平和垂直翻轉、適度旋轉或扭曲、亮度與對比度調節等非生成式的方法將每個樣本圖片隨機變換為12 個不同的樣本,再整合按照7:3 拆分為訓練集和驗證集,輸入到卷積神經網絡中。訓練的基本參數設置見表2,其他參數為缺省參數,模型根據輸入的陣列自適應得出當前情況下行與列參數的值,訓練過程將對參數進行優化微調。

表2 AlexNet 網絡模型訓練基本參數
訓練參數將直接影響到模型的整體性能,尤其是訓練次數的設置,次數過少網絡仍在學習中,過多則網絡易出現過擬合,為了得到最佳的效果根據損失值隨訓練次數的變化趨勢,隨著訓練次數的增加損失值呈現下降的趨勢,模型逐漸收斂,當訓練到30 Epoch 后,曲線雖有小幅度波動但整體趨勢逐漸接近于0 并更加趨于穩定,網絡達到穩定狀態,此時可以結束當前訓練,見圖2。

圖2 損失值隨訓練次數的變化趨勢
模型利用利益權值共享方式減少參數數量、提升效率。隨著網絡進一步的加深,網絡提取到的特征將進一步組合及抽象化,卷積網絡得到的特征也逐步向訓練數據樣本的特征靠攏。權值共享和池化操作使卷積提升了網絡模型模型的訓練效率。將得到的特征向量輸入到softmax 分類器中,經過分類器的學習和訓練,以完成最后的人臉識別檢測。
由于模型和實驗環境的條件,隨機選取預處理后的樣本組合成六個測試集進行測試,每個測試集的樣本數量為300。測試數據結果由真負類(True Negative,TN)、真正類(True Positive,TP)來表示;識別錯誤的結果由假正類(False Positive,FP)、假負類(False Negative,FN)表示。在本文中,TP 表示將人臉正類預測為正類數,FN 表示將人臉正類預測為負類數,FP 表示將人臉負類預測為正類數,TN 表示將人臉負類預測為負類數。實驗結果將正確率的高低作為主要指標,同時F1-Score 數值越接近于1 則表明分類識別的效果越好。得到綜合評價結果見表3:

表3 AlexNet 網絡模型測試結果
基于AlexNet 卷積神經網絡模型對人臉識別的方法及應用展開研究,利用卷積神經網絡具有強大的特征學習能力,可以實現對圖像特征深層次的描述的特點。使用公開數據集并完成圖像預處理后,隨后完成模型訓練、參數調優,最后利用訓練好的模型完成人臉識別檢測。實驗結果表明在本實驗的環境和數據集的基礎上AlexNet 卷積神經網絡可以較好得完成人臉識別。后續將進一步進行實際生產環境的人臉識別系統的部署研究與實驗。