儲(chǔ) 匯, 宋 陳, 汪晨燦
(安徽理工大學(xué) 機(jī)械工程學(xué)院, 安徽 淮南 232001)
隨著人工智能技術(shù)的發(fā)展,人們的社會(huì)生活發(fā)生了翻天覆地的變化,人臉識(shí)別技術(shù)也得到非常迅速的發(fā)展。人臉識(shí)別技術(shù)應(yīng)用場景十分廣泛,特別是在安防、移動(dòng)支付等領(lǐng)域[1]。但是,隨著人臉識(shí)別應(yīng)用場景的不斷擴(kuò)大,人們對(duì)人臉識(shí)別的準(zhǔn)確率要求越來越高,識(shí)別環(huán)境越來越多樣,識(shí)別樣本越來越復(fù)雜,這就給人臉識(shí)別的穩(wěn)定性和準(zhǔn)確性帶來了極大的挑戰(zhàn)。如何在復(fù)雜多變場景中穩(wěn)定、準(zhǔn)確地識(shí)別出人臉信息成為一個(gè)研究熱點(diǎn),關(guān)于人臉識(shí)別抗干擾技術(shù)的研究則是人臉識(shí)別技術(shù)一個(gè)十分重要的方向[2]。影響人臉識(shí)別穩(wěn)定性的主要因素包括數(shù)據(jù)源的質(zhì)量、卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建、優(yōu)化器的選擇等,需要綜合考慮并權(quán)衡各種因素對(duì)識(shí)別結(jié)果的影響從而達(dá)到最佳識(shí)別率及穩(wěn)定性[3]。
在采集人臉數(shù)據(jù)時(shí),利用基于Open CV的人臉檢測技術(shù)對(duì)攝像機(jī)所拍的人臉進(jìn)行快速捕捉。但是在被捕捉人員面部快速移動(dòng)的情況下,攝像機(jī)捕捉到光線強(qiáng)度的變化較快。傳統(tǒng)人臉檢測算法的穩(wěn)定性較差,有可能會(huì)導(dǎo)致捕捉的圖片出現(xiàn)非人臉圖像或者非完整人臉。這樣的不理想數(shù)據(jù)在模型訓(xùn)練和預(yù)測過程中會(huì)對(duì)結(jié)果會(huì)產(chǎn)生嚴(yán)重的不利影響,會(huì)導(dǎo)致系統(tǒng)有一定幾率出現(xiàn)對(duì)非人臉物體或非目標(biāo)人臉的檢測識(shí)別的情況[4]。
利用高階神經(jīng)網(wǎng)絡(luò)Keras進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建,主要網(wǎng)絡(luò)層級(jí)包括卷積層、池化層、Dropout層、平鋪層、全連接層、分類層(如圖1所示)。人臉識(shí)別模型在構(gòu)建時(shí)常常需要采用線性堆疊式網(wǎng)絡(luò)層,不同的層級(jí)構(gòu)建產(chǎn)生的訓(xùn)練量和效果是不同的[5]。在訓(xùn)練模型時(shí),需要設(shè)置訓(xùn)練使用的優(yōu)化器,這使得優(yōu)化器的適應(yīng)性更強(qiáng)。Keras里面常用的優(yōu)化器有Adam、Adadelta、Adagrad、RM Sprop、SGD、Adamax、Nadam、Ftrl等。選擇不同的優(yōu)化器,對(duì)人臉識(shí)別穩(wěn)定性的優(yōu)化效果是至關(guān)重要的[6]。
影響人臉識(shí)別穩(wěn)定性的因素有很多(如圖1所示),每個(gè)因素在進(jìn)行選擇時(shí)都要考慮對(duì)整個(gè)模型的影響程度,而且每種因素之間相互干擾,需要達(dá)到一種動(dòng)態(tài)平衡,即在這種情況下系統(tǒng)穩(wěn)定性最好,識(shí)別準(zhǔn)確性最高[7]。
圖1 神經(jīng)網(wǎng)絡(luò)構(gòu)建
在數(shù)據(jù)源預(yù)處理階段增加人臉樣本數(shù)據(jù)的數(shù)量,對(duì)樣本中不合格的數(shù)據(jù),主要包括非人臉物體圖片和側(cè)臉幅度較大的人臉圖片及曝光量較差引起圖像清晰度較差的圖片進(jìn)行二次糾正。否則,會(huì)對(duì)模型訓(xùn)練造成極大干擾,可能會(huì)出現(xiàn)識(shí)別圖像中非人臉部分的情況。采用Open CV進(jìn)行人臉數(shù)據(jù)采集時(shí),如果不對(duì)scale Factor參數(shù)進(jìn)行設(shè)置,那么該參數(shù)的默認(rèn)值為1.1。如果該參數(shù)設(shè)置較大,會(huì)導(dǎo)致計(jì)算機(jī)運(yùn)算速度加快,極易丟失對(duì)某個(gè)人臉的檢測,對(duì)整個(gè)數(shù)據(jù)的人臉檢測結(jié)果造成影響,識(shí)別穩(wěn)定性將會(huì)降低,適當(dāng)降低該參數(shù)的值有利于抗干擾性能的提升。
使用SGD(Stochastic gradient descent)優(yōu)化器時(shí),每次更新就對(duì)每個(gè)人臉圖片進(jìn)行梯度更新,對(duì)于人臉數(shù)據(jù)集來說,一定會(huì)存在相似的樣本,采用SGD優(yōu)化器在進(jìn)行梯度計(jì)算時(shí)一次只進(jìn)行一次更新,這樣就不會(huì)冗余人臉樣本,計(jì)算速度快,并且還可以增加樣本,適合用于多種人臉數(shù)據(jù)訓(xùn)練。但是只采用SGD優(yōu)化器會(huì)在ravines(曲面的一個(gè)方向比另一個(gè)方向更陡)的情況下被局限住,這時(shí)的SGD優(yōu)化器會(huì)發(fā)生震蕩以至于無法接近極小值,識(shí)別的結(jié)果也會(huì)不穩(wěn)定。加入Momentum算法,可以加速SGD,使得在同梯度的維度上加速,在梯度方向發(fā)生變化的維度上的更新速度變慢,可以加快收斂并抑制震蕩。最終在預(yù)測人臉時(shí)顯示結(jié)果震蕩會(huì)減少,識(shí)別準(zhǔn)確率會(huì)變高。
采用Keras構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)如圖1所示。輸入層、隱藏層、輸出層都可以包括各種網(wǎng)絡(luò)層,以及激活函數(shù)、初始化方法、正則項(xiàng)、約束項(xiàng)。輸入的圖片數(shù)據(jù)經(jīng)過預(yù)處理后可以用于作為訓(xùn)練對(duì)象、驗(yàn)證對(duì)象和預(yù)測對(duì)象[8]。
創(chuàng)建一個(gè)序列模型用于添加網(wǎng)絡(luò)層。每一層均可以包含一個(gè)或多個(gè)卷積、池化、Dropout、批量歸一以及非線性激活函數(shù)ReLU[9]。
3.2.1 卷積層
人臉圖片經(jīng)過預(yù)處理后,得到輸入圖片數(shù)據(jù)y1=(W1,H1,D)。其中:W1是圖片的寬,H1是圖片的高,D是通道數(shù)。如果圖片是RGB類型,則通道數(shù)為3,如果圖片是灰度圖,那么通道數(shù)為1。輸入圖片數(shù)據(jù)經(jīng)過卷積層操作后得到輸出圖片數(shù)據(jù)y2=(W2,H2,D)。其中:
(1)
(2)
式中:W2是輸出圖片的寬,H2是輸出圖片的高,卷積核寬高F1,每次卷積操作的步長S1,0填充數(shù)P。
3.2.2 池化層
池化操作分為均值池化和最大池化,常用的是最大池化,其目的是減少空間信息,提高運(yùn)算效率,防止過擬合。輸入圖片數(shù)據(jù)為卷積操作后的數(shù)據(jù)y2,池化操作后的輸出圖片數(shù)據(jù)為y3=(W3,H3,D)。其中:
(3)
(4)
式中:W3是輸出圖片的寬,H3是輸出圖片的高,池化核寬高F2,每次池化操作的步長S2。
3.2.3 Dropout層
Dropout層可以有效地緩解過擬合的發(fā)生,在一定程度上達(dá)到正則化的效果。Dropout層網(wǎng)絡(luò)計(jì)算公式為
r~Bernoulli(p)
(5)
(6)
3.2.4 平鋪層
3.2.5 全連接層
經(jīng)過以上層的分析,得到的一維數(shù)據(jù)作為全連接層的輸入數(shù)據(jù),通過對(duì)一維數(shù)據(jù)進(jìn)行加權(quán)操作和偏移量處理,最后得到輸出數(shù)據(jù)
y5=wy4+b
(7)
其中:y5表示輸出數(shù)據(jù),w表示權(quán)重,y4表示輸入數(shù)據(jù),b表示偏移量。
3.2.6 分類層
softmax分類函數(shù),又稱為歸一化指數(shù)函數(shù),它是二分類函數(shù)sigmoid在多分類的推廣,適用于多人臉的識(shí)別,其目的是返回分類結(jié)果的各個(gè)概率值。
(8)
在模型中應(yīng)用損失函數(shù)和優(yōu)化器,由于實(shí)驗(yàn)的圖片標(biāo)簽采用one-hot編碼,所以損失函數(shù)選擇categorical_crossentropy,分類層激活函數(shù)選擇softmax,此種選擇適合多類別分類的人臉識(shí)別。優(yōu)化器選擇SGD+Momentum的優(yōu)化器后,調(diào)用compile()進(jìn)行編譯。
通過調(diào)用fit()函數(shù)對(duì)數(shù)據(jù)模型進(jìn)行訓(xùn)練。
在模型訓(xùn)練完后,使用新的數(shù)據(jù)生成預(yù)測結(jié)果,通過調(diào)用evaluate()和predict()來完成。
一般來說,多人臉識(shí)別的數(shù)據(jù)量是十分龐大的,如果手動(dòng)去調(diào)整工作量會(huì)變得十分龐大且效率低下,而采集人臉圖片的超參數(shù)則決定了數(shù)據(jù)的質(zhì)量。利用Open CV進(jìn)行人臉檢測時(shí),會(huì)使用Haar級(jí)聯(lián)分類器,在不同尺度下的輸入圖像中檢測對(duì)象。detectMultiScale()函數(shù)的scale Factor參數(shù)表示一個(gè)比率,即每層圖像金字塔所獲得的圖像與上一場的比率[10]。參數(shù)越小,圖像金字塔的層級(jí)便越多,計(jì)算越慢,計(jì)算量越大,在某種程度上會(huì)獲得更準(zhǔn)確的結(jié)果,但是隨著檢測量變大,有時(shí)實(shí)際錯(cuò)誤檢測率也會(huì)提高[11]。scale Factor取值在1.10~1.20之間,人臉檢測準(zhǔn)確率較高,在1.10之后準(zhǔn)確率開始驟降,如表1所示。
表1 超參數(shù)調(diào)整
選擇SGD+Momentum的優(yōu)化器與常用的Adam優(yōu)化器做對(duì)比實(shí)驗(yàn),一般Momentum的超參數(shù)取值為0.9,動(dòng)量公式:
vt+1=μvt-ε?f(θt)
(9)
θt+1=θt+vt+1
(10)
其中:ε>0為系統(tǒng)學(xué)習(xí)率,μ∈[0,1],?f(θt)是θt的梯度曲線,v為矢量速度。
兩種識(shí)別器的對(duì)比結(jié)果如表2所示。由表2可知,SGD+Momentum優(yōu)化器相較于Adam優(yōu)化器能夠在訓(xùn)練輪數(shù)較少的情況下更快速、更穩(wěn)定地達(dá)到較高的準(zhǔn)確率,而且兩種優(yōu)化器的準(zhǔn)確率數(shù)值基本保持不變。最終經(jīng)過30輪訓(xùn)練,多人臉識(shí)別準(zhǔn)確率、驗(yàn)證準(zhǔn)確率、損失率、驗(yàn)證損失率隨訓(xùn)練輪數(shù)的折線圖如圖2、圖3所示。
表2 優(yōu)化器對(duì)比
圖2 準(zhǔn)確率和驗(yàn)證準(zhǔn)確率
圖3 損失率和驗(yàn)證損失率
通過對(duì)數(shù)據(jù)源的糾正、卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建的調(diào)整、優(yōu)化器的選擇以及超參數(shù)的調(diào)整,最終模型訓(xùn)練準(zhǔn)確率最高可達(dá)99.98%,驗(yàn)證準(zhǔn)確率最高可達(dá)99.73%。