<abbr id="kc8ii"><menu id="kc8ii"></menu></abbr>
  • <input id="kc8ii"><tbody id="kc8ii"></tbody></input><table id="kc8ii"><source id="kc8ii"></source></table><kbd id="kc8ii"></kbd>
    <center id="kc8ii"><table id="kc8ii"></table></center>
  • <input id="kc8ii"></input>
    <abbr id="kc8ii"></abbr>
  • <abbr id="kc8ii"></abbr>
  • <center id="kc8ii"><table id="kc8ii"></table></center>
    <abbr id="kc8ii"></abbr>
    你的位置:首頁 > 測試測量 > 正文

    深扒人臉識別技術的原理、算法(下)

    發布時間:2018-02-06 來源:Imagination Tech 責任編輯:lina

    【導讀】前文說過,根據有限的訓練集,去適應無限的測試集,當然訓練集容量越大效果就越好。但是,訓練集如果很大,那么每次都根據全部數據執行梯度下降計算量就太大了。此時,我們選擇每次只取全部訓練集中的一小部分(究竟多少,一般根據內存和計算量而定),執行梯度下降,不斷的迭代,根據經驗一樣可以快速地把梯度降下來。這就是隨機梯度下降。


    三、梯度的下降(下)
    前文的梯度下降法只能對f函數的w權重進行調整,而上文中我們說過實際是多層函數套在一起,例如f1(f2(x;w2);w1),那么怎么求對每一層函數輸入的導數呢?這也是所謂的反向傳播怎樣繼續反向傳遞下去呢?這就要提到鏈式法則。其實質為,本來y對x的求導,可以通過引入中間變量z來實現,如下圖所示:
     
     
    這樣,y對x的導數等價于y對z的導數乘以z對x的偏導。當輸入為多維時則有下面的公式:
     
     
    如此,我們可以得到每一層函數的導數,這樣可以得到每層函數的w權重應當調整的步長,優化權重參數。
     
    由于函數的導數很多,例如resnet等網絡已經達到100多層函數,所以為區別傳統的機器學習,我們稱其為深度學習。
     
    深度學習只是受到神經科學的啟發,所以稱為神經網絡,但實質上就是上面提到的多層函數前向運算得到分類值,訓練時根據實際標簽分類取損失函數最小化后,根據隨機梯度下降法來優化各層函數的權重參數。人臉識別也是這么一個流程。以上我們初步過完多層函數的參數調整,但函數本身應當如何設計呢?
     
    四、基于CNN卷積神經網絡進行人臉識別
    我們先從全連接網絡談起。Google的TensorFlow游樂場里可以直觀的體驗全連接神經網絡的威力,這是游樂場的網址:http://playground.tensorflow.org/,瀏覽器里就可以做神經網絡訓練,且過程與結果可視化。如下圖所示:
     
     
     
     
    這個神經網絡游樂場共有1000個訓練點和1000個測試點,用于對4種不同圖案劃分出藍色點與黃色點。DATA處可選擇4種不同圖案。
     
    整個網絡的輸入層是FEATURES(待解決問題的特征),例如x1和x2表示垂直或者水平切分來劃分藍色與黃色點,這是最容易理解的2種劃分點的方法。其余5種其實不太容易想到,這也是傳統的專家系統才需要的,實際上,這個游樂場就是為了演示,1、好的神經網絡只用最基本的x1,x2這樣的輸入層FEATURES就可以完美的實現;2、即使有很多種輸入特征,我們其實并不清楚誰的權重最高,但好的神經網絡會解決掉這個問題。
     
    隱層(HIDDEN LAYERS)可以隨意設置層數,每個隱層可以設置神經元數。實際上神經網絡并不是在計算力足夠的情況下,層數越多越好或者每層神經元越多越好。好的神經網絡架構模型是很難找到的。本文后面我們會重點講幾個CNN經典網絡模型。然而,在這個例子中,多一些隱層和神經元可以更好地劃分。
     
    epoch是訓練的輪數。紅色框出的loss值是衡量訓練結果的最重要指標,如果loss值一直是在下降,比如可以低到0.01這樣,就說明這個網絡訓練的結果好。loss也可能下降一會又突然上升,這就是不好的網絡,大家可以嘗試下。learning rate初始都會設得高些,訓練到后面都會調低些。Activation是激勵函數,目前CNN都在使用Relu函數。
     
    了解了神經網絡后,現在我們回到人臉識別中來。每一層神經元就是一個f函數,上面的四層網絡就是f1(f2(f3(f4(x))))。然而,就像上文所說,照片的像素太多了,全連接網絡中任意兩層之間每兩個神經元都需要有一次計算。特別之前提到的,復雜的分類依賴于許多層函數共同運算才能達到目的。當前的許多網絡都是多達100層以上,如果每層都有3*100*100個神經元,可想而知計算量有多大!于是CNN卷積神經網絡應運而生,它可以在大幅降低運算量的同時保留全連接網絡的威力。
     
    CNN認為可以只對整張圖片的一個矩形窗口做全連接運算(可稱為卷積核),滑動這個窗口以相同的權重參數w遍歷整張圖片后,可以得到下一層的輸入,如下圖所示:
     
     
    CNN中認為同一層中的權重參數可以共享,因為同一張圖片的各個不同區域具有一定的相似性。這樣原本的全連接計算量過大問題就解決了,如下圖所示:
     
     
    結合著之前的函數前向運算與矩陣,我們以一個動態圖片直觀的看一下前向運算過程:
     
     
     
     這里卷積核大小與移動的步長stride、輸出深度決定了下一層網絡的大小。同時,核大小與stride步長在導致上一層矩陣不夠大時,需要用padding來補0(如上圖灰色的0)。以上就叫做卷積運算,這樣的一層神經元稱為卷積層。上圖中W0和W1表示深度為2。
     
    CNN卷積網絡通常在每一層卷積層后加一個激勵層,激勵層就是一個函數,它把卷積層輸出的數值以非線性的方式轉換為另一個值,在保持大小關系的同時約束住值范圍,使得整個網絡能夠訓練下去。在人臉識別中,通常都使用Relu函數作為激勵層,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分類前的數據作為特征值效果很不好,例如下圖是直接將全連接層的輸出轉化為二維向量,在二維平面上通過顏色表示分類的可視化表示:
     
     
    可見效果并不好,中間的樣本距離太近了。通過centor loss方法處理后,可以把特征值間的距離擴大,如下圖所示:
     
     
    這樣取出的特征值效果就會好很多。
     
    實際訓練resnet v1網絡時,首先需要關注訓練集照片的質量,且要把不同尺寸的人臉照片resize到resnet1網絡首層接收的尺寸大小。另外除了上面提到的學習率和隨機梯度下降中每一批batchsize圖片的數量外,還需要正確的設置epochsize,因為每一輪epoch應當完整的遍歷完訓練集,而batchsize受限于硬件條件一般不變,但訓練集可能一直在變大,這樣應保持epochsize*batchsize接近全部訓練集。訓練過程中需要密切關注loss值是否在收斂,可適當調節學習率。
     
    最后說一句,目前人臉識別效果的評價唯一通行的標準是LFW(即Labeled Faces in the Wild),它包含大約6000個不同的人的12000張照片,許多算法都依據它來評價準確率。但它有兩個問題,一是數據集不夠大,二是數據集場景往往與真實應用場景并不匹配。所以如果某個算法稱其在LFW上的準確率達到多么的高,并不能反應其真實可用性。
     





    推薦閱讀:

    深扒人臉識別技術的原理、算法(上)
    詳細解析壓力傳感器分類及應用
    超聲波傳感器在自動駕駛環境感知下的應用
    如何解決嵌入式視覺系統實現智能化所面臨的挑戰?
    慣性傳感器在運動物聯網中的重要作用
    要采購傳感器么,點這里了解一下價格!
    特別推薦
    技術文章更多>>
    技術白皮書下載更多>>
    熱門搜索
    ?

    關閉

    ?

    關閉

    国产品无码一区二区三区在线蜜桃 | 内射人妻少妇无码一本一道| 亚洲国产精品无码久久| 久久久无码精品亚洲日韩软件| 人妻精品久久久久中文字幕一冢本| 精品人妻无码区在线视频| 国产成人无码av片在线观看不卡| 久久亚洲2019中文字幕| 超清无码无卡中文字幕| 在线中文字幕一区| 日韩精品人妻系列无码专区 | 一本加勒比HEZYO无码资源网| 国模无码一区二区三区不卡| 中文字幕av高清有码| 国产午夜无码片免费| 欧洲精品无码一区二区三区在线播放 | 无码人妻熟妇AV又粗又大| 中文字幕久精品免费视频| 无码人妻熟妇AV又粗又大| 中文字幕亚洲精品| 狠狠精品干练久久久无码中文字幕| 久久精品中文字幕第23页| 久久亚洲国产成人精品无码区| 日日摸夜夜添无码AVA片| 亚洲av无码成人精品区在线播放| 国产丝袜无码一区二区三区视频 | 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲精品无码久久久久去q| 天堂а√在线中文在线最新版| 无码人妻精品一区二区三区夜夜嗨| 亚洲一区无码中文字幕| gogo少妇无码肉肉视频| 亚洲欧洲精品无码AV| 精品久久久久久久中文字幕| 日韩精品无码永久免费网站 | 久久伊人中文无码| 中文字幕在线亚洲精品| 成?∨人片在线观看无码| 亚洲VA中文字幕无码毛片| 无码丰满熟妇juliaann与黑人 | 亚洲中文字幕无码中文字在线|