深扒人臉識別技術的原理、算法(下)
發布時間:2018-02-06 來源:Imagination Tech 責任編輯:lina
【導讀】qianwenshuoguo,genjuyouxiandexunlianji,qushiyingwuxiandeceshiji,dangranxunlianjirongliangyuedaxiaoguojiuyuehao。danshi,xunlianjiruguohenda,namemeicidougenjuquanbushujuzhixingtiduxiajiangjisuanliangjiutaidale。cishi,womenxuanzemeicizhiququanbuxunlianjizhongdeyixiaobufen(究竟多少,一般根據內存和計算量而定),執行梯度下降,不斷的迭代,根據經驗一樣可以快速地把梯度降下來。這就是隨機梯度下降。
三、梯度的下降(下)
前文的梯度下降法隻能對f函數的w權重進行調整,而上文中我們說過實際是多層函數套在一起,例如f1(f2(x;w2);w1),那麼怎麼求對每一層函數輸入的導數呢?這也是所謂的反向傳播怎樣繼續反向傳遞下去呢?這就要提到鏈式法則。其實質為,本來y對x的求導,可以通過引入中間變量z來實現,如下圖所示:
這樣,y對x的導數等價於y對z的導數乘以z對x的偏導。當輸入為多維時則有下麵的公式:
如此,我們可以得到每一層函數的導數,這樣可以得到每層函數的w權重應當調整的步長,優化權重參數。
由於函數的導數很多,例如resnet等網絡已經達到100多層函數,所以為區別傳統的機器學習,我們稱其為深度學習。
深(shen)度(du)學(xue)習(xi)隻(zhi)是(shi)受(shou)到(dao)神(shen)經(jing)科(ke)學(xue)的(de)啟(qi)發(fa),所(suo)以(yi)稱(cheng)為(wei)神(shen)經(jing)網(wang)絡(luo),但(dan)實(shi)質(zhi)上(shang)就(jiu)是(shi)上(shang)麵(mian)提(ti)到(dao)的(de)多(duo)層(ceng)函(han)數(shu)前(qian)向(xiang)運(yun)算(suan)得(de)到(dao)分(fen)類(lei)值(zhi),訓(xun)練(lian)時(shi)根(gen)據(ju)實(shi)際(ji)標(biao)簽(qian)分(fen)類(lei)取(qu)損(sun)失(shi)函(han)數(shu)最(zui)小(xiao)化(hua)後(hou),根(gen)據(ju)隨(sui)機(ji)梯(ti)度(du)下(xia)降(jiang)法(fa)來(lai)優(you)化(hua)各(ge)層(ceng)函(han)數(shu)的(de)權(quan)重(zhong)參(can)數(shu)。人(ren)臉(lian)識(shi)別(bie)也(ye)是(shi)這(zhe)麼(me)一(yi)個(ge)流(liu)程(cheng)。以(yi)上(shang)我(wo)們(men)初(chu)步(bu)過(guo)完(wan)多(duo)層(ceng)函(han)數(shu)的(de)參(can)數(shu)調(tiao)整(zheng),但(dan)函(han)數(shu)本(ben)身(shen)應(ying)當(dang)如(ru)何(he)設(she)計(ji)呢(ne)?
四、基於CNN卷積神經網絡進行人臉識別
我們先從全連接網絡談起。Google的TensorFlow遊樂場裏可以直觀的體驗全連接神經網絡的威力,這是遊樂場的網址:http://playground.tensorflow.org/,瀏覽器裏就可以做神經網絡訓練,且過程與結果可視化。如下圖所示:

