“刷臉”曾一度是人們互相調侃時的用語,如今早已深深地融入我們的生活。從可以人臉解鎖的手機,到人臉識別打卡機,甚至地鐵“刷臉”進站……
人臉識別技術越來越多地應用在了各種身份驗證場景,在這種看起來發生在電光火石之間的應用背后,又有哪些不易察覺的技術在做精準判別?算法又是通過何種方式來抵御各種欺詐式攻擊?
我們近期邀請到曠視科技產品總監彭建宏,他負責 FaceID 在線身份驗證云服務的產品設計。在本次公開課上,他講述了深度學習在互聯網身份驗證服務中的應用以及人臉識別活體檢測(動作、炫彩、視頻、靜默)技術應用場景及實現方式。
以下為彭建宏公開課演講內容實錄:
今天我們主要說的是 FaceID,它在我們產品矩陣里更像是一套解決方案,是身份驗證的金融級解決方案。我們在生活中有很多場景是想驗證,證明你是你。
基本所有的互聯網金融公司都會在我們借貸的時候要去驗證你是你,這就需要做一個你是你這樣一個證明,所以如何提供一套可靠的方案去驗證你是你這件事情就已經變得非常重要,大家可能很容易想到驗證的方法有很多,包括之前大量使用的指紋識別,還有一些電影里邊經常出現的虹膜識別,還有最近特別火的人臉識別。
下面我說一下技術特點。關于人臉識別,大家很容易想到第一個特點就是體驗非常好,非常自然、便利,但它的缺點也很多,首先隱私性更差,我們要想獲得別人的指紋和虹膜的代價非常大,但是要獲得別人面部的照片這個代價就非常的小了。第二是由于光照、年齡、胡須、還有眼鏡等等因素,人臉識別的穩定性會比較低。第三是指紋識別、虹膜識別都有主動性,人臉識別具有被動性,這也是之前 iPhoneX 剛出來的時候,很多人擔心不經意被人錯刷,或者去誤刷支付或者檢索等等——弱陰私性,弱穩定性還有被動性,就對人臉識別的商業化應用提出了更高的技術要求。
深度學習技術的迅猛發展,使得圖像識別、分類跟檢測的準確率大幅提高,但真正要做成一套金融級解決方案還不是那么簡單的,這張圖就展示了一個整體的 FaceID 提供的金融級整體的解決方案。
在這個架構圖中,我們可以看到,FaceID 的用戶提供了多種產品形態,包括移動端的 SDK,H5,微信/小程序、第三方渠道 APP 以及 PC 端。從功能上來說呢,我們的產品包括身份證的質量檢測、身份證 OCR 識別、活體檢測、攻擊檢測以及人臉比對,整個解決方案可以看出是建立在云跟端兩個基礎上,我們在端上提供了 UI 解決方案,就提供 UI 界面可以方便集成,如果覺得我們的 UI 做得不符合大家的要求,也可以去做一些定制化開發,整個核心功能里有活體檢測,在端上跟云上分別有自己的實現。
同時針對不同的活體攻擊方案,還會采用不同的活體策略。我們在現實中的活體檢測中,線上運營會實時收集各種圖片做標注,及時把算法進行更新,可以確保最新的攻擊可以在第一時間內進行響應和返饋,這也是為我們整個深度學習算法不斷注入新血液。
▌身份證采集
整個流程是這樣的,用戶會先進行身份證采集,系統其實會要求用戶先去拍一張身份證的正面跟反面,這個過程是在端上進行完成的。拍攝以后,我們會在云上進行,OCR 識別是在云上完成的,我們不僅會去識別身份證上面的信息,還會去識別這個身份證的一些分類。由于不同的業務場景不同,這個分類信息會反饋給用戶,用戶來判斷是否接受。在很多嚴肅的場景下,很多客戶可能只能接受身份證原件,識別出來的文字我們也會根據用戶的業務不同做相應不同的處理,因為有些客戶就要我們識別出來的文字,用戶是不能去修改身份證號和姓名的。
我們在 OCR 里面還加入了很多邏輯判斷,例如大家知道在身份證號里面是可以看出來用戶生日還有性別信息,如果我們發現身份證上的生日跟身份證號判斷出來的信息不一樣,我們就會在 API 的結果里面給用戶返回邏輯錯誤,這是用戶可以根據業務邏輯可以自行進行處理的。
這個展示就是我們身份證采集以及身份證 OCR 的一些場景。先通過手機的攝像頭去采集,在我們的云端去完成 OCR 識別以及物體分類,可以去判斷是不是真實的身份證。有一個需要討論的問題是,為什么我們把 OCR 放在了云端,而不是放在手機的 SDK 端呢?這個主要是安全方面的考慮,如果信息被黑客攻破,這在端上是相當危險的事。
▌活體攻擊檢測方案
下面我們來去討論一下最重要的活體攻擊。在我們的產品里面提供了多種活體攻擊的檢測方案,包括隨機、動態的活體,包括視頻活體、炫彩活體等等。活體檢測是我們整個 Face ID 最重要的一環,也是我們最重要的核心優勢。這個 PPT 展示的是我們的動作活體,用戶可以根據我們的 UI 提示進行點頭、搖頭這樣的隨機動作,所以我們每次隨機動作都是 Serves 端去發出的,這樣也保證我們整個動作的安全性。這里面有些技術細節,包括人臉質量檢測,人臉關鍵點的感測跟跟蹤,臉部的 3D 姿態的檢測。這是我們整個技術的一些核心競爭力。然后我們會幫助用戶定義一套 UI 界面,如果用戶覺得我們 UI 界面不好也可以直接去修改。
我們提供一種叫炫彩活體的檢測方法,這個是 Face++ 獨特獨創的一種根據反射光三維成像的原理進行活體檢測,從原理上杜絕了各種用 3D 軟件合成的視頻、屏幕翻拍等等的攻擊。從產品形態上來說本身又是一個視頻,現在可能看不到,就是屏幕會發出一種特定圖案進行活體判斷。
現在活體有一個比較大的問題是當在強光下它的質量檢測方法,效果不太好,我們在最后會配合一個簡單的點圖動作,這樣就提高了整個攻擊的門檻,然后針對移動 H5 的場景我們主要推出了一個視頻活體的檢測方法,用戶會根據 UI 提供的一個數字去讀這樣一個四位數字,同時我們會去判斷,不僅會去做云方面的識別,還會做傳統方面的識別,以及兩者之間的語音跟聲音同步檢測。
這樣通過這三種方案去判斷就是活體檢測,除了剛才我們介紹的一些比較典型的方法之外,我們也在去嘗試一些新的包括雙角度活體跟靜默活體。雙角度活體是用戶拍一張正臉的自拍照與側面自拍照,通過這種 3D 建模重建的方式來判斷是不是真人,我們的雙角度活體,靜默活體,為用戶提供一種非常好的用戶體驗,相當于用戶拍一個兩秒鐘的視頻。
我們會將這個視頻傳到云端,這樣我們不僅會去做單幀的活體檢測,還會去做多幀之間的這種關聯性活體檢測,這樣通過兩種動靜結合的方法去判斷受測人是不是真人。
除了活體檢測之外,我們還提供了一套叫做 FMP 的攻擊檢測,可以有效去識別翻拍,面具攻擊,這是在我們的云端完成的。這是我們基于大量的人臉數據訓練出一套叫 FMP 的深度神經網絡,并且根據線上的數據進行實時返回和調整,不斷去識別準確率,這也是我們整個活體檢測里一個最重要的技術難點。
▌人臉比對
活體檢驗之后,我們就可以進行人臉比對的環節。我先簡單跟大家介紹一下人臉識別的一個基本原理:首先我們會從一幅圖片里面去做人臉檢測并做出標識,相當于在一張圖片里面找到這張人臉,并且表示出整個人臉上的一些基本關鍵點,如眼睛、眉毛等等。
下面要做的是將一些人臉關鍵點進行對齊,作用是為之后的人臉識別算法提供數據預處理,可以提高整個算法準確度。然后,我們會把整個人臉的那部分摳出來,這樣就可以避免周圍物體對它的影響,摳完之后的人臉會經過深度學習網絡,最終生成一個叫做表示的東西,可以把表示理解為這張圖片生成的一張向量,認為是在機器認知里面這張圖片就是通過這樣的向量來進行表示的。但這個怎么樣去衡量這個標識能夠真實的刻畫出這張真實的人臉?
我們現在有個原則:如果同一個人,我們希望表示之間的距離要盡量的近,如果是不同的人,我們希望表示的距離盡量的遠,這就是我們去評價一個深度學習出來的一個表示好壞。然后基于這樣的表示,在人臉識別里邊有兩個比較大的應用,我們分別叫做 1:1 與 1:N 的識別。
前者主要是比較兩張人臉識別是不是同一個人,它的原理是我們去計算兩張人臉表示的距離,如果這個距離小于一個域值,我們就會認為這個是同一個人,如果是大于某一域值,我們就認為它不是同一個人,在不同的誤識率下,我們會提供不同的域值。第二個 1:N 的應用,主要應用場景是安防,也就是說我們提供一張人臉照片,在數據庫里面去查找已知,最相似的這樣一個人臉是 1:7 的應用,FaceID 主要應用的技術場景是 1:1。
當我們通過 OCR 去識別出來用戶姓名、身份證號,并通過活體檢測之后,我們會從公安部的權威數據庫里面去獲得一張權威照片,會跟用戶視頻采集到的一張高質量照片進行比對,會返回給用戶是不是一致,當然我們不會去直接告訴用戶是不是一致,而是會通過這種近似度的方式告知。
大家可以看一下左側的這張表,然后這邊的返回值里面提供了千分之一、萬分之一、十萬分之一不同的近似度,這些表示的是誤識率,在不同的誤識率下會有一個域值,假設我們認為在千分之一誤識率下,如果分數大于 60 分,我們就會認為是同一個人,所以這兩張照片,我發現他們的這個近似度是 75,我們會說在萬分之一的誤識率下是同一個人,但是在十萬分之一這種誤識率下可能他們不是同一個人。
這里有一個細節是我們的照片數據源可能會提供不同的整個時間造成不同的障礙,正常的話,我們會有一個不同的這種紋理圖案,但是有時我們會獲得一張空白照片,或者獲得一張黑白照片,這也需要我們去做一些后臺方面的處理。
所以總結一下就是 Face ID 會為大家提供一整套的這種身份驗證解決方案,整個方案涵蓋了質量檢測、身份證識別、活體檢測、攻擊檢測和人臉比對等一系列的功能,其中在活體檢測方面,我們采用了云加端的這種聯合防范方式,通過不同的活體檢測方案,包括動作活體、視頻活體、靜默活體等一系列的檢測方法,可以有效的預防假臉攻擊。
在線上我們每天都會遇到各種各樣的攻擊方式,整個人臉驗證的方案是一套長期攻防戰,我們現在通過線上運營的方式不斷去收集攻擊的異常數據,進行人工標注、訓練、分析,然后可以不斷提升整個模型的防范能力,在這方面我們已經形成了一套閉環系統,發現任何的攻擊我們都可以在很短的時間內去更新線上的一些模型,做到充分防范。
下面我簡單介紹一下整個工業化 AI 算法的一個產生過程,其實整個流程可以看成是數據驅動,包括數據采集、清洗、標注,包括數據增廣、數據的域訓練模型、時間管理,還有 SDK 封裝等等。
介紹一些核心關鍵點,第一個是數據采集,我們是通過一個叫做 Data++ 的 Team 去負責數據采集跟標注,我們會通過線下采集,或者是通過重包標注和網絡爬蟲幾種方式去獲取整個的 AI 訓練原材料。
有了數據之后,我們一個叫 Brain++的平臺可以把它看成是整個 AI 芯片的一個煉丹爐,它會提供整個計算存儲網絡等 IaaS 層的一些管理,這樣我們整個算法工程師訓練的時候相當于在單機上面去跑,但在不同分布式的底層調度是在多臺機器上面,已經通過 Brain++ 的平臺把我們屏蔽掉了,所以如果我們可以去寫類似于的語句,需要 20 個 CPU、 4 個 GPU、8G 的內存去跑這樣一個訓練腳本,底下是通過分布式方法去訓練的,但我們提供單向運行腳本就可以了。
然后除了數據,IaaS 層的這種資源,我們研發了一套類似于 TensorFlow 的并行計算框架和引擎 Megbrain,跟 TensorFlow 相比,很多地方都做了不同優化。
下面說一下我們的域訓練模型,我們的團隊去訓練出成千上萬這種域訓練的模型,這張圖展示的部分域訓練模型,后面這張圖的每個點都是一次實驗,如果是好的實驗,我們就會放在一個網站上供其他算法工程師使用,我們希望通過一套時間管理的平臺去幫他們去整理整個時間思路,以及整個實驗的循環關系。
有了前面的這些 FaceModel, IaaS 層資源,還有數據、時間管理,剩下的就要發揮各個算法工程師的想象力了,大家每天都會去讀各種 Paper,去想各種復雜精要的這種網絡設計的方案,從而創造出性能非常好的網絡模型。所以工業化的 AI 生產現在已經是團體作戰了,我們會有各種的體系支持,大家去這些已有資源上面去創作,生成一套完整的 AI 體系。
-
faceid
+關注
關注
2文章
89瀏覽量
11925 -
曠視科技
+關注
關注
1文章
153瀏覽量
11200
原文標題:身份采集、活體檢測、人臉比對...曠視是如何做FaceID的? | 公開課筆記
文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論