深扒人臉識別技術的原理、算法(上)
發布時間: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)、光線、拍攝角度、氣色、表情、化妝、佩pei飾shi掛gua件jian等deng等deng的de不bu同tong,同tong一yi個ge人ren的de麵mian孔kong照zhao片pian在zai照zhao片pian象xiang素su層ceng麵mian上shang差cha別bie很hen大da,憑ping借jie專zhuan家jia們men的de經jing驗yan與yu試shi錯cuo難nan以yi取qu出chu準zhun確que率lv較jiao高gao的de特te征zheng值zhi,自zi然ran也ye沒mei法fa對dui這zhe些xie特te征zheng值zhi進jin一yi步bu分fen類lei。
深度學習的最大優勢在於由訓練算法自行調整參數權重,構造出一個準確率較高的f(x)函數,給定一張照片則可以獲取到特征值,進而再歸類。
benwenzhongbizheshituyongtongsudeyuyantantaorenlianshibiejishu,shouxiangaishurenlianshibiejishu,jiezhetantaoshenduxuexiyouxiaodeyuanyinyijitiduxiajiangweishenmekeyixunlianchuheshidequanzhongcanshu,zuihoumiaoshujiyuCNN卷積神經網絡的人臉識別。
一、人臉識別技術概述
人臉識別技術大致由人臉檢測和人臉識別兩個環節組成。
之所以要有人臉檢測,不光是為了檢測出照片上是否有人臉,更重要的是把照片中人臉無關的部分刪掉,否則整張照片的像素都傳給f(x)shibiehanshukendingjiubukeyongle。renlianjiancebuyidinghuishiyongshenduxuexijishu,yinweizhelidejishuyaoqiuxiangduidiyixie,zhixuyaozhidaoyoumeiyourenlianyijirenlianzaizhaopianzhongdedazhiweizhijike。yibanwomenkaolvshiyongOpenCV、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標識,再執行識別環節,給定人臉照片作為輸入,輸出則是注冊環節中的某個ID標biao識shi或huo者zhe不bu在zai注zhu冊ce照zhao片pian中zhong。可ke見jian,從cong概gai率lv角jiao度du上shang來lai看kan,前qian者zhe相xiang對dui簡jian單dan許xu多duo,且qie由you於yu證zheng件jian照zhao通tong常chang與yu當dang下xia照zhao片pian年nian代dai間jian隔ge時shi間jian不bu定ding,所suo以yi通tong常chang我wo們men設she定ding的de相xiang似si度du閾yu值zhi都dou是shi比bi較jiao低di的de,以yi此ci獲huo得de比bi較jiao好hao的de通tong過guo率lv,容rong忍ren稍shao高gao的de誤wu識shi別bie率lv。
而後者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)數(shu)f(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以及激勵函數完成與&&、或||等deng等deng操cao作zuo。這zhe裏li隻zhi有you兩liang層ceng函han數shu,如ru果guo函han數shu嵌qian套tao層ceng數shu越yue多duo,它ta越yue能neng表biao達da出chu複fu雜za的de分fen類lei方fang法fa,這zhe對dui高gao維wei數shu據ju很hen有you幫bang助zhu。例li如ru我wo們men的de照zhao片pian毫hao無wu疑yi問wen就jiu是shi這zhe樣yang的de輸shu入ru。所suo謂wei激ji勵li函han數shu就jiu是shi把ba函han數shuf計算出的非常大的值域轉化為[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)果(guo)f(x)操作函數有多個局部最小點、全局最小點時,如果x移的非常小,則可能導致通過導數隻能找到某個並不足夠小的局部最小點。如下圖所示:

藍色的為局部最小點,紅色是全局最小點。所以x移動多少是個問題,xmeicideyidongbuchangguodahuozheguoxiaodoukenengdaozhizhaobudaoquanjuzuixiaodian。zhegebuchangchulegendaoshuxielvyouguanwai,womenhaixuyaoyouyigechaocanshulaikongzhitadeyidongsudu,zhegechaocanshuchengweixuexilv,youyutahennanyouhua,suoyiyibanxuyaoshoudongshezhierbunengzidongtiaozheng。kaolvdaoxunlianshijianyeshichengben,womentongchangzaichushixunlianjieduanbaxuexilvshededayixie,yuewanghouxuexilvshedeyuexiao。
那(na)麼(me)每(mei)次(ci)移(yi)動(dong)的(de)步(bu)長(chang)與(yu)導(dao)數(shu)的(de)值(zhi)有(you)關(guan)嗎(ma)?這(zhe)是(shi)自(zi)然(ran)的(de),導(dao)數(shu)的(de)正(zheng)負(fu)值(zhi)決(jue)定(ding)了(le)移(yi)動(dong)的(de)方(fang)向(xiang),而(er)導(dao)數(shu)的(de)絕(jue)對(dui)值(zhi)大(da)小(xiao)則(ze)決(jue)定(ding)了(le)斜(xie)率(lv)是(shi)否(fou)陡(dou)峭(qiao)。越(yue)陡(dou)峭(qiao)則(ze)移(yi)動(dong)的(de)步(bu)長(chang)應(ying)當(dang)越(yue)大(da)。所(suo)以(yi),步(bu)長(chang)由(you)學(xue)習(xi)率(lv)和(he)導(dao)數(shu)共(gong)同(tong)決(jue)定(ding)。就(jiu)像(xiang)下(xia)麵(mian)這(zhe)個(ge)函(han)數(shu),λ是學習率,而∂F(ωj) / ∂ωj是在ωj點的導數。
ωj = ωj – λ ∂F(ωj) / ∂ωj
根據導數判斷損失函數f在x0點上應當如何移動,才能使得fzuikuaidaodazuixiaozhidefangfa,womenchengweitiduxiajiang。tiduyejiushidaoshu,yanzhefutidudefangxiang,anzhaotiduzhikongzhiyidongbuchang,jiunengkuaisudaodazuixiaozhi。dangran,shijishangwomenweibinengzhaodaozuixiaodian,tebieshibenshencunzaiduogezuixiaodianshi,danruguozhegezhibenshenyezugouxiao,womenyeshikeyijieshoude,ruxiatusuoshi:

以yi上shang我wo們men是shi以yi一yi維wei數shu據ju來lai看kan梯ti度du下xia降jiang,但dan我wo們men的de照zhao片pian是shi多duo維wei數shu據ju,此ci時shi如ru何he求qiu導dao數shu?又you如ru何he梯ti度du下xia降jiang呢ne?此ci時shi我wo們men需xu要yao用yong到dao偏pian導dao數shu的de概gai念nian。其qi實shi它ta與yu導dao數shu很hen相xiang似si,因yin為weix是多維向量,那麼我們假定計算Xi的導數時,x上的其他數值不變,這就是Xi的偏導數。此時應用梯度下降法就如下圖所示,θ是二維的,我們分別求θ0和θ1的導數,就可以同時從θ0和θ1兩個方向移動相應的步長,尋找最低點,如下圖所示:

特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 邊緣AI的發展為更智能、更可持續的技術鋪平道路
- 每台智能體PC,都是AI時代的新入口
- IAR作為Qt Group獨立BU攜兩項重磅汽車電子應用開發方案首秀北京車展
- 構建具有網絡彈性的嵌入式係統:來自行業領袖的洞見
- 數字化的線性穩壓器
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
SATA連接器
SD連接器
SII
SIM卡連接器
SMT設備
SMU
SOC
SPANSION
SRAM
SSD
ST
ST-ERICSSON
Sunlord
SynQor
s端子線
Taiyo Yuden
TDK-EPC
TD-SCDMA功放
TD-SCDMA基帶
TE
Tektronix
Thunderbolt
TI
TOREX
TTI
TVS
UPS電源
USB3.0
USB 3.0主控芯片
USB傳輸速度