這個神經網絡遊樂場共有1000個訓練點和1000個測試點,用於對4種不同圖案劃分出藍色點與黃色點。DATA處可選擇4種不同圖案。
整個網絡的輸入層是FEATURES(待解決問題的特征),例如x1和x2表示垂直或者水平切分來劃分藍色與黃色點,這是最容易理解的2種劃分點的方法。其餘5種其實不太容易想到,這也是傳統的專家係統才需要的,實際上,這個遊樂場就是為了演示,1、好的神經網絡隻用最基本的x1,x2這樣的輸入層FEATURES就可以完美的實現;2、即使有很多種輸入特征,我們其實並不清楚誰的權重最高,但好的神經網絡會解決掉這個問題。
隱層(HIDDEN LAYERS)可ke以yi隨sui意yi設she置zhi層ceng數shu,每mei個ge隱yin層ceng可ke以yi設she置zhi神shen經jing元yuan數shu。實shi際ji上shang神shen經jing網wang絡luo並bing不bu是shi在zai計ji算suan力li足zu夠gou的de情qing況kuang下xia,層ceng數shu越yue多duo越yue好hao或huo者zhe每mei層ceng神shen經jing元yuan越yue多duo越yue好hao。好hao的de神shen經jing網wang絡luo架jia構gou模mo型xing是shi很hen難nan找zhao到dao的de。本ben文wen後hou麵mian我wo們men會hui重zhong點dian講jiang幾ji個geCNN經典網絡模型。然而,在這個例子中,多一些隱層和神經元可以更好地劃分。
epoch是訓練的輪數。紅色框出的loss值是衡量訓練結果的最重要指標,如果loss值一直是在下降,比如可以低到0.01這樣,就說明這個網絡訓練的結果好。loss也可能下降一會又突然上升,這就是不好的網絡,大家可以嚐試下。learning rate初始都會設得高些,訓練到後麵都會調低些。Activation是激勵函數,目前CNN都在使用Relu函數。
了解了神經網絡後,現在我們回到人臉識別中來。每一層神經元就是一個f函數,上麵的四層網絡就是f1(f2(f3(f4(x))))。然ran而er,就jiu像xiang上shang文wen所suo說shuo,照zhao片pian的de像xiang素su太tai多duo了le,全quan連lian接jie網wang絡luo中zhong任ren意yi兩liang層ceng之zhi間jian每mei兩liang個ge神shen經jing元yuan都dou需xu要yao有you一yi次ci計ji算suan。特te別bie之zhi前qian提ti到dao的de,複fu雜za的de分fen類lei依yi賴lai於yu許xu多duo層ceng函han數shu共gong同tong運yun算suan才cai能neng達da到dao目mu的de。當dang前qian的de許xu多duo網wang絡luo都dou是shi多duo達da100層以上,如果每層都有3*100*100個神經元,可想而知計算量有多大!於是CNN卷積神經網絡應運而生,它可以在大幅降低運算量的同時保留全連接網絡的威力。
CNN認為可以隻對整張圖片的一個矩形窗口做全連接運算(可稱為卷積核),滑動這個窗口以相同的權重參數w遍曆整張圖片後,可以得到下一層的輸入,如下圖所示:

CNN中zhong認ren為wei同tong一yi層ceng中zhong的de權quan重zhong參can數shu可ke以yi共gong享xiang,因yin為wei同tong一yi張zhang圖tu片pian的de各ge個ge不bu同tong區qu域yu具ju有you一yi定ding的de相xiang似si性xing。這zhe樣yang原yuan本ben的de全quan連lian接jie計ji算suan量liang過guo大da問wen題ti就jiu解jie決jue了le,如ru下xia圖tu所suo示shi:

結合著之前的函數前向運算與矩陣,我們以一個動態圖片直觀的看一下前向運算過程:

這裏卷積核大小與移動的步長stride、輸出深度決定了下一層網絡的大小。同時,核大小與stride步長在導致上一層矩陣不夠大時,需要用padding來補0(如上圖灰色的0)。以上就叫做卷積運算,這樣的一層神經元稱為卷積層。上圖中W0和W1表示深度為2。
CNN卷juan積ji網wang絡luo通tong常chang在zai每mei一yi層ceng卷juan積ji層ceng後hou加jia一yi個ge激ji勵li層ceng,激ji勵li層ceng就jiu是shi一yi個ge函han數shu,它ta把ba卷juan積ji層ceng輸shu出chu的de數shu值zhi以yi非fei線xian性xing的de方fang式shi轉zhuan換huan為wei另ling一yi個ge值zhi,在zai保bao持chi大da小xiao關guan係xi的de同tong時shi約yue束shu住zhu值zhi範fan圍wei,使shi得de整zheng個ge網wang絡luo能neng夠gou訓xun練lian下xia去qu。在zai人ren臉lian識shi別bie中zhong,通tong常chang都dou使shi用yongRelu函數作為激勵層,Relu函數就是max(0,x),如下所示:

可見 Relu的計算量其實非常小!
CNN中還有一個池化層,當某一層輸出的數據量過大時,通過池化層可以對數據降維,在保持住特征的情況下減少數據量,例如下麵的4*4矩陣通過取最大值降維到2*2矩陣:

上圖中通過對每個顏色塊篩選出最大數字進行池化,以減小計算數據量。
通常網絡的最後一層為全連接層,這樣一般的CNN網絡結構如下所示:

CONV就是卷積層,每個CONV後會攜帶RELU層。這隻是一個示意圖,實際的網絡要複雜許多。目前開源的Google FaceNet是采用resnet v1網絡進行人臉識別的,關於resnet網絡請參考論文https://arxiv.org/abs/1602.07261,其完整的網絡較為複雜,這裏不再列出,也可以查看基於TensorFlow實現的Python代碼https://github.com/davidsandberg/facenet/blob/master/src/models/inception_resnet_v1.py,注意slim.conv2d含有Relu激勵層。
以上隻是通用的CNN網絡,由於人臉識別應用中不是直接分類,而是有一個注冊階段,需要把照片的特征值取出來。如果直接拿softmax分(fen)類(lei)前(qian)的(de)數(shu)據(ju)作(zuo)為(wei)特(te)征(zheng)值(zhi)效(xiao)果(guo)很(hen)不(bu)好(hao),例(li)如(ru)下(xia)圖(tu)是(shi)直(zhi)接(jie)將(jiang)全(quan)連(lian)接(jie)層(ceng)的(de)輸(shu)出(chu)轉(zhuan)化(hua)為(wei)二(er)維(wei)向(xiang)量(liang),在(zai)二(er)維(wei)平(ping)麵(mian)上(shang)通(tong)過(guo)顏(yan)色(se)表(biao)示(shi)分(fen)類(lei)的(de)可(ke)視(shi)化(hua)表(biao)示(shi):

可見效果並不好,中間的樣本距離太近了。通過centor loss方法處理後,可以把特征值間的距離擴大,如下圖所示:

這樣取出的特征值效果就會好很多。
實際訓練resnet v1網絡時,首先需要關注訓練集照片的質量,且要把不同尺寸的人臉照片resize到resnet1網絡首層接收的尺寸大小。另外除了上麵提到的學習率和隨機梯度下降中每一批batchsize圖片的數量外,還需要正確的設置epochsize,因為每一輪epoch應當完整的遍曆完訓練集,而batchsize受限於硬件條件一般不變,但訓練集可能一直在變大,這樣應保持epochsize*batchsize接近全部訓練集。訓練過程中需要密切關注loss值是否在收斂,可適當調節學習率。
最後說一句,目前人臉識別效果的評價唯一通行的標準是LFW(即Labeled Faces in the Wild),它包含大約6000個不同的人的12000張zhang照zhao片pian,許xu多duo算suan法fa都dou依yi據ju它ta來lai評ping價jia準zhun確que率lv。但dan它ta有you兩liang個ge問wen題ti,一yi是shi數shu據ju集ji不bu夠gou大da,二er是shi數shu據ju集ji場chang景jing往wang往wang與yu真zhen實shi應ying用yong場chang景jing並bing不bu匹pi配pei。所suo以yi如ru果guo某mou個ge算suan法fa稱cheng其qi在zaiLFW上的準確率達到多麼的高,並不能反應其真實可用性。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 三星上演罕見對峙:工會集會討薪,股東隔街抗議
- 摩爾線程實現DeepSeek-V4“Day-0”支持,國產GPU適配再提速
- 築牢安全防線:智能駕駛邁向規模化應用的關鍵挑戰與破局之道
- GPT-Image 2:99%文字準確率,AI生圖告別“鬼畫符”
- 機器人馬拉鬆的勝負手:藏在主板角落裏的“時鍾戰爭”
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
NFC
NFC芯片
NOR
ntc熱敏電阻
OGS
OLED
OLED麵板
OmniVision
Omron
OnSemi
PI
PLC
Premier Farnell
Recom
RF
RF/微波IC
RFID
rfid
RF連接器
RF模塊
RS
Rubycon
SATA連接器
SD連接器
SII
SIM卡連接器
SMT設備
SMU
SOC
SPANSION

