杜小甫,黃興晗,劉沂杰
(廈門大學(xué)嘉庚學(xué)院信息科學(xué)與技術(shù)學(xué)院,福建漳州,363105)
早期人臉識別技術(shù)主要為基于特征檢測的傳統(tǒng)方法,包括基于幾何特征、基于特征臉、基于統(tǒng)計(jì)理論的方法。近年來隨著深度學(xué)習(xí)的成功,人臉識別技術(shù)的技術(shù)路線也轉(zhuǎn)移到基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)方法上來。目前使用python 語言進(jìn)行機(jī)器學(xué)習(xí)開發(fā)比較流行,主要是因?yàn)閜ython 支持很多機(jī)器學(xué)習(xí)庫。
PyTorch 是一個(gè)開源的Python 機(jī)器學(xué)習(xí)庫(基于Torch),具有強(qiáng)大的GPU 加速的張量計(jì)算功能與包含自動求導(dǎo)系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)(支持動態(tài)神經(jīng)網(wǎng)絡(luò))。PyTorch 具有很多優(yōu)點(diǎn)。(1)簡潔:PyTorch 設(shè)計(jì)追求的就是最小封裝,且最大程度的減少了重新編寫函數(shù)的必要。 PyTorch 中的邏輯為從低到高三個(gè)級別的抽象:張量→變量(autograd)→層(nn.Module),三個(gè)抽象分別代表為:高維數(shù)組,自動推導(dǎo)和神經(jīng)網(wǎng)絡(luò),三者互相聯(lián)系密切。(2)速度:上述PyTorch 的靈活簡潔性并不會因此而降低速度,PyTorch 的速度表現(xiàn)優(yōu)于Tensorlow 和Keras,使用PyTorch 與其他框架實(shí)現(xiàn)相同的算法時(shí),PyTorch 的速度總是比其他的框架更快。(3)易用:PyTorch 是面向?qū)ο蟮乃锌蚣苤凶钊菀咨鲜值?。PyTorch是Torch 在Python 上的衍生(基于Torch),而Torch 接口的設(shè)計(jì)以其靈活性和易用性而聞名。
孟令軍[1]等人設(shè)計(jì)一種卷積神經(jīng)網(wǎng)絡(luò),在深度學(xué)習(xí)Pytorch 框架下使用Youtube face 數(shù)據(jù)集經(jīng)過訓(xùn)練得到模型分類器,且測試集上錯誤率達(dá)到0.139%,結(jié)合Opencv 的級聯(lián)人臉檢測器和訓(xùn)練好的Pytorch 模型可定位任意圖片的人臉框以及68 個(gè)關(guān)鍵點(diǎn)的位置。測試結(jié)果表明,人臉及人臉關(guān)鍵點(diǎn)檢測識別準(zhǔn)確度較高,且該方法簡單高效,可用于現(xiàn)實(shí)應(yīng)用場景的模塊構(gòu)建??姿琜2]設(shè)計(jì)了基于Pytorch的人臉識別系統(tǒng),其硬件系統(tǒng)設(shè)計(jì)包括顯示屏、圖像采集器件;軟件系統(tǒng)組成有人臉檢測節(jié)點(diǎn)設(shè)計(jì)、人臉屬性識別節(jié)點(diǎn)的設(shè)計(jì)。該文對基于Pytorch 的人臉識別系統(tǒng)進(jìn)行分析,依托Pytorch 語言庫的優(yōu)勢,根據(jù)傳統(tǒng)人臉識別系統(tǒng)的缺陷,實(shí)現(xiàn)本文設(shè)計(jì)。實(shí)驗(yàn)論證表明,該文設(shè)計(jì)的方法具備極高的有效性。該文的研究能夠?yàn)榛赑ytorch 的人臉識別系統(tǒng)的構(gòu)建和應(yīng)用提供理論依據(jù)。
TensorFlow 是一個(gè)基于數(shù)據(jù)流編程的開源軟件庫。使用TensorFlow 的程序在運(yùn)行中具備一定的魯棒性和準(zhǔn)確性。TensorFlow 還具備完全開源性,并擁有多層級結(jié)構(gòu),能夠部署在服務(wù)器,手機(jī)端,PC 終端等(并支持GPU 與TPU 計(jì)算)。
相比于PyTorch,他的優(yōu)點(diǎn)包括:(1)可視化方面:TensorFlow 中包含的 TensorBoard 庫功能非常強(qiáng)大,能夠展示網(wǎng)絡(luò)圖、張量的指標(biāo)變化、張量的分布情況等功能;能夠直觀的幫助我們進(jìn)行參數(shù)選擇。(PyTorch 能夠使用的Visdom,但功能簡單且有限).(2)訓(xùn)練模式方面:使用 TensorFlow 時(shí),須手動編寫代碼,并微調(diào)要在特定設(shè)備上運(yùn)行的每個(gè)操作,以實(shí)現(xiàn)分布式訓(xùn)練。PyTorch 利用異步執(zhí)行的本地支持實(shí)現(xiàn),分布式訓(xùn)練方面較為欠缺。(3)生產(chǎn)力方面:TensorFlow 在此方面具有相比于其他框架的絕對優(yōu)勢,可直接使用 TensorFlow Serving。而PyTorch 沒有能夠直接在網(wǎng)絡(luò)上部署模型的框架。(4)資源方面:TensorFlow 作為較早進(jìn)行開源的機(jī)器學(xué)習(xí)庫,TensorFlow 擁有更豐富的模型,在社區(qū)中所擁有的資料與支持程度也是較為優(yōu)秀。
程丹婷[3]等人設(shè)計(jì)了一種基于Google 人工智能架構(gòu)Tensorflow,采用深度神經(jīng)網(wǎng)絡(luò)方法進(jìn)行人臉識別的系統(tǒng),系統(tǒng)通過人工智能,訓(xùn)練大量的樣本圖片,在樣本訓(xùn)練過程中進(jìn)行自主學(xué)習(xí),保證了人臉識別功能的高準(zhǔn)確性。該文設(shè)計(jì)并實(shí)現(xiàn)了基于人工智能的人臉識別系統(tǒng),系統(tǒng)包括視頻流數(shù)據(jù)幀解析、多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)人臉檢測、Facenet 卷積神經(jīng)網(wǎng)絡(luò)人臉識別、KNN 人臉分類等模塊,對系統(tǒng)進(jìn)行了多種場景的識別測試,測試結(jié)果表明,系統(tǒng)可以準(zhǔn)確地檢測到人臉關(guān)鍵部位,并對人臉圖片進(jìn)行檢測判別,輸出識別結(jié)果,識別準(zhǔn)確率高,可以應(yīng)用到實(shí)際認(rèn)證場景中。楊金達(dá)[4]等人設(shè)計(jì)了基于Tensorflow 的人臉識別系統(tǒng),并研究了其在智能安防領(lǐng)域的應(yīng)用。黃侃等人研究了安卓系統(tǒng)下利用Tensorflow 進(jìn)行人臉識別的系統(tǒng),并將其應(yīng)用于教學(xué)考勤中。李慧穎[5]等人結(jié)合Tensorflow 和OpenCV,實(shí)現(xiàn)了視頻截圖中的人臉識別。
Inception 網(wǎng)絡(luò)又叫GoogLeNet,Inception 網(wǎng)絡(luò)很好的解決了兩個(gè)問題:(1)網(wǎng)絡(luò)容易發(fā)生過擬合的現(xiàn)象(訓(xùn)練數(shù)據(jù)較少時(shí))。(2)均勻的增加網(wǎng)絡(luò)的大小,會導(dǎo)致計(jì)算量的劇烈增大。解決方法:引入稀疏特性和將全連接層轉(zhuǎn)換成稀疏連接。
Inception 網(wǎng)絡(luò)是通過許多模塊組成的,其中一個(gè)關(guān)鍵的模塊如圖1 所示。Inception 網(wǎng)絡(luò)引入了一個(gè)關(guān)鍵的點(diǎn)去解決海量參數(shù)的問題:使用1×1 的卷積核來降低維度,通過推導(dǎo)的數(shù)據(jù),數(shù)據(jù)量大約減少了四倍左右。通過使用1×1的卷積核還能夠引入更多非線性,提高泛化能力(需要使用ReLU 激活函數(shù))。
圖1 Inception 網(wǎng)絡(luò)模塊組成
雷雨婷[6]等人實(shí)現(xiàn)了一種基于Inception-v3 卷積神經(jīng)網(wǎng)絡(luò)的人臉識別方法。該方法通過修改pool3 以上的結(jié)構(gòu)來改變網(wǎng)絡(luò)深度,從而使卷積神經(jīng)網(wǎng)絡(luò)模型能自動提取人臉特征并進(jìn)行分類。利用OpenCV 自建人臉數(shù)據(jù)庫進(jìn)行訓(xùn)練,通過批量梯度下降法不斷優(yōu)化參數(shù),利用Dropout 方法解決過擬合問題。結(jié)果表明:該方法在自建人臉數(shù)據(jù)庫上的圖像識別率達(dá)到98%,并且對光照強(qiáng)度、面部表情變化等干擾具有魯棒性。李楠等人提出了一種基于Tensorflow 平臺的多Inception 模型,通過將多個(gè)Inception 結(jié)構(gòu)進(jìn)行串聯(lián),再通過分解卷積核的方式減少輸入?yún)?shù),實(shí)現(xiàn)了多維度同時(shí)卷積再聚合,提高了人臉識別的精度。
由于人臉為3D 結(jié)構(gòu),光照投射后會形成陰影,會對原有的特征進(jìn)行干擾。目前的解決方法包括如下算法:(1)Retinex 算法,(2)Gamma 函數(shù)校正算法。
常云翔對復(fù)雜光線條件下人臉識別問題進(jìn)行深入研究,首先構(gòu)建了一個(gè)復(fù)雜光照條件下的人臉數(shù)據(jù)集;第二,在對不同結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)的性能進(jìn)行了分析;第三,研究了光照數(shù)據(jù)增強(qiáng)技術(shù);第四,針對神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)間長、難以調(diào)整的問題,研究了集成批規(guī)范化算法。
姿態(tài)的變化會導(dǎo)致面部特征發(fā)生改變,可能會造成一部分的信息丟失,較為先進(jìn)的算法中使用深度較高的神經(jīng)網(wǎng)絡(luò),能夠擴(kuò)大數(shù)據(jù)集的方法較好的解決這個(gè)問題。
鄒國鋒等人針對近年來國內(nèi)外出現(xiàn)的多姿態(tài)人臉識別技術(shù)和方法進(jìn)行簡單介紹和系統(tǒng)分類,分析各種方法的優(yōu)缺點(diǎn),并做出簡要評價(jià)。周凱汀等人提出基于改進(jìn)的ORB 局部特征以及每位個(gè)體多個(gè)模板樣本的多姿態(tài)人臉識別方法。謝鵬程首先對單角度多姿態(tài)人臉圖像進(jìn)行融合,然后消除人臉修復(fù)后的像素缺失。
由于拍攝距離,角度以及攝像頭的問題導(dǎo)致人臉圖片分辨率低,常見解決方法包括:(1)基于重構(gòu)超分辨率圖像的LR 人臉識別方法,(2)基于公共特征子空間的LR 人臉識別方法。
張凱兵等人全面綜述了低分辨人臉識別技術(shù)的研究進(jìn)展,并對相關(guān)亟需解決的關(guān)鍵問題進(jìn)行了討論。羅皓等人研究了一種半對偶投影字典學(xué)習(xí)方法。該方法可分為訓(xùn)練和測試兩個(gè)階段。石正宇等人提出了一種輕型判別自歸一化神經(jīng)網(wǎng)絡(luò),能夠從高分辨率及其對應(yīng)的低分辨率圖像中提取具有判別性的特征,并將特征耦合映射到共同的子空間。
本文總結(jié)了基于Python 的兩個(gè)機(jī)器學(xué)習(xí)庫,和目前較為流行的Inception 網(wǎng)絡(luò)。接著對現(xiàn)今人臉識別領(lǐng)域遇到的幾個(gè)問題進(jìn)行列舉,并將較為先進(jìn)的解決方法進(jìn)行闡述,對解決方法中的優(yōu)缺點(diǎn)進(jìn)行分析,將算法的缺陷進(jìn)行提出。