深扒人臉識別技術的原理、算法(上)
發布時間:2018-02-06 來源:Imagination Tech 責任編輯:lina
【導讀】在(zai)深(shen)度(du)學(xue)習(xi)出(chu)現(xian)後(hou),人(ren)臉(lian)識(shi)別(bie)技(ji)術(shu)才(cai)真(zhen)正(zheng)有(you)了(le)可(ke)用(yong)性(xing)。這(zhe)是(shi)因(yin)為(wei)之(zhi)前(qian)的(de)機(ji)器(qi)學(xue)習(xi)技(ji)術(shu)中(zhong),難(nan)以(yi)從(cong)圖(tu)片(pian)中(zhong)取(qu)出(chu)合(he)適(shi)的(de)特(te)征(zheng)值(zhi)。輪(lun)廓(kuo)?顏(yan)色(se)?眼(yan)睛(jing)?如(ru)此(ci)多(duo)的(de)麵(mian)孔(kong),且(qie)隨(sui)著(zhe)年(nian)紀(ji)、光線、拍攝角度、氣色、表情、化妝、peishiguajiandengdengdebutong,tongyigerendemiankongzhaopianzaizhaopianxiangsucengmianshangchabiehenda,pingjiezhuanjiamendejingyanyushicuonanyiquchuzhunquelvjiaogaodetezhengzhi,ziranyemeifaduizhexietezhengzhijinyibufenlei。
深度學習的最大優勢在於由訓練算法自行調整參數權重,構造出一個準確率較高的f(x)函數,給定一張照片則可以獲取到特征值,進而再歸類。
本ben文wen中zhong筆bi者zhe試shi圖tu用yong通tong俗su的de語yu言yan探tan討tao人ren臉lian識shi別bie技ji術shu,首shou先xian概gai述shu人ren臉lian識shi別bie技ji術shu,接jie著zhe探tan討tao深shen度du學xue習xi有you效xiao的de原yuan因yin以yi及ji梯ti度du下xia降jiang為wei什shen麼me可ke以yi訓xun練lian出chu合he適shi的de權quan重zhong參can數shu,最zui後hou描miao述shu基ji於yuCNN卷積神經網絡的人臉識別。
一、人臉識別技術概述
人臉識別技術大致由人臉檢測和人臉識別兩個環節組成。
之所以要有人臉檢測,不光是為了檢測出照片上是否有人臉,更重要的是把照片中人臉無關的部分刪掉,否則整張照片的像素都傳給f(x)識shi別bie函han數shu肯ken定ding就jiu不bu可ke用yong了le。人ren臉lian檢jian測ce不bu一yi定ding會hui使shi用yong深shen度du學xue習xi技ji術shu,因yin為wei這zhe裏li的de技ji術shu要yao求qiu相xiang對dui低di一yi些xie,隻zhi需xu要yao知zhi道dao有you沒mei有you人ren臉lian以yi及ji人ren臉lian在zai照zhao片pian中zhong的de大da致zhi位wei置zhi即ji可ke。一yi般ban我wo們men考kao慮lv使shi用yongOpenCV、dlib等開源庫的人臉檢測功能(基於專家經驗的傳統特征值方法計算量少從而速度更快),也可以使用基於深度學習實現的技術如MTCNN(在神經網絡較深較寬時運算量大從而慢一些)。
在人臉檢測環節中,我們主要關注檢測率、漏檢率、誤檢率三個指標,其中:
• 檢測率:存在人臉並且被檢測出的圖像在所有存在人臉圖像中的比例;
• 漏檢率:存在人臉但是沒有檢測出的圖像在所有存在人臉圖像中的比例;
• 誤檢率:不存在人臉但是檢測出存在人臉的圖像在所有不存在人臉圖像中的比例。
當然,檢測速度也很重要。本文不對人臉檢測做進一步描述。
在人臉識別環節,其應用場景一般分為1:1和1:N。
1:1就jiu是shi判pan斷duan兩liang張zhang照zhao片pian是shi否fou為wei同tong一yi個ge人ren,通tong常chang應ying用yong在zai人ren證zheng匹pi配pei上shang,例li如ru身shen份fen證zheng與yu實shi時shi抓zhua拍pai照zhao是shi否fou為wei同tong一yi個ge人ren,常chang見jian於yu各ge種zhong營ying業ye廳ting以yi及ji後hou麵mian介jie紹shao的de1:N場景中的注冊環節。而1:N應用場景,則是首先執行注冊環節,給定N個輸入包括人臉照片以及其ID標識,再執行識別環節,給定人臉照片作為輸入,輸出則是注冊環節中的某個IDbiaoshihuozhebuzaizhucezhaopianzhong。kejian,conggailvjiaodushanglaikan,qianzhexiangduijiandanxuduo,qieyouyuzhengjianzhaotongchangyudangxiazhaopianniandaijiangeshijianbuding,suoyitongchangwomenshedingdexiangsiduyuzhidoushibijiaodide,yicihuodebijiaohaodetongguolv,rongrenshaogaodewushibielv。
而後者1:N,隨著N的變大,誤識別率會升高,識別時間也會增長,所以相似度閾值通常都設定得較高,通過率會下降。這裏簡單解釋下上麵的幾個名詞:誤識別率就是照片其實是A的卻識別為B的比率;通過率就是照片確實是A的,但可能每5張A的照片才能識別出4張是A其通過率就為80%;相(xiang)似(si)度(du)閾(yu)值(zhi)是(shi)因(yin)為(wei)對(dui)特(te)征(zheng)值(zhi)進(jin)行(xing)分(fen)類(lei)是(shi)概(gai)率(lv)行(xing)為(wei),除(chu)非(fei)輸(shu)入(ru)的(de)兩(liang)張(zhang)照(zhao)片(pian)其(qi)實(shi)是(shi)同(tong)一(yi)個(ge)文(wen)件(jian),否(fou)則(ze)任(ren)何(he)兩(liang)張(zhang)照(zhao)片(pian)之(zhi)間(jian)都(dou)有(you)一(yi)個(ge)相(xiang)似(si)度(du),設(she)定(ding)好(hao)相(xiang)似(si)度(du)閾(yu)值(zhi)後(hou)唯(wei)有(you)兩(liang)張(zhang)照(zhao)片(pian)的(de)相(xiang)似(si)度(du)超(chao)過(guo)閾(yu)值(zhi),才(cai)認(ren)為(wei)是(shi)同(tong)一(yi)個(ge)人(ren)。所(suo)以(yi),單(dan)純(chun)的(de)評(ping)價(jia)某(mou)個(ge)人(ren)臉(lian)識(shi)別(bie)算(suan)法(fa)的(de)準(zhun)確(que)率(lv)沒(mei)有(you)意(yi)義(yi),我(wo)們(men)最(zui)需(xu)要(yao)弄(nong)清(qing)楚(chu)的(de)是(shi)誤(wu)識(shi)別(bie)率(lv)小(xiao)於(yu)某(mou)個(ge)值(zhi)時(shi)(例如0.1%)的通過率。不管1:1還是1:N,其底層技術是相同的,隻是難度不同而已。
取出人臉特征值是最難的,那麼深度學習是如何取特征值的?
假定我們給出的人臉照片是100*100像素大小,由於每個像素有RGB三個通道,每個像素通道由0-255範圍的字節表示,則共有3個100*100的矩陣計3wangezijiezuoweishurushuju。shenduxuexishijishangjiushishengchengyigejinsihanshu,bashangmiandeshuruzhizhuanhuaweikeyiyongzuotezhengfenleidetezhengzhi。name,tezhengzhikeyishiyigeshuzima?dangranbuxing,yigeshuzi(或者叫標量)是(shi)無(wu)法(fa)有(you)效(xiao)表(biao)示(shi)出(chu)特(te)征(zheng)的(de)。通(tong)常(chang)我(wo)們(men)用(yong)多(duo)個(ge)數(shu)值(zhi)組(zu)成(cheng)的(de)向(xiang)量(liang)表(biao)示(shi)特(te)征(zheng)值(zhi),向(xiang)量(liang)的(de)維(wei)度(du)即(ji)其(qi)中(zhong)的(de)數(shu)值(zhi)個(ge)數(shu)。特(te)征(zheng)向(xiang)量(liang)的(de)維(wei)度(du)並(bing)非(fei)越(yue)大(da)越(yue)好(hao),Google的FaceNet項目(參見https://arxiv.org/abs/1503.03832論文)做過的測試結果顯示,128個數值組成的特征向量結果最好,如下圖所示:

那麼,現在問題就轉化為怎麼把3*100*100的矩陣轉化為128維的向量,且這個向量能夠準確的區分出不同的人臉?
假定照片為x,特征值為y,也就是說存在一個函數f(x)=y可以完美的找出照片的人臉特征值。現在我們有一個f*(x)近似函數,其中它有參數w(或者叫權重w)可以設置,例如寫成f*(x;w),若有訓練集x及其id標識y,設初始參數p1後,那麼每次f*(x;w)得到的y`與實際標識y相比,若正確則通過,若錯誤則適當調整參數w,如果能夠正確的調整好參數w,f*(x;w)就會與理想中的f(x)函數足夠接近,我們就獲得了概率上足夠高準確率的f*(x;w)函數。這一過程叫做監督學習下的訓練。而計算f*(x;w)值的過程因為是正常的函數運算,我們稱為前向運算,而訓練過程中比較y`與實際標識id值y結果後,調整參數p的過程則是反過來的,稱為反向傳播。
由於我們傳遞的x入參畢竟是一張照片,照片既有對焦、光線、角度等導致的不太容易衡量的質量問題,也有本身的像素數多少問題。如果x本身含有的數據太少,即圖片非常不清晰,例如28*28像素的照片,那麼誰也無法準確的分辨出是哪個人。可以想見,必然像素數越多識別也越準,但像素數越多導致的計算、傳輸、存儲消耗也越大,我們需要有根據地找到合適的閾值。下圖是FaceNet論文的結果,雖然隻是一家之言,但Google的嚴謹態度使得數據也很有參考價值。
從圖中可見,排除照片其他質量外,像素數至少也要有100*100(純人臉部分)才能保證比較高的識別率。
二、深度學習技術的原理
由清晰的人臉照轉化出的像素值矩陣,應當設計出什麼樣的函數f(x)轉zhuan化hua為wei特te征zheng值zhi呢ne?這zhe個ge問wen題ti的de答da案an依yi賴lai於yu分fen類lei問wen題ti。即ji,先xian不bu談tan特te征zheng值zhi,首shou先xian如ru何he把ba照zhao片pian集ji合he按an人ren正zheng確que地di分fen類lei?這zhe裏li就jiu要yao先xian談tan談tan機ji器qi學xue習xi。機ji器qi學xue習xi認ren為wei可ke以yi從cong有you限xian的de訓xun練lian集ji樣yang本ben中zhong把ba算suan法fa很hen好hao地di泛fan化hua。所suo以yi,我wo們men先xian找zhao到dao有you限xian的de訓xun練lian集ji,設she計ji好hao初chu始shi函han數shuf(x;w),並已經量化好了訓練集中x->y。如果數據x是低維的、簡單的,例如隻有二維,那麼分類很簡單,如下圖所示:

上圖中的二維數據x隻有方形和圓形兩個類別y,很好分,我們需要學習的分類函數用最簡單的f(x,y)=ax+by+c就能表示出分類直線。例如f(x,y)大於0時表示圓形,小於0時表示方形。
給定隨機數作為a,c,b的初始值,我們通過訓練數據不斷的優化參數a,b,c,把不合適的L1、L3等分類函數逐漸訓練成L2,這樣的L2去麵對泛化的測試數據就可能獲得更好的效果。然而如果有多個類別,就需要多條分類直線才能分出,如下圖所示:

這其實相當於多條分類函數執行與&&、或||操作後的結果。這個時候還可能用f1>0 && f2<0 && f3>0這zhe樣yang的de分fen類lei函han數shu,但dan如ru果guo更geng複fu雜za的de話hua,例li如ru本ben身shen的de特te征zheng不bu明ming顯xian也ye沒mei有you彙hui聚ju在zai一yi起qi,這zhe種zhong找zhao特te征zheng的de方fang式shi就jiu玩wan不bu轉zhuan了le,如ru下xia圖tu所suo示shi,不bu同tong的de顏yan色se表biao示shi不bu同tong的de分fen類lei,此ci時shi的de訓xun練lian數shu據ju完wan全quan是shi非fei線xian性xing可ke分fen的de狀zhuang態tai:

這個時候,我們可以通過多層函數嵌套的方法來解決,例如f(x)=f1(f2(x)),這樣f2函數可以是數條直線,而f1函數可以通過不同的權重w以及激勵函數完成與&&、或||dengdengcaozuo。zhelizhiyouliangcenghanshu,ruguohanshuqiantaocengshuyueduo,tayuenengbiaodachufuzadefenleifangfa,zheduigaoweishujuhenyoubangzhu。liruwomendezhaopianhaowuyiwenjiushizheyangdeshuru。suoweijilihanshujiushibahanshuf計算出的非常大的值域轉化為[0,1]這樣較小的值域,這允許多層函數不斷地前向運算、分類。
前向運算隻是把輸入交給f1(x,w1)函數,計算出的值再交給f2(y1,w2)函數,依次類推,很簡單就可以得到最終的分類值。但是,因為初始的w權重其實沒有多大意義,它得出的分類值f*(x)肯定是錯的,在訓練集上我們知道正確的值y,那麼事實上我們其實是希望y-f*(x)的值最小,這樣分類就越準。這其實變成了求最小值的問題。當然,y-f*(x)隻是示意,事實上我們得到的f*(x)隻是落到各個分類上的概率,把這個概率與真實的分類相比較得到最小值的過程,我們稱為損失函數,其值為loss,我們的目標是把損失函數的值loss最小化。在人臉識別場景中,softmax是一個效果比較好的損失函數,我們簡單看下它是如何使用的。
比如我們有訓練數據集照片對應著cat、dog、ship三個類別,某個輸入照片經過函數f(x)=x*W+b,前向運算得到該照片屬於這3個分類的得分值。此時,這個函數被稱為得分函數,如下圖所示,假設左邊關於貓的input image是一個4維向量[56,231,24,2],而W權重是一個4*3的矩陣,那麼相乘後再加上向量[1.1,3.2,-1.2]可得到在cat、 dog、ship三個類別上的得分:

從上圖示例可見,雖然輸入照片是貓,但得分上屬於狗的得分值437.9最高,但究竟比貓和船高多少呢?很難衡量!如果我們把得分值轉化為0-100的百分比概率,這就方便度量了。這裏我們可以使用sigmoid函數,如下圖所示:

從上圖公式及圖形可知,sigmoid可以把任意實數轉換為0-1之間的某個數作為概率。但sigmoid概率不具有歸一性,也就是說我們需要保證輸入照片在所有類別的概率之和為1,這樣我們還需要對得分值按softmax方式做以下處理:

這樣給定x後可以得到x在各個類別下的概率。假定三個類別的得分值分別為3、1、-3,則按照上麵的公式運算後可得概率分別為[0.88、0.12、0],計算過程如下圖所示:

然而實際上x對應的概率其實是第一類,比如[1,0,0],現在拿到的概率(或者可稱為似然)是[0.88、0.12、0]。那麼它們之間究竟有多大的差距呢?這個差距就是損失值loss。如何獲取到損失值呢?在softmax裏我們用互熵損失函數計算量最小(方便求導),如下所示:
其中i就是正確的分類,例如上麵的例子中其loss值就是-ln0.88。這樣我們有了損失函數f(x)後,怎麼調整x才能夠使得函數的loss值最小呢?這涉及到微分導數。
三、梯度下降(上)
梯度下降就是為了快速的調整權重w,使得損失函數f(x;w)的值最小。因為損失函數的值loss最小,就表示上麵所說的在訓練集上的得分結果與正確的分類值最接近!
導數求的是函數在某一點上的變化率。例如從A點開車到B點,通過距離和時間可以算出平均速度,但在其中C點的瞬時速度是多少呢?如果用x表示時間,f(x)表示車子從A點駛出的距離,那麼在x0的瞬時速度可以轉化為:從x0時再開一個很小的時間,例如1秒,那麼這一秒的平均速度就是這一秒開出的距離除以1秒,即(f(1+x0)-f(x0))/1。如果我們用的不是1秒而是1微秒,那麼這個1微秒內的平均速度必然更接近x0時的瞬時速度。於是,到該時間段t趨向於0時,我們就得到了x0時的瞬時速度。這個瞬時速度就是函數f在x0上的變化率,所有x上的變化率就構成了函數f(x)的導數,稱為f`(x)。即:
從幾何意義上看,變化率就變成了斜率,這更容易理解怎樣求函數的最小值。例如下圖中有函數y=f(x)用粗體黑線表示,其在P0點的變化率就是切線紅線的斜率:

可以形象的看出,當斜率的值為正數時,把x向左移動變小一些,f(x)的值就會小一些;當斜率的值為負數時,把x向右移動變大一些,f(x)的值也會小一些,如下圖所示:

這樣,斜率為0時我們其實就得到了函數f在該點可以得到最小值。那麼,把x向xiang左zuo或huo者zhe向xiang右you移yi一yi點dian,到dao底di移yi多duo少shao呢ne?如ru果guo移yi多duo了le,可ke能neng移yi過guo了le,如ru果guo移yi得de很hen少shao,則ze可ke能neng要yao移yi很hen久jiu才cai能neng找zhao到dao最zui小xiao點dian。還hai有you一yi個ge問wen題ti,如ru果guof(x)操作函數有多個局部最小點、全局最小點時,如果x移的非常小,則可能導致通過導數隻能找到某個並不足夠小的局部最小點。如下圖所示:

藍色的為局部最小點,紅色是全局最小點。所以x移動多少是個問題,x每mei次ci的de移yi動dong步bu長chang過guo大da或huo者zhe過guo小xiao都dou可ke能neng導dao致zhi找zhao不bu到dao全quan局ju最zui小xiao點dian。這zhe個ge步bu長chang除chu了le跟gen導dao數shu斜xie率lv有you關guan外wai,我wo們men還hai需xu要yao有you一yi個ge超chao參can數shu來lai控kong製zhi它ta的de移yi動dong速su度du,這zhe個ge超chao參can數shu稱cheng為wei學xue習xi率lv,由you於yu它ta很hen難nan優you化hua,所suo以yi一yi般ban需xu要yao手shou動dong設she置zhi而er不bu能neng自zi動dong調tiao整zheng。考kao慮lv到dao訓xun練lian時shi間jian也ye是shi成cheng本ben,我wo們men通tong常chang在zai初chu始shi訓xun練lian階jie段duan把ba學xue習xi率lv設she的de大da一yi些xie,越yue往wang後hou學xue習xi率lv設she的de越yue小xiao。
namemeiciyidongdebuchangyudaoshudezhiyouguanma?zheshizirande,daoshudezhengfuzhijuedingleyidongdefangxiang,erdaoshudejueduizhidaxiaozejuedinglexielvshifoudouqiao。yuedouqiaozeyidongdebuchangyingdangyueda。suoyi,buchangyouxuexilvhedaoshugongtongjueding。jiuxiangxiamianzhegehanshu,λ是學習率,而∂F(ωj) / ∂ωj是在ωj點的導數。
ωj = ωj – λ ∂F(ωj) / ∂ωj
根據導數判斷損失函數f在x0點上應當如何移動,才能使得fzuikuaidaodazuixiaozhidefangfa,womenchengweitiduxiajiang。tiduyejiushidaoshu,yanzhefutidudefangxiang,anzhaotiduzhikongzhiyidongbuchang,jiunengkuaisudaodazuixiaozhi。dangran,shijishangwomenweibinengzhaodaozuixiaodian,tebieshibenshencunzaiduogezuixiaodianshi,danruguozhegezhibenshenyezugouxiao,womenyeshikeyijieshoude,ruxiatusuoshi:

yishangwomenshiyiyiweishujulaikantiduxiajiang,danwomendezhaopianshiduoweishuju,cishiruheqiudaoshu?youruhetiduxiajiangne?cishiwomenxuyaoyongdaopiandaoshudegainian。qishitayudaoshuhenxiangsi,yinweix是多維向量,那麼我們假定計算Xi的導數時,x上的其他數值不變,這就是Xi的偏導數。此時應用梯度下降法就如下圖所示,θ是二維的,我們分別求θ0和θ1的導數,就可以同時從θ0和θ1兩個方向移動相應的步長,尋找最低點,如下圖所示:

特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
微波功率管
微波開關
微波連接器
微波器件
微波三極管
微波振蕩器
微電機
微調電容
微動開關
微蜂窩
位置傳感器
溫度保險絲
溫度傳感器
溫控開關
溫控可控矽
聞泰
穩壓電源
穩壓二極管
穩壓管
無焊端子
無線充電
無線監控
無源濾波器
五金工具
物聯網
顯示模塊
顯微鏡結構
線圈
線繞電位器
線繞電阻




