編輯導語:人臉驗證產品我們應該都很熟悉了,不少人都在用人臉進行解鎖或者支付。然而,我們對人臉驗證的瞭解僅限於在使用層面上,但是對於其開發卻少有人瞭解。今天,在本篇文章中,作者通過自己親身接觸的人臉驗證產品的開發流程,為我們關於人臉驗證產品怎麼做進行了總結。
在業務中,有幸深度接觸了人臉驗證這款產品,為及時沉澱總結,所以有了這篇文章。需先説明,本文人臉驗證指的是驗證當前操作者是不是用户本人。
一、梳理端和場景1. 開始前,產品首先需要先梳理好端和場景舉例:
為什麼要先梳理端和業務場景呢?
2. 業務場景不同,業務策略不同舉例:金融場景,安全係數要求更高,在保證一定用户體驗的時候,寧可誤殺,不可錯放。
登錄場景,則相對要求低一些;另外,不同場景,輔以不同錯誤次數限制、彌補措施等,業務流程邏輯不同。
3. 硬件配置不同,採集到的數據不同軟件產品,關注手機攝像頭配置。
比如説安卓千元機,一般都是普通RGB攝像頭,只能獲取到用户臉部的2D信息,比如色彩梯度等,而蘋果手機X及以上配置了3D深度攝像頭。
所以蘋果的面容ID是基於3D結構光的人臉識別方案,通過紅外光將大約3萬個點陣投射到物體上,用數量龐大的點陣得到物體的深度信息,精度高,可以較好地防範各類攻擊(目前同樣採取3D結構光的安卓手機,點陣數量遠小於蘋果,相對而言,獲取的數據也就更少)。
另外,蘋果的成像是利用紅外不可見光,所以可以不受環境光的影響,支持用户在黑暗環境下正常使用。因此如果識別到用户手機型號為蘋果X及以上,App可考慮申請調用系統自帶的面容ID。
iPhone11起,還為FaceID增加一個多角度傳感器,可以捕捉更寬的視野,讓用户可以不用臉部太靠近攝像頭就可以完成解鎖(https://support.apple.com/zh-hk/HT208108 Face ID官方介紹,感興趣的可以看一下)。
硬件產品,則要考慮攝像頭選型,一般都是選深度相機。
主流的深度相機方案是3D 結構光(3D Structure Light)和時間飛行法(TOF, Time of Flight)。怎麼選?要結合實際採集數據的場景來定。
其中,3D結構光就像上述所説,精度高,但有效距離有限。距離越遠,物體上投射到的光點越大,精度也就越差;所以3D結構光更適合應用在近距離的人臉識別,手勢識別。像支付寶的線下刷臉支付終端就用的是3D結構光攝像頭。
而遠距離的時候,就適合TOF,比如AR.VR場景更適合用TOF。TOF,ime of Flight,簡單來説就是通過光的飛行時間來計算距離。通過紅外發射器發射調製過的光脈衝,遇到物體反射後,用接收器接收反射回來的光脈衝,並根據光脈衝的往返時間計算與物體之間的距離。
二、人臉核身操作流程一般來説分為三步:
1. 採集數據這一步的目的是為模型採集到質量合格的人臉圖片/視頻流,並按照採集要求傳輸給後端。
1)明確要求
首先需要明確要求,包括人臉圖像要求和前端採集要求。
人臉圖像要求:圖像要求,需要產品綜合業務需求和模型技術需求,進行確認,人臉比對要求一般包括以下:
- 有大小合適的整個人臉
- 光線充足,不反光
- 人臉無遮擋
- 人臉角度正
- 人臉不模糊
活體檢測要求:要根據業務上希望達到的效果和技術採用的方案綜合確認。技術原理不同意,則差異很大。
前端採集要求:同樣,需要整合活體檢測和人臉比對的前端採集要求,形成一套完整的前端採集方案。
舉例:
2)人臉檢測
“人臉檢測是指對於任意一幅給定的圖像,採用一定的策略對其進行搜索以確定其中是否含有人臉,如果是則返回臉的位置、大小和姿態。”人臉識別第一步,是檢測到圖像中人臉的存在。
就像人的認知一樣,先認識到有人的存在,在判斷這個人是誰。
注意點:
- 如果採用的技術方案是分類,可同時找出圖像中的所有人臉,策略上要確認檢測到多張人臉時,以哪張人臉為準,如以最大人臉為目標人臉。
- 如果用的是遍歷,技術上簡單來説指的是在圖像中遍歷人臉,若將圖像全部遍歷完,耗時較長,可定策略找到一張符合大小的人臉就結束,如果檢測的人臉小於要求,則繼續遍歷。
3)IQA(圖像質量評價)
在圖像識別中,所採集到的圖像質量直接影響識別結果的準確性和可靠性。好比我遠遠看到有個人和我打招呼,但是隔得太遠,我看不清具體的五官,所以無法判斷他是誰。
因此,人臉識別,需要過濾掉不符合人臉識別質量要求的人臉圖像,所以需要在採集時做IQA。
在採集時,實時校驗人臉的光照條件,姿態角度、遮擋、清晰度,符合質量條件的才會通過進入下一步。採集過程中,圖像不符合要求時,根據檢測結果提示用户正確的操作。
2.欺詐人臉檢測欺詐人臉檢測,指的檢測圖像是否是欺詐人臉,紙張打印人臉圖,人臉照片,電子設備屏幕中的人臉數字圖像或者是人臉面具等。
這裏説一點,業務側一般用活體檢測這個詞,但學術其實説的是Face spoof detection欺詐人臉檢測。字面上理解活體檢測,指的是檢測這個人是不是活體。
比如説帶着面具的人,模型應該是判斷成活體還是非活體,對於這個問題,用活體或者非活體來定義是有些模糊,用欺詐人臉和非欺詐人臉會更準確。
簡單介紹幾種常見方法:
- 基於圖片紋理差異:無需用户進行繁瑣的臉部動作,只要求用户實時拍攝,傳入模型一張照片即可,是基於圖像紋理差異(摩爾紋、成像畸形等)來做判斷,可有效防止屏幕二次翻拍等作弊攻擊;
- 基於運動信息:需要用户隨機進行眨眼,搖頭,抬頭等動作。基於用户運動信息,可有效防止紙張,照片等作弊攻擊。 因為動作策略是隨機的,需要欺詐人臉在極短時間內進行正確的反應,所以對3D建模類攻擊也有一定的防範作用。除了眨眼,搖頭類,也有讀數字的,通過聲紋+唇語的方式來判斷。缺點是檢測耗時長,對用户不夠友好;
- 基於面部閃爍 :由於真實人臉與欺騙人臉的材質不同,導致了成像系統反射率有差異。通過屏幕來發射不同顏色和強度的光線,一般是紅藍綠,可有效防止紙張,照片,屏幕等作弊攻擊;
- 基於紅外:也是因為材質不同,成像系統反射率有差異,但可見光下,區別不是很顯著,而紅外波段會明顯不同。紅外活體檢測就利用了這一點,可有效防止紙張,照片,屏幕等作弊攻擊。 但依賴特殊硬件來發射近紅外光。需要特殊硬件;
- 基於3D結構光:前面提過,不贅述。需要特殊硬件;
- 基於TOF:前面提過,不贅述。需要特殊硬件。
比對的時候,同時會對圖像做一些預處理。(需要對圖像二次加工的產品,則一般有單獨的預處理模型。具體,也視公司資源而言…)
用户在拍攝時,難免會受到外在因素的干擾,比如光線、表情、陰影遮擋等,導致圖像質量不夠好。雖然在採集的時候,我們已經過濾了部分低質量的圖像,但為了用户體驗,不可能用很嚴苛的標準。
所以比對的時候,會對採集到的人臉圖像做一些處理,比如説摳出圖像裏的人臉,避免圖片裏非人像的部分造成影響,調整光線、旋轉、降噪尺寸歸一化,然後提取出人臉特徵,找出關鍵點,將輸入人臉和樣本人臉對齊,最後計算出相似度。
4. 業務策略前面所述大部分都是技術上的流程,這裏總結一下,業務上產品能做些什麼呢?
注意:以下非必要,需要產品結合業務需求和技術能力權衡確定。
1)限流策略
操作頻繁限制。
2)採集超時策略
在xx時間內若採集不到符合要求的圖像,則結束採集。
3)用户操作指引
開始採集前,按照人臉圖像要求,給用户一定的交互提示,可對後面的圖像採集質量有一定正向作用。
如請勿遮擋面部,請保持正視屏幕,保持不動,請保持光線充足。疫情期間,視模型要求和業務要求,可增加“請摘下口罩”指引。
4)屏幕亮度調節
進入採集流程,通過調節屏幕亮度,白底UI等,降低光線對圖片成像的影響。注意,這裏僅針對RGB成像方案,使用非RGB攝像頭就不需要考慮環境光的影響。
5)確認圖像採集標準
前文已説,不贅述。
6)檢測到多個人臉
人臉比對時,檢測到多個人臉,一般以最大人臉為目標人臉;活體檢測時,則根據場景考慮是否,有任一非活體人臉則判斷不通過。
7)閾值策略
不同場景,閾值標準不一樣。
上圖是騰訊人臉比對API接口的返回參數之一,借這個介紹一下。
這裏返回值裏面提供了千分之一、萬分之一、十萬分之一不同的誤識率,不同的誤識率下對應不同的閾值。
如果業務上能接受千分之一的誤識率下,那麼分數大於 40 分,就可以認為是同一個人;但十萬分之一誤識率要求下,90分以下的就認為他們可能不是同一個人。所以產品要根據業務屬性決定以哪個閾值為合格標準。
8)驗證失敗,彌補策略
算法是概覽,也會出錯。為了良好的用户體驗,可以在人臉驗證失敗,給用户提供其他驗證方式。
9)建立用户個人人臉庫,增加比對樣本
當人臉識別失敗,用户轉而用其他方式進行驗證,驗證通過後,我們可以記錄下之前的人臉數據,豐富這位用户的個人人臉庫。因為用户的面部是會發生變化,如果一直用一張樣本照片,隨着時間推移,差異會越來越大,識別會越來不準。
10)注視感知
蘋果FaceID的注視感知功能。它能識別用户的眼睛有沒有睜開,是否看向手機。只有用户眼睛睜開,且看向攝像頭時,才能解鎖設備。
這樣,其他人就難以在用户不知情的情況下(如在睡着時)解鎖設備。這裏其實考慮的是生物特徵的開放性。相比傳統密碼,生物特徵每天都暴露在公眾場合,而且一旦被竊取,就是終生被竊取,不像傳統密碼一樣。
三星部分機型,雖然沒有精細到注視感知,不過支持有無睜眼的判斷。但注視感知功能,會對部分眼睛有疾病的用户造成困擾,如斜視的用户,所以蘋果也提供了關閉這個功能的選項。
簡單延伸一下生物特徵安全性的問題,怎麼樣才能防範竊取?
- 首先:要減少不必要的生物特徵採集,存儲。政府層面應當規範生物特徵的採集、存儲、傳輸。
- 其次:要讓欺詐無利可圖。不斷髮展相關技術,讓欺詐成本遠高於收益,比如活體檢測,可以檢測出紙張,照片,視頻等欺詐攻擊。而3D面具成本高,且不具備批量複製性質,材質和人臉的區別也可被檢測出來。
感謝閲讀,持續學習中,如有錯誤的地方,請不吝賜教。
作者:石青;微信公眾號:shiqingzixishi
本文由 @石青 原創發佈於人人都是產品經理。未經許可,禁止轉載
題圖來自 Pexels,基於 CC0 協議