1. 程式人生 > >YOLO 人臉識別演算法以及應用 (1)

YOLO 人臉識別演算法以及應用 (1)

最前沿的網路技術,為你的網站帶來國際化的使用者體驗和易用性,這一切只有Witmart.com能做到。
第四周 特殊應用:人臉識別和神經風格轉換(Special applications: Face recognition &Neural style transfer)

4.1 什麼是人臉識別?(What is face recognition?)

4.2 One-Shot學習(One-shot learning)

4.3 Siamese 網路(Siamese network)

4.4 Triplet 損失(Triplet 損失)

4.5 面部驗證與二分類(Face verication and binary classication)

4.6 什麼是神經風格轉換?(What is neural style transfer?)

4.7 什麼是深度卷積網路?(What are deep ConvNets learning?)

4.8 代價函式(Cost function)

4.9 內容代價函式(Content cost function)

4.10 風格代價函式(Style cost function)

4.11 一維到三維推廣(1D and 3D generalizations of models)

4.1 什麼是人臉識別?(What is face recognition?)

歡迎來到第四周,即這門課卷積神經網路課程的最後一週。到目前為止,你學了很多卷積神經網路的知識。我這周準備向你展示一些重要的卷積神經網路的特殊應用,我們將從人臉識別開始,之後講神經風格遷移,你將有機會在程式設計作業中實現這部分內容,創造自己的藝術作品。

讓我們先從人臉識別開始,我這裡有一個有意思的演示。我在領導百度AI團隊的時候,其中一個小組由林元慶帶領的,做過一個人臉識別系統,這個系統非常棒,讓我們來看一下。

(以下內容為演示視訊內容)

http://www.ai-start.com/dl2017/images/d57c488693021009431b107d968c06f7.png

視訊開始:

我想演示一個人臉識別系統,我現在在百度的中國總部,很多公司要求進入公司的時候要刷工卡,但是在這裡我們並不需要它,使用人臉識別,看看我能做什麼。當我走近的時候,它會識別我的臉,然後說歡迎我(**Andrew
NG**),不需要工卡,我就能通過了。

讓我們看看另一種情況,在旁邊的是林元慶,IDL(百度深度學習實驗室)的主管,他領導開發了這個人臉識別系統,我把我的工卡給他,上面有我的頭像,他會試著用我的頭像照片,而不是真人來通過。

(林元慶語:我將嘗試用Andrew的工卡騙過機器,看看發生什麼,系統不會識別,系統拒絕識別。現在我要用我自己的臉,(系統語音:“歡迎您”)(林元慶順利通過))

類似於這樣的人臉識別系統在中國發展很快,我希望這個技術也可以在其他的國家使用。

#視訊結束

挺厲害的吧,你剛看到的這個視訊展示了人臉識別和活體檢測,後一項技術確認你是一個活人。事實上,活體檢測可以使用監督學習來實現,去預測是不是一個真人,這個方面我就不多說了。我主要想講的是,如何構造這個系統中的人臉識別這一部分。

首先,讓我們瞭解一下人臉識別的一些術語。

在人臉識別的相關文獻中,人們經常提到人臉驗證(**face
verification**)和人臉識別(face recognition)。

http://www.ai-start.com/dl2017/images/15eaee3ee185a2c7e0e55dc940b512c5.png

這是人臉驗證問題,如果你有一張輸入圖片,以及某人的ID或者是名字,這個系統要做的是,驗證輸入圖片是否是這個人。有時候也被稱作1對1問題,只需要弄明白這個人是否和他聲稱的身份相符。

而人臉識別問題比人臉驗證問題難很多(整理者注:1對多問題[1:k]
)),為什麼呢?假設你有一個驗證系統,準確率是99%,還可以。但是現在,假設在識別系統中,[k=100]
,如果你把這個驗證系統應用在100個人身上,人臉識別上,你犯錯的機會就是100倍了。如果每個人犯錯的概率是1%,如果你有一個上百人的資料庫,如果你想得到一個可接受的識別誤差,你要構造一個驗證系統,其準確率為99.9%或者更高,然後才可以在100人的資料庫上執行,而保證有很大機率不出錯。事實上,如果我們有一個100人的資料庫,正確率可能需要遠大於99%,才能得到很好的效果。

在之後的幾個視訊中,我們主要講構造一個人臉驗證,作為基本模組,如果準確率夠高,你就可以把它用在識別系統上。

下一個視訊中,我們將開始討論如何構造人臉驗證系統,人臉驗證之所以難,原因之一在於要解決“一次學”(**one-shot
learning problem**)問題。讓我們看下一個視訊,什麼是一次學習問題。

