陳東敏,姚劍敏
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350002)
隨著虛擬現(xiàn)實(shí)增強(qiáng)技術(shù)的興起,許多的研究項(xiàng)目和商業(yè)產(chǎn)品以實(shí)現(xiàn)人機(jī)交互為目的[1]。人臉特征點(diǎn)定位在人臉對(duì)齊、面部表情識(shí)別等方面具有很重要的意義。如何通過(guò)普通攝像頭實(shí)現(xiàn)對(duì)人臉特征點(diǎn)的準(zhǔn)確定位是本文研究的方向。
傳統(tǒng)上,人臉關(guān)鍵點(diǎn)檢測(cè)涉及圖像處理、特征提取、主成分分析等方法(包括主動(dòng)形狀模型[2]和主動(dòng)外觀模型[3])以及后續(xù)發(fā)展出來(lái)的一些方法,比如基于限制局部模型的方法[4]、基于主動(dòng)外觀模型的方法[4]和基于回歸的方法[5-7]等。
近年來(lái),運(yùn)用深度學(xué)習(xí)訓(xùn)練的方法逐漸火熱起來(lái)。2013年,湯曉鷗課題組提出了利用級(jí)聯(lián)深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行面部特征點(diǎn)定位[5],在當(dāng)年達(dá)到了最先進(jìn)的水平。本文借鑒三級(jí)聯(lián)結(jié)構(gòu)的第一級(jí)部分,提出了一種基于優(yōu)化的并行AlexNet卷積神經(jīng)網(wǎng)絡(luò)模型,在模型輸入圖像處理上,采用3個(gè)子圖像3個(gè)通道顏色的方法,進(jìn)一步加大模型的獨(dú)立性,并引入批歸一化層,降低誤差的同時(shí)減少模型的迭代次數(shù),增加模型泛化能力。
AlexNet由Alex Krizhevsky等人設(shè)計(jì)并在2012年ILSVRC中獲得冠軍,該模型將物體分類錯(cuò)誤率從此前的25.8%降低到16.4%,在當(dāng)時(shí)達(dá)到最優(yōu)水平。
AlexNet可以訓(xùn)練更大數(shù)據(jù)集以及更深的網(wǎng)絡(luò),后續(xù)的一些ZF-net、SPP-net、VGG等網(wǎng)絡(luò),都是在其基礎(chǔ)上修改得到的。該模型分為8層,5個(gè)卷積層以及3個(gè)全連接層,網(wǎng)絡(luò)的前端是原始像素點(diǎn),最后端是圖片的分類結(jié)果;卷積層中包含ReLU激活函數(shù)和局部響應(yīng)歸一化(LRN)處理,以及最大降采樣層(Pool)。圖1是AlexNet網(wǎng)絡(luò)結(jié)構(gòu)圖。
圖1 AlexNet網(wǎng)絡(luò)結(jié)構(gòu)圖
相比于傳統(tǒng)的CNN,AlexNet模型結(jié)構(gòu)有許多重要的改動(dòng),比如數(shù)據(jù)增強(qiáng)、Dropout、ReLU激活函數(shù)、LRN、重疊 Pooling、GPU并行。
為了增強(qiáng)模型的魯棒性,減少過(guò)擬合,增加模型的泛化能力,在對(duì)圖像數(shù)據(jù)集的處理上,采用的方法是在保持?jǐn)?shù)據(jù)標(biāo)簽不變的情況下增大數(shù)據(jù)集[7]。本文是關(guān)于圖像的回歸算法,采用了3種方法,只需很少的計(jì)算量就能達(dá)到數(shù)據(jù)擴(kuò)充的目的。
(1)圖像翻轉(zhuǎn)
將圖像進(jìn)行水平翻轉(zhuǎn)可以簡(jiǎn)單地?cái)U(kuò)充訓(xùn)練數(shù)據(jù)集至一倍。圖2為圖像水平翻轉(zhuǎn)。
圖2 圖像水平翻轉(zhuǎn)
(2)調(diào)整RGB像素值
在圖像訓(xùn)練集中對(duì)圖像的RGB像素集合采用主成分分析法處理。每個(gè)訓(xùn)練圖像中,成倍增加已有的主成分,倍數(shù)為一個(gè)零均值、0.1標(biāo)準(zhǔn)差的高斯分布中提取的隨機(jī)變量。得到圖像中每一個(gè)像素值為:
(1)
增加以下項(xiàng):
[p1,p2,p3][α1λ1,α2λ2,α3λ3]T
其中pi是像素值協(xié)方差矩陣第i個(gè)特征向量,λi是其對(duì)應(yīng)特征向量的特征值,也是上文提到的隨機(jī)變量。每個(gè)具體的訓(xùn)練圖像的全部像素只提取一次。
(3)對(duì)圖片進(jìn)行隨機(jī)平移
為了增強(qiáng)模型的魯棒性,本文采用對(duì)原始圖片進(jìn)行隨機(jī)平移。具體平移量如表1所示。其中平移量數(shù)值單位為像素點(diǎn)個(gè)數(shù)。
表1 圖像偏移幅度
常見的神經(jīng)網(wǎng)絡(luò)激活函數(shù)有tanh(x)和sigmoid(x),當(dāng)神經(jīng)網(wǎng)絡(luò)進(jìn)行反向傳播時(shí)會(huì)發(fā)生梯度消失。ReLU本質(zhì)上是分段線性函數(shù),其前向傳播計(jì)算、反向傳播都非常簡(jiǎn)單,無(wú)需太復(fù)雜的計(jì)算操作,因此ReLU函數(shù)可以訓(xùn)練更深的網(wǎng)絡(luò)。ReLU函數(shù)右邊恒等于零,使神經(jīng)元一部分輸出為零,起到稀疏網(wǎng)絡(luò)的作用,類似Dropout層的作用,可以在一定程度上緩解過(guò)擬合[8]。圖3是上述各激活函數(shù)模型。
圖3 激活函數(shù)
其中:
ReLU(x)=max(0,x)
tanh(x)=2sigmoid(x)-1
ReLU所具有的線性及非線性性質(zhì)使得不需要輸入歸一化來(lái)防止達(dá)到飽和,但是局部歸一化方案可提高網(wǎng)絡(luò)的泛化能力[9-11]。歸一化公式為:
2013年湯曉鷗課題組將級(jí)聯(lián)運(yùn)用到了模型當(dāng)中,利用級(jí)聯(lián)深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行面部特征點(diǎn)定位。圖4為級(jí)聯(lián)系統(tǒng)結(jié)構(gòu)圖。
圖4 級(jí)聯(lián)系統(tǒng)結(jié)構(gòu)圖
該模型具有三級(jí)結(jié)構(gòu),第一級(jí)為粗定位,后面兩級(jí)為精確定位。首先,采用灰度圖像進(jìn)行訓(xùn)練,經(jīng)過(guò)第一級(jí)的結(jié)構(gòu),將訓(xùn)練的人臉圖像分為互有重疊的3個(gè)子圖像F1、EN1和NM1,3個(gè)子圖像分別傳送到3個(gè)互有差異的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,輸出結(jié)果加權(quán)平均得到5個(gè)特征點(diǎn)的粗定位;接著經(jīng)過(guò)第二級(jí)結(jié)構(gòu)細(xì)定位,以上一級(jí)輸出的5個(gè)特征點(diǎn)坐標(biāo)為中心從人臉圖像摳出5個(gè)適當(dāng)大小的包含特征點(diǎn)的子圖像傳送到10個(gè)一樣模型的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,將結(jié)果加權(quán)平均得到細(xì)定位;最后通過(guò)最后一級(jí)精確定位,做法同第二級(jí),待模型收斂后,將結(jié)果加權(quán)平均得到最終的精確的人臉特征點(diǎn)坐標(biāo)。
以上模型涉及卷積神經(jīng)網(wǎng)絡(luò)模型達(dá)23個(gè),參數(shù)龐大,收斂慢,本文借鑒級(jí)聯(lián)結(jié)構(gòu)的第一級(jí)部分,提出了一種優(yōu)化的AlexNet并行卷積神經(jīng)網(wǎng)絡(luò)算法。模型均采用AlexNet模型,在不增加網(wǎng)絡(luò)層數(shù)的情況下通過(guò)并行結(jié)構(gòu)能夠增大模型預(yù)測(cè)的準(zhǔn)確率,減少誤差。圖5為并行結(jié)構(gòu)圖,其中輸入為原始圖像,切分為互有重疊的3個(gè)子圖像分別進(jìn)入F1、F2、F3模型,輸出3個(gè)互有重復(fù)的特征點(diǎn)坐標(biāo)子集,加權(quán)平均得到最終的人臉特征點(diǎn)檢測(cè)結(jié)果。
圖5 并行結(jié)構(gòu)圖
本文采用的卷積神經(jīng)網(wǎng)絡(luò)是基于AlexNet模型基礎(chǔ)進(jìn)行優(yōu)化的,優(yōu)化的AlexNet模型如圖6所示,共有7層:4個(gè)卷積層,3個(gè)全連接層,模型的輸出是5個(gè)坐標(biāo)。其中conv表示卷積過(guò)程;Pool(z)是池化層,這里采用最大池化,4×4表示池化核大小;Batch Normalization (BN)是批歸一化層。
圖6 優(yōu)化的AlexNet模型
與傳統(tǒng)的AlexNet相比,優(yōu)化的AlexNet去掉一層卷積層,加入了BN層,并且根據(jù)訓(xùn)練集調(diào)整網(wǎng)絡(luò)模型參數(shù)。其中改動(dòng)最大的是圖像的輸入處理,以及引入了批歸一化層。
2.2.1圖像的輸入
本算法采用美國(guó)馬薩諸塞大學(xué)公開的人臉數(shù)據(jù)集LFW(Labeled Faces in the Wild)。該數(shù)據(jù)集被廣泛用于研究無(wú)約束的人臉識(shí)別問(wèn)題。數(shù)據(jù)集包含13 466張包含人臉的圖片和標(biāo)簽文檔,標(biāo)簽文檔儲(chǔ)存著每一張圖像的人臉位置坐標(biāo)以及其5個(gè)特征點(diǎn)坐標(biāo),其中特征點(diǎn)為左、右眼中心,鼻尖,左、右嘴角的坐標(biāo)。遵循交叉驗(yàn)證的方法,從LFW隨機(jī)抽取9/10的人臉圖片以及左右鏡像共24 228張做訓(xùn)練集,余下1/10和左右鏡像共2 704張做測(cè)試集。
原始圖像進(jìn)入F1、F2、F3之前會(huì)被切分成3個(gè)互有重疊部分的子圖像,其中3個(gè)子圖像分別具有以下特征:包含所有特征點(diǎn)的R通道圖像,不包含嘴巴特征點(diǎn)的G通道圖像,不包含眼睛特征點(diǎn)的B通道圖像。3個(gè)模型訓(xùn)練目標(biāo)特征點(diǎn)兩兩相交,將各自結(jié)果加權(quán)平均之后得出最終的人臉特征點(diǎn)坐標(biāo)。圖7為圖像的輸入切分。
圖7 圖像的輸入
隨著輸入圖片的切分,模型中的參數(shù)也隨著調(diào)整。
2.2.2批歸一化處理
在每次隨機(jī)梯度下降時(shí),通過(guò)mini-batch來(lái)對(duì)相應(yīng)的激活值做規(guī)范化操作,使輸出值各個(gè)維度的均值為0,方差為1。而最后的“scale and shift”操作是為了讓因訓(xùn)練所需而“刻意”加入的BN能夠最有可能還原最初的輸入,即:
β(k)=E[x(k)]
從而保證整個(gè)網(wǎng)絡(luò)的泛化能力。以下是批歸一化的計(jì)算步驟:
輸入:mini-batch 中xi的值:B={x1…xm},需要學(xué)習(xí)的參數(shù):γ,β
輸出:{yi=BNγ,β(xi)}
//mini-batch 均值
//mini-batch 方差
//歸一化
//scale and shift
為了防止神經(jīng)網(wǎng)絡(luò)在訓(xùn)練中發(fā)生梯度消失,加入了批歸一化層。批歸一化層對(duì)網(wǎng)絡(luò)層的輸入值進(jìn)行預(yù)處理,通過(guò)將隱藏層的輸出數(shù)據(jù)進(jìn)行歸一化操作,使其服從標(biāo)準(zhǔn)的高斯分布,是一種更為有效的局部歸一化處理。
實(shí)驗(yàn)環(huán)境為:Windows 10的64位操作系統(tǒng),AMD顯卡型號(hào)為HD7470M,4 GB內(nèi)存,TensorFlow 1.2,Python 3.5以及Python-OpenCV庫(kù)。
TensorBoard是TensorFlow的一個(gè)可視化工具。通過(guò)TensorBoard可以隨時(shí)觀看訓(xùn)練中正確率及誤差收斂情況曲線圖以及神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的流程圖,可以查看任意隱藏層的特征圖。本文實(shí)驗(yàn)結(jié)果主要依靠TensorBoard來(lái)得出結(jié)論。
輸入圖像尺寸為30×30,模型有無(wú)并行結(jié)構(gòu)性能比較如圖8、圖9所示。圖8為訓(xùn)練誤差,并行結(jié)構(gòu)模型為2.842 9e-3,耗時(shí)17 h 2 min 15 s;無(wú)并行模型為6.047 1e-3,耗時(shí)為7 h 32 min 12 s。
圖8 訓(xùn)練誤差
圖9為正確率。并行結(jié)構(gòu)模型先于傳統(tǒng)結(jié)構(gòu)達(dá)到收斂。
圖9 正確率
綜上,并行結(jié)構(gòu)模型誤差更低,達(dá)到收斂更快,魯棒性更好,但在訓(xùn)練耗時(shí)上并不占優(yōu),由于同時(shí)對(duì)3個(gè)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,訓(xùn)練時(shí)間也更長(zhǎng)。
3.2.1圖像的優(yōu)化對(duì)比
模型進(jìn)行圖像優(yōu)化處理后對(duì)比湯曉鷗并行結(jié)構(gòu),圖10所示為正確率對(duì)比,圖11為誤差對(duì)比。
圖10 正確率對(duì)比
圖11 誤差對(duì)比
誤差具體數(shù)值對(duì)比如表2所示。經(jīng)過(guò)圖像優(yōu)化的算法模型比原始模型誤差降低5.08%。
表2 誤差數(shù)值對(duì)比
3.2.2引入批歸一化處理層
引入批歸一化層的對(duì)比如圖12、圖13所示。
圖12 正確率對(duì)比
圖13 誤差率對(duì)比
誤差具體數(shù)值如表3所示。加入BN層的算法模型比原始模型誤差降低34.21%。
將圖像優(yōu)化和批歸一化層同時(shí)作用于模型中,結(jié)果如圖14、圖15所示。
表3 誤差對(duì)比
圖14 正確率對(duì)比
圖15 誤差率對(duì)比
誤差數(shù)值對(duì)比如表4所示。圖像優(yōu)化+BN層的算法模型比湯曉鷗模型第一級(jí)模型誤差下降44.57%。
表4 誤差對(duì)比
本文構(gòu)建了基于優(yōu)化的AlexNet并行卷積神經(jīng)網(wǎng)絡(luò)模型對(duì)人臉圖像進(jìn)行特征點(diǎn)定位,將輸入圖像切分為3個(gè)互有重疊的人臉子圖像,3個(gè)子圖像分別連接3個(gè)不同的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并且子圖像分別取原圖像的一個(gè)顏色通道,進(jìn)一步增加各個(gè)模型的差異性,待模型收斂后,將3個(gè)網(wǎng)絡(luò)輸出的特征點(diǎn)坐標(biāo)加權(quán)平均,得出最終的人臉特征點(diǎn)坐標(biāo)。并在網(wǎng)絡(luò)中加入批歸一化層減少迭代次數(shù),加快收斂,并且使得結(jié)果誤差減小。
在LFW數(shù)據(jù)集上實(shí)驗(yàn)結(jié)果表明,并行神經(jīng)網(wǎng)絡(luò)模型比單層神經(jīng)網(wǎng)絡(luò)正確率高,誤差??;基于優(yōu)化的AlexNet并行神經(jīng)網(wǎng)絡(luò)比沒有優(yōu)化的并行神經(jīng)網(wǎng)絡(luò)的迭代速度更快,誤差降低44.57%。在預(yù)測(cè)上,基于優(yōu)化的并行模型預(yù)測(cè)結(jié)果均優(yōu)于湯曉鷗級(jí)聯(lián)模型第一級(jí)部分。故而,本文所使用的優(yōu)化的并行模型算法用于人臉特征點(diǎn)定位具有比湯曉鷗級(jí)聯(lián)第一級(jí)卷積神經(jīng)網(wǎng)絡(luò)更好的魯棒性和準(zhǔn)確性。下一步擬對(duì)基于神經(jīng)網(wǎng)絡(luò)的人臉檢測(cè)算法進(jìn)行研究。
參考文獻(xiàn)
[1] ZHANG C, ZHANG Z. A survey of recent advances in face detection[R]. Technical Report of Microsoft Research, 2010.
[2] COOTES T F,COOPER D,TAYLOR C J, et al. Active shape models-their training and application[J].Computer Vision and Image Understanding,1995,61(1):38-59.
[3] COOTES T F,EDWARDS G J.TAYLOR C J. Active appearance models[C] // Proceedings of the European Confidence on Computer Vision.Berlin:Springer,1998:484-498.
[4] SARAGIH J M,LUCEY S,COHN J. Face alignment through subspace constrained mean-shifts[C] // Proceedings of the IEEE International Conference on Computer Vision. IEEE,2009:1034-1041.
[5] SUN Y, WANG X, TANG X. Deep convolutional network cascade for facial point detection[C]. 2013 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE,2013:3476-3483.
[6] Dong Yuan, Wu Yue. Adaptive cascade deep convolutional neural networks for face alignment[J]. Computer Standards & Interfaces,2015, 42:105-112.
[7] LIU X. Discriminative face alignment[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2009,31(11):1941-1954.
[8] Cao Xudong, Wei Yichen, Wen Fang, et al. Face alignment by explicit shape regression[J]. International Journal of Computer Vision,2014,107(2):177-190.
[9] LAUER F, SUEN C Y, BLOCH G. A trainable feature extractor for handwritten digit recognition[J]. Pattern Recognition,2007,40(6):1816-1824.
[10] SAINATH T N, MOHAMED A R, KINGSBURY B, et al. Deep convolutional neural networks for LVCSRA[C] // Proceedings of IEEE International Conference on Coustics, Speech and Signal Processing, 2013:8614-8618.
[11] 趙志宏,楊紹普,馬增強(qiáng). 基于卷積神經(jīng)網(wǎng)絡(luò)LeNet-5的車牌字符識(shí)別的研究[J]. 系統(tǒng)仿真學(xué)報(bào), 2010,22(3):638-641.
[12] Fan Jialue, Xu Wei, Wu Ying, et al. Human tracking using convolutional neural networks[J]. IEEE Transactions on Neural Networks,2010,20(10):1610-1623.