文/王同磊
在人工神經(jīng)網(wǎng)絡(luò)這一領(lǐng)域的研究過程中,衍生出了深度學(xué)習(xí)這一概念。例如,多層感知器,也就是含多隱層的感知器,這一類就屬于深度的學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)是如何表示的呢?通常而言,是通過各種組合,將低層特征形成某種抽象特征,或者是屬性類別等,通過這些過程,將發(fā)現(xiàn)的數(shù)據(jù)以分布式特征進行表示。
2006年,Hinton等人首次將深度學(xué)習(xí)這一概念提出。他們基于(DBN),也就是深信度網(wǎng)這一概念,提出了一種訓(xùn)練算法,稱為非監(jiān)督貪心算法。這一算法為解決與深層結(jié)構(gòu)等內(nèi)容有關(guān)的優(yōu)化類難題帶來可能性。并且據(jù)此又提出了自動編碼器這種深層結(jié)構(gòu)。另外,由其他研究學(xué)者提出了例證,卷積神經(jīng)這種網(wǎng)絡(luò)就是例證,它是首個真正意義上的正多層類型的學(xué)習(xí)算法。具體內(nèi)容是依據(jù)空間的這種相對關(guān)系,從而減少參數(shù),用以提高神經(jīng)的訓(xùn)練性能。
人臉識別這一技術(shù),主流觀點認為,分兩部分:一為前端人臉活檢。這一技術(shù)支持iOS和安卓等程序平臺。具體過程是:用戶通過點頭或搖頭,以及眨眼等各種動作進行智能檢測,目的是確定機器設(shè)備前是真人人臉。二為基于后臺功能的人臉識別。這種技術(shù)以第一部分為基礎(chǔ),在其基礎(chǔ)之上,獲取到全臉圖像之后,經(jīng)過掃描,識別用戶的身份證,身份證頭像與前端活檢人像對比而后做出判斷,得出是否是同一人的結(jié)論。
圖1
活體檢測,通俗意義上理解,就是判斷人臉活檢這一過程中是真人臉還是靜態(tài)假臉,比如照片打印的人臉,電腦中的人臉,甚至說是面具等;人臉活檢這項技術(shù)目前我們可以看到,經(jīng)常應(yīng)用在iOS、安卓等系統(tǒng)的移動平臺中,比如APP等。同時,由于這項對比技術(shù)運算量超級大,所以必須使用大量服務(wù)器支持,常見的是win平臺,國外也會使用Linux等平臺。
活檢的應(yīng)用領(lǐng)域非常廣泛,我們熟知的應(yīng)用場景有:銀行金融、各種支付以及安保門禁等?;铙w檢測通常是嵌套程序模塊使用。將人臉識別與活檢二者結(jié)合使用,成功的案例很多,比如實名認證等領(lǐng)域,避免了各種漏洞與攻擊。
實際上就是分類,用計算機語言說是1和0,也就是真和假,還有一種是多分類。前面提到的照片攻擊、面具攻擊,還有真人等。
首先我們從基礎(chǔ)開始說起,首先定義一個神經(jīng)網(wǎng)絡(luò)。
在圖1中需要我們最先了解的是ωljk。k,位于右下角,它代表第k個神經(jīng)元位于L-L層;L, 位于右上角,代表層數(shù),即“輸入”與權(quán)重w這一項結(jié)合;j,位于右下角的,代表第j個神經(jīng)元位于L層。
這么寫看起來好像比較奇怪,因為直覺上說,k在L之前,才是更符合我們認知的理解方式。但是后面我們可以看到,在這種處理方法之后,我們可以得到一種更簡潔的處理式子。比較而言,這種前后稍微顛倒下,也無所謂了,適應(yīng)下就好了。
如圖2所示,除了權(quán)重w之外,我們還有 b和 a。
b是我們的偏差,a是我們的輸入向量經(jīng)過激活函數(shù)之后的結(jié)果,也就是α=δ(z)。
在表現(xiàn)形式上,b跟a有這類似的特點:右上角的值是所在的層數(shù);右下角數(shù)值,代表所在的神經(jīng)元位置。據(jù)此,結(jié)合之前的公式,我們可以得出以下算式結(jié)論:
這個式子看起來好像復(fù)雜,但實際上很簡單,而且完全描述了我們剛才說的神經(jīng)網(wǎng)絡(luò)的問題,當(dāng)然,這里的αlj是其中的一個神經(jīng)元,它位于第L層的第j個。
這個神經(jīng)元的得來,就是從前一層L層的所有神經(jīng)元,與與之對應(yīng)的權(quán)重結(jié)合之后,所有的相加,經(jīng)過激活函數(shù)得來的。
在矩陣中,我們要求的某個值,就是行與列對應(yīng)位置的值相乘之后相加得到的??梢钥闯?,k即對應(yīng)的位置。例如,我們有公式
圖2
這個公式就是典型的矩陣相乘求值的公示,那么我們轉(zhuǎn)成矩陣相乘:
li=minj
可以把αlj理解成第l行第j列的值,那么我們采用矩陣相乘的方法來計算,就得到了:
αl=δ(ωlαl-1+bl)
下面,我們來總結(jié)一下,可以看到簡化的算式。并且很顯然,還能得出l與k顛倒的優(yōu)點。為了更方便,我們設(shè)定:
于是,我們很輕松的得出αl=σ(zl)接下來,該backpropagation了,為了計算這一項,我們可以進行兩個假設(shè)。第一,代價方程寫為:
這里面,x代表輸入樣本點,n代表樣本數(shù),y(x)代表輸出值,而αL(x)代表的輸出值是神經(jīng)網(wǎng)絡(luò)。其中L代表的就是層數(shù),神經(jīng)網(wǎng)絡(luò)的,很明顯也是最后一層。
第一個將 remote pluse 應(yīng)用到活體檢測中,多幀輸入
(交代下背景:在CVPR2014,Xiaobai Li已經(jīng)提出了從人臉視頻里測量心率的方法)算法流程:
(1)通過 pluse 在頻域上分布不同先區(qū)分 活體 or 照片攻擊 (因為照片中的人臉提取的心率分布不同)
(2)若判別1結(jié)果是活體,再 cascade一個 紋理LBP 分類器,來區(qū)分 活體 or 屏幕攻擊(因為屏幕視頻中人臉心率分布與活體相近),如圖3所示。
Pros: 通常意義上,按照學(xué)術(shù)界的觀點,引入了新模態(tài)——心理信號,這是很大意義上的進步;從另一個角度而言,也就是工業(yè)發(fā)展的領(lǐng)域,加入做不到一步到位,還可以通過Cascade這一方式進行部署,這也是進步的。
Cons: 因為remote heart rate這一算法有它的局限性,所以結(jié)果來看,pulse-feature存在判別能力不足的弱點,加上顯示器里video的視頻中,人臉的pulse-feature方面是不是還存在比較細微的差別,這一方面還不確定,需要更進一步的驗證。
正面人臉圖像檢測方法
圖4
矩陣 Yi∈R64×64為第 i個個體的人臉圖像矩陣,Di 為第i個個體所有人臉圖像集合,Yi∈Di。正面人臉檢測公式為:
我們通過訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)來進行人臉重建。loss函數(shù)為:
I代表第i個,k代表i中第k張。X^{0}代表的是訓(xùn)練圖像,Y代表的是目標(biāo)圖像。
深度的神經(jīng)網(wǎng)絡(luò),它包含三層。max pooling是與前兩層相接;全連接層是與第三層相接。與傳統(tǒng)統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)不同,我們的fi lters不共享權(quán)重(我們認為人臉的不同區(qū)域存在不同類型的特征)。以下是第l層的卷積層算式:經(jīng)過這些計算,我們終于可以得出人像圖了。下面就是經(jīng)過訓(xùn)練之后,生成的canonical view:如圖4所示。
目前的研究水平,要想達到人臉識別和深度學(xué)習(xí)的全部結(jié)合,可以說路漫漫其修遠兮,還有很多探索空間。比如說雙胞胎識別,比如說妝前和妝后的識別,要達到一定的準(zhǔn)確度,還存在一定難度。相信不久的將來人臉識別系統(tǒng)將在速度、可靠性、穩(wěn)定性,成本取得更好的。從而能夠為人類的進步貢獻力量。