<listing id="lnlbz"></listing>

      <address id="lnlbz"></address>
      <form id="lnlbz"><th id="lnlbz"><listing id="lnlbz"></listing></th></form>

          <form id="lnlbz"></form>

          <progress id="lnlbz"><nobr id="lnlbz"></nobr></progress>

          <address id="lnlbz"><sub id="lnlbz"><menuitem id="lnlbz"></menuitem></sub></address><listing id="lnlbz"><font id="lnlbz"><cite id="lnlbz"></cite></font></listing><thead id="lnlbz"></thead><rp id="lnlbz"></rp>

          1. 移動端
            訪問手機端
            官微
            訪問官微

            搜索
            取消
            溫馨提示:
            敬愛的用戶,您的瀏覽器版本過低,會導致頁面瀏覽異常,建議您升級瀏覽器版本或更換其他瀏覽器打開。

            iPhone X的新解鎖技術:用Python編寫Face ID!

            來源:csdn 2018-03-30 09:18:47 Face ID 金融安全
                 來源:csdn     2018-03-30 09:18:47

            核心提示FaceID是由孿生卷積神經網絡實現的(siamese-like convolutional neural network),該網絡由蘋果公司進行“線下”培訓,將臉部映射到一個低維潛在空間(latent space),并通過對比損失函數(contrastive loss)最大化不同人臉之間的距離。

              最近大家談論最多的關于新款iPhone X的功能之一就是新的解鎖技術,即TouchID的后續技術:FaceID。

              創建了無邊框手機后,蘋果不得不找出新方法簡單快捷地解鎖手機。雖然一些競爭對手繼續使用放在不同位置的指紋傳感器,但蘋果決定對解鎖手機的方式進行創新和變革:只需看一眼,FaceID就能安全地解鎖iPhone X。借助一款先進(而且非常小巧)的前置深度相機,iPhone X可以建立用戶臉部的3D模型。此外,iPhone X通過紅外攝像頭識別人臉,可以避免環境光和顏色對人臉識別的影響。通過深度學習,手機可以捕捉到用戶臉部的很多細節,因此在用戶拿著手機的時候,手機可以識別出它的主人。比較令人驚訝的是,蘋果表示這種方法比TouchID更安全,出錯率為百萬分之一。

              我對蘋果的FaceID的實現技術非常感興趣,特別是它完全運行在設備上,而且只需利用用戶的面部進行一點點訓練,就可以在每次拿起手機的時候順利地進行識別。我研究了如何使用深度學習來實現此過程,以及如何優化每個步驟。在這篇文章中,我將展示如何使用Keras實現一個類似FaceID的算法。我會介紹采用的各種架構,并展示一些在Kinect(一種非常流行的RGB-D相機,擁有與iPhone X前置攝像頭非常相似的輸出,但設備本身更大)上的最終實驗。倒杯咖啡,讓我們開始逆向工程蘋果的新技術。

              對FaceID的初步了解

              “……賦予FaceID力量的神經網絡不是簡單的分類?!?/p>

            iPhone X的新解鎖技術:用Python編寫Face ID!

            FaceID注冊的過程

              第一步我們來仔細分析FaceID在iPhone X上的工作原理。我們可以通過蘋果的白皮書理解FaceID的基本機制。使用TouchID的時候,用戶必須多次按傳感器來注冊自己的指紋。大約需要15-20次不同的觸摸,iPhone才能完成注冊,并準備好TouchID。同樣地,FaceID也需要用戶進行臉部注冊。過程非常簡單:用戶只需像往常一樣看著手機,然后慢慢地轉動頭部一圈,從不同的角度注冊臉部。如此,注冊過程就完成了,手機已經準備好解鎖了。這個超快的注冊過程可以告訴我們很多關于底層學習算法的信息。比如,FaceID背后的神經網絡并不是簡單的分類。我會在后面進行詳細的解釋。

            iPhone X的新解鎖技術:用Python編寫Face ID!

            Apple Keynote推出iPhone X和FaceID

              對于神經網絡來說,分類的意思是學習如何預測看到的臉是不是用戶的臉。所以,它需要一些訓練數據來預測“是”或“否”,但與很多其他深度學習的應用場景不同,所以這種方式在這里并不適用。首先,神經網絡需要使用從用戶臉上捕捉到的數據重新進行訓練。而這需要消耗大量的時間和電量,還需要大量的不同面孔作為訓練數據以獲得負面的樣本,這也是不現實的。即使是試圖遷移并微調已經訓練好的神經網絡,這些條件也幾乎不會變化。而且,蘋果也不可能在實驗室等地方“線下”訓練復雜的神經網絡,然后再將訓練好的神經網絡搭載在手機中。相反,我認為FaceID是由孿生卷積神經網絡實現的(siamese-like convolutional neural network),該網絡由蘋果公司進行“線下”培訓,將臉部映射到一個低維潛在空間(latent space),并通過對比損失函數(contrastive loss)最大化不同人臉之間的距離。通過本文,你可以了解Keynote中提到的體系結構。我知道,很多讀者對上述名詞很陌生,但是沒關系,我會逐步的進行詳細的解釋。

            iPhone X的新解鎖技術:用Python編寫Face ID!

            FaceID看起來會是TouchID之后的新標準。蘋果是否會把它帶到所有的新設備上?

              從人臉到神經網絡的數字

              孿生神經網絡基本上由兩個完全相同的神經網絡組成,它們所有的權重也都相同。這種結構可以計算特定類型的數據(如圖像)之間的距離?;舅悸肥?,將兩組數據傳遞給孿生網絡(或簡單地將兩組數據分兩次傳遞給同一個神經網絡),而這個網絡會將數據映射到一個低維特征空間(就像一個n維數組),然后訓練神經網絡將不同類別下的數據點映射到盡可能遠的地方,同時保證同一類的數據點又盡可能接近。從長遠來看,這個網絡將學習如何從數據中提取最有意義的特征,并將其壓縮成一個數組,從而創建一個有意義的映射。為了對此有一個直觀的理解,想象一下你如何使用小型矢量來描述狗狗的品種,并保證類似的狗狗具有最接近的矢量值。你可能會用一個數字來表示狗狗的毛色,另一個用來表示狗狗的大小,還有一個用于記錄毛的長度,等等。通過這種方法,彼此相似的狗狗就可以擁有相似的矢量值。這個方法是不是很聰明?那么,孿生神經網絡也可以做到這一點,類似于一個自動編碼器。

            iPhone X的新解鎖技術:用Python編寫Face ID!

            Hadsell,Chopra和LeCun發表的論文“Dimensionality Reduction by Learning an Invariant Mapping”。請注意此架構是如何學習數字之間的相似性,并自動將它們分組在二維中。類似的技術也可以應用于面部識別。

              通過這種技術,只需使用大量面部數據來訓練一個這種網絡,就可以識別哪些面部最相似。如果擁有足夠的預算和計算能力(就像蘋果一樣),我們甚至可以使用越來越難的例子(比如雙胞胎)來強化這個神經網絡,以便應對面具等惡意攻擊。那么使用這種方法有什么優勢呢?那就是我們終于有了現成的模型,只需要簡單計算出用戶的面部數據在潛在映射(latent map)中的位置,就可以識別出不同的用戶,而無需額外訓練。(就像前面說過的,我們記錄下新的狗狗品種的矢量值,然后保存起來。)此外,FaceID還可以適應臉部的變化,包括突發性變化(比如眼鏡、帽子、化妝等)以及緩慢變化(毛發等)。這基本上是通過向映射中增加參考矢量,并根據新外觀進行計算而實現的。

            iPhone X的新解鎖技術:用Python編寫Face ID!

            FaceID可以適應外觀的變化

              接下來,讓我們看看如何利用Python和Keras實現。

              使用Keras實現FaceID

              就像所有的機器學習項目一樣,我們首先需要的是數據。創建自己的數據集需要花費大量時間和許多人的配合,這項工作本身可能非常具有挑戰性。因此,我搜索了網絡上RGB-D的人臉數據集,找到了一個非常合適的數據集(http://www.vap.aau.dk/rgb-d-face-database/)。這個數據集是根據人臉面向不同的方向以及不同的表情制作出的RGB-D圖像集,正好類似于iPhone X的情況。

              最終的實現可以參考我的GitHub代碼庫(https://github.com/normandipalo/faceID_beta),里面有個Jupyter Notebook。我還進一步嘗試了使用Colab Notebook,你也可以試試看。

              我創建了一個基于SqueezeNet架構的卷積網絡。這個神經網絡以兩組RGBD的面部圖像(即4通道圖像)作為輸入,并輸出兩組數據之間的距離。該網絡用對比損失函數(constrastive loss)訓練,可以最大程度地減少同一人的照片之間的距離,同時最大程度地提高不同人的照片之間的距離。

            iPhone X的新解鎖技術:用Python編寫Face ID!

            對比損失函數

              經過一段時間的訓練后,這個神經網絡可以將人臉映射到128維數組中,并將同一個人的照片分在一組,與其他人的照片分離。這意味著,該神經網絡只需計算解鎖過程中拍攝的照片與注冊階段存儲的照片之間的距離,就可以實現解鎖設備。如果距離低于某個閾值,則設備解鎖(閾值越小,設備越安全)。

              我使用t-SNE算法在二維空間中顯示了128維的嵌入空間。每種顏色都對應不同的人,可以看出,網絡已經學會了將這些圖片分組并緊密排列。當使用t-SNE算法時,簇之間的距離沒有意義。使用PCA降維算法時也會看到一個有趣的圖。

            iPhone X的新解鎖技術:用Python編寫Face ID!

            使用t-SNE創建嵌入空間中的人臉的簇,每種顏色代表不同的面孔(但顏色被重復使用)

            iPhone X的新解鎖技術:用Python編寫Face ID!

            使用PCA創建嵌入空間中的人臉的簇,每種顏色都是不同的面孔(但顏色被重復使用)

              實驗!

              現在我們可以試試個模型,模擬一個常見的FaceID的流程:首先,注冊用戶的面部;然后在解鎖階段,需要驗證兩個方面——主人可以解鎖,而其他人不可以。 如前所述,區別在于神經網絡會計算解鎖手機時和注冊時的臉部的距離,然后判斷是否在某個閾值以下。

              下面我們來注冊:我從數據集中采集了同一人的一系列照片,并模擬了注冊階段?,F在該設備將計算每個姿勢的嵌入,并保存在本地。

            iPhone X的新解鎖技術:用Python編寫Face ID!

            新用戶注冊階段,模仿FaceID的過程

            iPhone X的新解鎖技術:用Python編寫Face ID!

            在深度相機中觀察到的注冊階段

            iPhone X的新解鎖技術:用Python編寫Face ID!

            嵌入空間中同一個用戶的面部距離

            iPhone X的新解鎖技術:用Python編寫Face ID!

            嵌入空間中不同用戶的面部距離

              因此,我們可以將閾值設置為大約0.4,就可以阻止陌生人解鎖設備了。

              結論

              在這篇文章中,我展示了如何利用面部嵌入和孿生卷積神經網絡,實現FaceID解鎖機制的原型。希望對你能有所幫助。

            1024你懂的国产日韩欧美_亚洲欧美色一区二区三区_久久五月丁香合缴情网_99爱之精品网站

            <listing id="lnlbz"></listing>

                <address id="lnlbz"></address>
                <form id="lnlbz"><th id="lnlbz"><listing id="lnlbz"></listing></th></form>

                    <form id="lnlbz"></form>

                    <progress id="lnlbz"><nobr id="lnlbz"></nobr></progress>

                    <address id="lnlbz"><sub id="lnlbz"><menuitem id="lnlbz"></menuitem></sub></address><listing id="lnlbz"><font id="lnlbz"><cite id="lnlbz"></cite></font></listing><thead id="lnlbz"></thead><rp id="lnlbz"></rp>

                      責任編輯:韓希宇

                      免責聲明:

                      中國電子銀行網發布的專欄、投稿以及征文相關文章,其文字、圖片、視頻均來源于作者投稿或轉載自相關作品方;如涉及未經許可使用作品的問題,請您優先聯系我們(聯系郵箱:cebnet@cfca.com.cn,電話:400-880-9888),我們會第一時間核實,謝謝配合。

                      為你推薦

                      猜你喜歡

                      收藏成功

                      確定