4.2 One-Shot學習(One-shot learning)

人臉識別所面臨的一個挑戰就是你需要解決一次學習問題,這意味著在大多數人臉識別應用中,你需要通過單單一張圖片或者單單一個人臉樣例就能去識別這個人。而歷史上,當深度學習只有一個訓練樣例時,它的表現並不好,讓我們看一個直觀的例子,並討論如何去解決這個問題。

http://www.ai-start.com/dl2017/images/caacd6c34068c73d285698ae5da34c33.png

假設你的資料庫裡有4張你們公司的員工照片,實際上他們確實是我們deeplearning.ai的員工,分別是KianDanielleYounesTian。現在假設有個人(編號1所示)來到辦公室,並且她想通過帶有人臉識別系統的柵門,現在系統需要做的就是,僅僅通過一張已有的Danielle照片,來識別前面這個人確實是她。相反,如果機器看到一個不在資料庫裡的人(編號2所示),機器應該能分辨出她不是資料庫中四個人之一。

所以在一次學習問題中,只能通過一個樣本進行學習,以能夠認出同一個人。大多數人臉識別系統都需要解決這個問題,因為在你的資料庫中每個僱員或者組員可能都只有一張照片。

有一種辦法是,將人的照片放進卷積神經網路中,使用softmax單元來輸出4種,或者說5種標籤,分別對應這4個人,或者4個都不是,所以softmax裡我們會有5種輸出。但實際上這樣效果並不好,因為如此小的訓練集不足以去訓練一個穩健的神經網路。

而且,假如有新人加入你的團隊,你現在將會有5個組員需要識別,所以輸出就變成了6種,這時你要重新訓練你的神經網路嗎?這聽起來實在不像一個好辦法。

所以要讓人臉識別能夠做到一次學習,為了能有更好的效果,你現在要做的應該是學習Similarity函式。詳細地說,你想要神經網路學習這樣一個用[d]{.MathJax_Preview}
表示地函式,[d(img1,img2)=degree of difference between images]
,它以兩張圖片作為輸入,然後輸出這兩張圖片的差異值。如果你放進同一個人的兩張照片,你希望它能輸出一個很小的值,如果放進兩個長相差別很大的人的照片,它就輸出一個很大的值。所以在識別過程中,如果這兩張圖片的差異值小於某個閾值[τ]
,它是一個超引數,那麼這時就能預測這兩張圖片是同一個人,如果差異值大於τ,就能預測這是不同的兩個人,這就是解決人臉驗證問題的一個可行辦法。

要將它應用於識別任務,你要做的是拿這張新圖片(編號6),然後用[d]
函式去比較這兩張圖片(編號1和編號6),這樣可能會輸出一個非常大的數字,在該例中,比如說這個數字是10。之後你再讓它和資料庫中第二張圖(編號2)片比較,因為這兩張照片是同一個人,所以我們希望會輸出一個很小的數。然後你再用它與資料庫中的其他圖片(編號3、4)進行比較,通過這樣的計算,最終你能夠知道,這個人確實是Danielle
對應的,如果某個人(編號7)不在你的資料庫中,你通過函式[d]
將他們的照片兩兩進行比較,最後我們希望[d]
會對所有的比較都輸出一個很大的值,這就證明這個人並不是資料庫中4個人的其中一個。
要注意在這過程中你是如何解決一次學習問題的,只要你能學習這個函式[d]
,通過輸入一對圖片,它將會告訴你這兩張圖片是否是同一個人。如果之後有新人加入了你的團隊(編號5),你只需將他的照片加入你的資料庫,系統依然能照常工作。
現在你已經知道函式d是如何工作的,通過輸入兩張照片,它將讓你能夠解決一次學習問題。那麼,下節視訊中,我們將會學習如何訓練你的神經網路學會這個函式[d]

4.3 Siamese 網路(Siamese network)

上個視訊中你學到的函式d的作用就是輸入兩張人臉,然後告訴你它們的相似度。實現這個功能的一個方式就是用Siamese網路,我們看一下。

http://www.ai-start.com/dl2017/images/18679869eb23651215b517b0f00806f5.png

你經常看到這樣的卷積網路,輸入圖片[x(1)]
,然後通過一些列卷積,池化和全連線層,最終得到這樣的特徵向量(編號1)。有時這個會被送進softmax單元來做分類,但在這個視訊裡我們不會這麼做。我們關注的重點是這個向量(編號1),加如它有128個數,它是由網路深層的全連線層計算出來的,我要給這128個數命個名字,把它叫做[f(x(1))]
。你可以把[f(x(1))]
看作是輸入影象[x(1)]
的編碼,取這個輸入影象(編號2),在這裡是Kian的圖片,然後表示成128維的向量。

建立一個人臉識別系統的方法就是,如果你要比較兩個圖片的話,例如這裡的第一張(編號1)和第二張圖片(編號2),你要做的就是把第二張圖片餵給有同樣引數的同樣的神經網路,然後得到一個不同的128維的向量(編號3),這個向量代表或者編碼第二個圖片,我要把第二張圖片的編碼叫做[f(x(1))]
。這裡我用[x(1)]
和[x(2)]
僅僅代表兩個輸入圖片,他們沒必要非是第一個和第二個訓練樣本,可以是任意兩個圖片。

最後如果你相信這些編碼很好地代表了這兩個圖片,你要做的就是定義d,將[x(1)]
和[x(2)]
的距離定義為這兩幅圖片的編碼之差的範數,[d(x(1)),x(2)=||f(x(1))f(x(2))||2(2)]

對x^{(1)}於兩個不同的輸入,執行相同的卷積神經網路,然後比較它們,這一般叫做Siamese網路架構。這裡提到的很多觀點,都來自於**Yaniv
Taigman**,Ming YangMarc’ Aurelio Ranzato,**Lior
Wolf**的這篇論文,他們開發的系統叫做DeepFace

怎麼訓練這個Siamese神經網路呢?不要忘了這兩個網路有相同的引數,所以你實際要做的就是訓練一個網路,它計算得到的編碼可以用於函式d,它可以告訴你兩張圖片是否是同一個人。更準確地說,神經網路的引數定義了一個編碼函式[f(x(i))],如果給定輸入影象[x(i)],這個網路會輸出[x(i)]的128維的編碼。你要做的就是學習引數,使得如果兩個圖片[x(i)]和[x(j)]是同一個人,那麼你得到的兩個編碼的距離就小。前面幾個幻燈片我都用的是[

相關推薦

YOLO 人臉識別演算法以及應用 (1)

最前沿的網路技術,為你的網站帶來國際化的使用者體驗和易用性,這一切只有Witmart.com能做到。 第四周 特殊應用:人臉識別和神經風格轉換(Special applications: Face recognition &Neural style t

主成分分析(PCA)演算法以及PCA在人臉識別上的應用及程式碼

        PCA(Principal Component Analysis)是一種常用的資料分析方法,PCA通過線性變換將原始資料變換為一組各維度線性無關的表示,可用於提取資料的主要特徵分量,可用於高維資料的降維。        一般情況下,在資料探勘和機器學習中,資

【程式設計師眼中的統計學(6.1)】原創實現幾何分佈演算法以及應用

作者 白寧超 2015年8月14日16:07:23 摘要:本文繼統計學幾何分佈、二項分佈、泊松分佈研究的深入,基於各種分佈基礎概念和核心知識介紹之後。就各種分佈的實現和真實環境下應用方是目的。本文就演算法文件規範和程式碼註釋進行梳理,利用其基本核心演算法,實現我們要達到的目的。大家通用的一些統計

openCV學習筆記(十二) —— 人臉識別演算法1/3)—— 特徵臉 EigenFaces

一、原理 opencv支援3種人臉識別的演算法,分別是: 1.    Eigen Faces    PCA(特徵臉方法) 2.    Fisher Faces    LDA(線性判別分析) 3.    Local Binary Pattern Histograms(LB

人臉識別演算法概要

softmax lfw:97.88% caffe-face base model:resnet-20,loss:centerloss data:webFace 0.49M lfw:99.28% MegaFace:65.234% [email protected]:76.51

護照閱讀器配合人臉識別技術的應用真正給咱老百姓帶來實惠

隨著深度學習方法的應用,手機端人臉識別技術的識別率已經得到質的提升,目前我司的手機端人臉識別率已經達到99%。手機端人臉識別技術與其他生物特徵識別技術相吃比,在實際應用中具有天然獨到的優勢:通過攝像頭直接獲取,可以非接觸的方式完成識別過程,方便快捷。 目前我司的手機端人臉識別技術已應用在金融

轉:人臉識別技術大總結1——Face Detection & Alignment

人臉識別技術大總結1——Face Detection & Alignment 搞了一年人臉識別,尋思著記錄點什麼,於是想寫這麼個系列,介紹人臉識別的四大塊:Face detection, alignment, verification and identi

揭祕車牌識別演算法應用

影象處理早已被廣泛應用於機器視覺、深度學習等熱門領域,奈何由於某些侷限性,導致我們對於影象處理的相關演算法知道得少之又少。  本演算法測試所使用的影象都是採用數碼相機採集的有高清晰分辯率,只有些許傾斜的靜態彩色RGB車輛影象,而且所採集的車輛影象背景不會特別複雜,一般影象中不會同時出現

深度學習在人臉識別中的應用 —— 優圖祖母模型的「進化」

原作者: 騰訊優圖 | 來自: 機器之心 序言——「弱弱」的人工智慧 說到人工智慧(Artificial Intelligence, AI)人們總是很容易和全知、全能這樣的詞聯絡起來。大量關於人工智慧的科幻電影更給人工智慧蒙上一層神祕的色彩。強如《黑客帝國》、《機械公敵》中的AI要翻

人臉識別技術大總結1——Face Detection & Alignment

原文地址為:人臉識別技術大總結1——Face Detection & Alignment搞了一年人臉識別,尋思著記錄點什麼,於是想寫這麼個系列,介紹人臉識別的四大塊:Face detection, alignment, verification and identif

opencv學習筆記六十五:人臉識別演算法之EigenFace

簡要: 特徵臉演算法是將影象每一個畫素當作一維特徵,然後用SVM或其它機器學習演算法進行訓練。但這樣維數太多,根本無法計算。我這裡用的是ORL人臉資料庫,英國劍橋實驗室拍攝的,有40位志願者的人臉,在不同表情不同光照下每位志願者拍攝10張,共有400張圖片,大小為112*9

人工智慧--人臉識別 Sleuth的應用

提到這個Sleuth的使用,在專案裡面配置是很簡單的,很多時候在控制檯也可以得到需要的結果,比如說鏈路跟蹤不管是消費還是生產端都會有一樣的sleuthId(學名TracId)作為整個鏈路的標誌,而鏈路裡面的每個單元也有相應的id(spanId)這時候就是通過這樣的id來區分是哪個鏈路下的那個

人臉識別演算法演化史

導言: 本文為人臉識別算法系列專題的綜述文章,人臉識別是一個被廣泛研究著的熱門問題,大量的研究論文層出不窮,文中我們將為大家總結近些年出現的具有代表性的人臉識別演算法。請大家關注SIGAI公眾號,我們會持續解析當下主流的人臉識別演算法以及業內最新的進展。 人臉識別有什

DeepMind&VGG提出基於集合的人臉識別演算法GhostVLAD,精度遠超IJB-B資料集state-of-the-art

人臉識別應用中,很多場景能夠獲取某一個體的多幅人臉影象的集合(比如在監控視訊中),使用人臉影象集來做識別,這個問題被稱為基於模板的人臉識別(template-based face recognition)。 對於多幅影象,當然可以使用單幅人臉影象的識別方法,綜合多幅影象

幾種經典搜尋演算法以及應用

目錄 二、 窮舉 分支定界: A* 一、 評估你的複雜度 簡單的判斷演算法是否能滿足執行時間限制的要求 密切關注題中的給出的資料規模,選擇相應的演算法 一起試一下這個題目吧! 樣例: 輸入: 3

Eigenface與PCA人臉識別演算法實驗

簡單的特徵臉識別實驗 實現特徵臉的過程其實就是主成分分析(Principal Component Analysis,PCA)的一個過程。關於PCA的原理問題,它是一種數學降維的方法。是為了簡化問題。在二維的座標空間內,找到一個單位向量U,使得所有資料在U上的投影之和最大。這樣就能把資料分的儘可能的開。然

DeepID人臉識別演算法之三代

DeepID人臉識別演算法之三代 轉載請註明:http://blog.csdn.net/stdcoutzyx/article/details/42091205 DeepID,目前最強人臉識別演算法,已經三代。 如今,深度學習方興未艾,大資料風起雲湧,各個領域都在處於使用深度學習進行強突破

人臉識別演算法調研

1.神經網路: 來源:人的大腦 發展至今,一共有三波浪潮: 1957年~1969年 Perceptrons:無法解決異或問題 1985年~1990年 Neural Networks(BP):被svm幹掉 2006年~今天 Deep Neural Net

微信小程式--人臉識別入庫以及匹配人臉

首先,建立Camera目錄和pagecamera.xml的程式碼如下<camera device-position="{{show}}" flash="off" binderror="error" style="width: 100%; height: 400px;"&

深度學習在人臉識別中的應用 ——優圖祖母模型的“進化”

序言——“弱弱”的人工智慧 說到人工智慧(Artificial Intelligence, AI)人們總是很容易和全知、全能這樣的詞聯絡起來。大量關於AI的科幻電影更給人工智慧蒙上一層神祕的色彩。強如《黑客帝國》、《機械公敵》中的AI要翻身做主人統治全人類。稍弱點的《機械姬