人臉識別:AI產品經理需要了解的CV通識
最近整理了CV方向的一些產品基礎知識,我的上一篇文章《看AI產品經理如何介紹“計算機視覺”(基于實戰經驗和案例)》算是這個系列的第一篇;本文是本系列下的第二篇,主要針對人臉識別進行梳理。后續還會有多目標跟蹤、OCR等方向的內容。希望大家能從這個系列收獲到更多的CV干貨:)
人臉識別(Face Recognition):對圖像中的人臉進行檢測、識別和跟蹤。
一、技術流程詳解
技術流程:
1、人臉采集
人臉采集主要關注以下因素——
1)圖像大?。喝四槇D像過小會影響識別效果,人臉圖像過大會影響識別速度。非專業人臉識別攝像頭常見規定的最小識別人臉像素為60*60或100*100以上。在規定的圖像大小內,算法更容易提升準確率和召回率。圖像大小反映在實際應用場景就是人臉離攝像頭的距離。
2)圖像分辨率:越低的圖像分辨率越難識別。圖像大小綜合圖像分辨率,直接影響攝像頭識別距離?,F4K攝像頭看清人臉的最遠距離是10米,7K攝像頭是20米。
3)光照環境:過曝或過暗的光照環境都會影響人臉識別效果。可以從攝像頭自帶的功能補光或濾光平衡光照影響,也可以利用算法模型優化圖像光線。
4)模糊程度:實際場景主要著力解決運動模糊,人臉相對于攝像頭的移動經常會產生運動模糊。部分攝像頭有抗模糊的功能,而在成本有限的情況下,考慮通過算法模型優化此問題。
5)遮擋程度:五官無遮擋、臉部邊緣清晰的圖像為最佳。而在實際場景中,很多人臉都會被帽子、眼鏡、口罩等遮擋物遮擋,這部分數據需要根據算法要求決定是否留用訓練。
6)采集角度:人臉相對于攝像頭角度為正臉最佳。但實際場景中往往很難抓拍正臉。因此算法模型需訓練包含左右側人臉、上下側人臉的數據。工業施工上攝像頭安置的角度,需滿足人臉與攝像頭構成的角度在算法識別范圍內的要求。
2、人臉檢測(Face Detection)
人臉位置檢測:
目的是在圖像中準確標定出人臉的位置和大小。
人臉關鍵點檢測(人臉對齊):
目的是自動估計人臉圖片上臉部特征點的坐標
一般可以使用Openface中的Dlib模型實現人臉檢測,利用OpenCV庫對數據進行處理。最近人臉檢測算法模型的流派包括三類及其之間的組合:viola-jones框架(性能一般速度尚可,適合移動端、嵌入式上使用),dpm(速度較慢),cnn(性能不錯)。
人臉檢測關注以下指標:
- 檢測率:識別正確的人臉/圖中所有的人臉。檢測率越高,代表檢測模型效果越好。
- 誤檢率:識別錯誤的人臉/識別出來的人臉。誤檢率越低,代表檢測模型效果越好。
- 漏檢率:未識別出來的人臉/圖中所有的人臉。漏檢率越低,代表檢測模型效果越好。
- 速度:從采集圖像完成到人臉檢測完成的時間。時間約短,檢測模型效果越好。
舉一個實際例子說明:
在攝像頭某張抓拍圖像中,一共有7張人臉,算法檢測出4張人臉,其中3張是真實人臉,1張是把路標誤識為人臉。
在這個實際案例中:檢測率=3/7 誤檢率=1/4 漏檢率=(7-3)/7
3、圖像預處理
圖像預處理的目的是消除圖像中無關的信息,盡可能去除或者減少光照、成像系統、外部環境等對圖像的干擾,使它具有的特征能夠在圖像中明顯地表現出來。主要過程包括人臉圖像的光線補償、灰度變換、直方圖均衡化、歸一化、幾何校正、濾波以及銳化等。
1)灰度化:將彩色圖像轉化為灰色圖像的過程。
2)直方圖均衡化:直方圖描述了一副圖像的灰度級內容。直方圖均衡化主要目的是為了提高對比度和灰度色調的變化,使圖像更加清晰。
3)歸一化:通過一系列變換,將待處理的原始圖像轉換成相應的唯一標準形式(該標準形式圖像對平移、旋轉、縮放等仿射變換具有不變特性),使得圖像可以抵抗幾何變化的攻擊。例如用放大縮小圖像、減少圖片由于光照不均勻造成的干擾等。
4)中值濾波:將圖片進行平滑操作以消除噪聲。
預處理的效果直接影響到人臉識別率。可以通過不同方法,相同算法、相同訓練模式評估模型效果,選擇最佳的預處理方式。
4、人臉特征提取及人臉識別方法
傳統的人臉識別模型一般都是在SVM等分類器分類后,通過CNN提取特征。
但隨著深度學習的發展,人臉識別有更多端到端的框架選擇。這里簡單介紹一下三種近兩年基于深度學習人臉識別的方法:Deep face、Deep ID、FaceNet
1)Deep face
a.Deep face 與其他方法最大的不同在于,DeepFace在訓練神經網絡前,使用了基于3D模型人臉對齊的方法。
b.使用深度神經網絡學習特征
c.該模型在LFW數據集上取得了0.9735準確率
2)DeepID
DeepID有三代:DeepID、DeepID2、DeepID2+
DeepID2+對遮擋有很好的魯棒性
有兩種方式對人臉進行多種尺度的遮擋,第一種是從下往上進行遮擋,從10%-70%。第二種是不同大小的黑塊隨機放,黑塊的大小從10×10到70×70。
結論是:遮擋在20%以內,塊大小在30*30以下,Deep2+的輸出向量的驗證正確率幾乎不變。
3)FaceNet
直接將人臉圖像映射到歐幾里得空間,空間的距離代表了人臉圖像的相似性。該方法基于深度卷積神經網絡。FaceNet得到人臉最終表示后不用像DeepID那樣需要再訓練模型進行分類,直接計算距離,效率很高。
它在LFW數據集上使用了兩種模式:
- 直接取LFW圖片的中間部分進行訓練,
- 使用額外的人臉對齊工具,準確率為0.9963,超過DeepID。
當然基于深度學習的人臉識別方法還有很多種,比如baidu的方法等等。對這塊有興趣的朋友可以看看這篇文章:《基于深度學習的人臉識別技術綜述》
5、人臉匹配與識別
將提取的人臉特征數據與數據庫中儲存的特征模板進行搜索匹配,設定一個最佳的相似度閾值,當相似度超過該閾值,則輸出匹配后的結果。
最佳相似度閾值的決定需要考慮到輸出結果的正確率和數量。假設1000張樣本圖片里,共600張正樣本。相似度為0.9的圖片一共100張,其中正樣本為99張。雖然0.9閾值的正確率很高,為99/100;但是0.9閾值正確輸出的數量確很少,只有99/600。這樣很容易發生漏識的情況。
有的同學可能很快就通過這個場景聯想到精確率和召回率的概念,是的,這也是需要應用精確率和召回率的實際評估場景之一。這里再解釋一下精確率和召回率:
- 精確率(precision):識別為正確的樣本數/識別出來的樣本數=99/100
- 召回率(recall):識別為正確的樣本數/所有樣本中正確的數=99/600
(圖by@mousever)
只有當選擇的閾值實現:a.閾值以上結果的精確率極高;b.閾值以上結果的召回率極高。這個閾值才是在該算法模型下最佳閾值。
除精確率和召回率值得關注外,誤報率(False Alarm)也是非常重要的指標。家用家用機器人/攝像頭,可能會常開人臉檢測,誤報會非常影響用戶體驗(比如,沒有異常情況但頻繁報警提示)。因此誤報率會是這類場景的重要指標。
另外在這一個識別的步驟中,產品還需要確定具體輸出的需求點是人臉認證還是人臉識別——
1)人臉認證:一對一的匹配過程,解決“這是否為某人”的問題。系統需先找出已儲存的對象信息,再將待認證的信息與前者對比核對,從而判定接受或拒絕待認證的身份。
常見的應用場景:例如移動支付認證、安全性身份核對等。
產品在系統設計的邏輯上,需要先考慮調取已儲存對象信息的先驗條件。通過界面/語音的提示,使得待認證者預先知道自己正處于被核對的過程中,且已預先了解擬核對對象的身份。
2)人臉比對:一對多的匹配過程,解決“這是誰”的問題。系統將待識別人臉圖像的特征值與數據庫中存儲的所有已知身份的對象的特征值進行比較,來確定待識別者的身份。
常見的應用場景:人臉開門、人臉檢索等。
產品在本需求的設計上,需要考慮系統的實時性和架構方案的不同對產品邏輯的影響。例如人臉開門常見架構是跨互聯網和局域網的,人臉檢索常見架構是在某一個局域網(互聯網)下的。
a.人臉開門等跨網方案需要關注的因素
- 遠程算法更新:遠程算法更新必然會造成本地局域網功能暫時性無法使用。因此遠程算法更新的頻率、時間、更新效果都需要產品在更新前精確評估。
- 增刪改人臉數據與本地數據的同步:本地局域網和互聯網是無法直接交互的,因此用戶在互聯網一旦對人臉數據庫進行增刪改的操作,下發程序的穩定性和及時性都需要重點關注。
- 硬件環境:本地存儲空間的大小和GPU直接影響到本地識別的速度。服務器的穩定性影響到功能地正常使用。
- 守護程序:斷電等外置情況意外情況發生又被處理完善后,程序能自動恢復正常。
b.人臉檢索等某一局域網(互聯網)方案需要關注的因素
- 速度:除了算法識別需要消耗一定時間外,該局域網下的網速會影響到識別結果輸出的速度。
- 數據庫架構:通過檢索結果關聯結構化數據。
- 閾值的可配置性:在界面設置閾值功能,從產品層面輸入閾值后,改變相對應的結果輸出。
- 輸出結果排序:根據相似度排序或結構化數據排序內容地抉擇
- 云服務的穩定性。
二、與人臉識別相關的其他CV內容
1、人臉表情識別(Face expression recognition 簡稱FER)
人臉表情識別的一般步驟:圖片獲取、圖像預處理(主要有圖片歸一化、人臉檢測與定位)、特征提取及表情分類。
現普遍認為人類主要有六種基本情感:憤怒(anger)、高興(happiness)、悲傷(sadness)、驚訝(surprise)、厭惡(disgust)、恐懼(fear)。而大多數表情識別是基于這六種情感及其拓展情緒實現的,目前主要困難點是:
- 表情的精細化程度劃分:每種情緒最微弱的表現是否需要被分類。分類的界限需要產品給出評估規則。
- 表情類別的多樣化:是否還需要補充其他類別的情緒,六種情緒在一些場景下遠不能變現人類的真實情緒。因此除了基本表情識別外,還有精細表情識別、混合表情識別、非基本表情識別等細致領域的研究。
- 缺少魯棒性
2、人臉性別識別
性別分類是一個典型的二類問題,人臉性別分類問題需要解決的兩個關鍵問題是人臉特征提取和分類器的選擇。
人臉性別識別其實僅能識別到人臉外貌更偏向于女性還是男性,很難對女生男相、男生女相進行正確判斷。產品需制定合理的性別劃分規則。
3、人臉年齡識別
年齡識別的難度在于單人的不同年齡段識別和多人的不同年齡段識別,人臉年齡識別常和人臉識別進行組合識別,能更正確的判斷在一定年限內“是否是一個人”的問題。
識別年齡無變化的人臉用分類即可,而對年齡變化的人臉識別方法是通過年齡模擬,將測試圖像和查詢庫中的圖像變換到某一共同的年年齡,從而去除年齡不同的影響,使識別在年齡相同的人臉圖像進行。
除了以上內容,還有是否戴眼鏡、頭發長度、膚色等等方向,產品可根據需求對算法提出不同的組合類別。值得強調的是,隨著行業的深入,我們會發現單純的人臉識別并不能滿足實際應用場景的需求,比如在安防行業或者金融領域,活體技術(如何驗證目前的人是真人而不是照片或視頻)和防欺詐技術才是戳中用戶痛點的、更本質的關鍵。人臉識別技術和多個技術相互結合,是現在場景中運用得比較廣泛的方案。
三、補充說明
1、測試環境說明
例如:
- CPU:Intel(R) Core(TM) i7-4790 CPU @ 3.60 GHz
- 內存:8GB
- 系統:Ubuntu 14.04 x86_64/Windows 7 SP1 64bit
- GCC版本:4.8.2
注:以上測試環境是PC,也可以在手機上。
2、需要說明測試集是什么,或者圖片要求(比如“圖片包含人臉大小應超過96*96像素)
a.經典人臉身份識別測試集LFW(LFW benchmark http://vis-www.cs.umass.edu/lfw/ )共包含13233 張圖片 5749 種不同身份;世界記錄99.7%。
b.CK+一個是人臉表情數據集(CK+,Extended Cohn-Kanade Dataset, http://www.pitt.edu/~emotion/ck-spread.htm ),包含固定表情和自發表情,包含123個人的593個表情序列。每個序列的目標表情被FACS編碼,同時添加了已驗證的情感標簽(生氣、厭惡、害怕、快樂、悲傷、驚訝)。
3、需要說明“有效距離,左右角度,上下角度,速度”等參數值(范圍)
注:這和“部署的靈活性”相關——由于不同客戶不同場景的需求不同,所以技術方的人臉檢測模塊,一般可以通過調整參數得到N種亞型,以適應不同應用場景(光照、角度、有效距離、速度) 下對運算量和有效檢測距離的需求。
4、需要知道的是,很多公司刷榜的數據,更多是PR效果
UCLA的@朱松純 教授 在文章《淺談人工智能:現狀、任務、構架與統一?| 正本清源》里就提到:
咱們刷榜比打乒乓球還厲害,刷榜變成咱們AI研究的“國球”。所謂刷榜,一般是下載了人家的代碼,改進、調整、搭建更大模塊,這樣速度快。我曾經訪問一家技術很牛的中國公司(不是搞視覺的),那個公司的研發主管非常驕傲,說他們刷榜總是贏,美國一流大學都不在話下。我聽得不耐煩了,我說人家就是兩個學生在那里弄,你們這么大個團隊在這里刷,你代碼里面基本沒有算法是你自己的。如果人家之前不公布代碼,你們根本沒法玩。很多公司就拿這種刷榜的結果宣傳自己超過了世界一流水平。
四、人臉識別的現狀
1、實驗室效果和現實效果對比
1)實驗室訓練數據和實際抓拍數據
大多數情況下,實際抓拍圖像質量遠低于訓練圖像質量。由于訓練數據普遍是由用戶經過手機app/web采集上來的圖片,所以光照、角度、模糊程度都可以由產品控制,但是實際抓拍圖片質量是和實際場景中的光線、攝像頭分辨率等等因素相關,照片質量比較難把握。
在上圖的情況下,即使算法模型可以達到很高的精確度,但由于抓怕圖片質量不好的原因,實際效果會大打折扣甚至不可用。
這種情況的解決辦法是:
- 對攝像頭進行補光/濾光
- 將攝像頭固定在角度合適的位置
- 算法在識別前進行圖像預處理
2)訓練時的標準和實際應用的標準
大多數情況下,實際應用的標準會遠高于訓練標準。例如,人臉識別實驗室的標準是通過正臉數據訓練出模型,能識別正確人臉就可以。而實際情況可能沒有正臉數據,對訓練提出了更高的要求。
3)訓練效果和現實效果
大多數情況下,實際效果會遠低于訓練效果?,F在市面上CV公司都是說自己的訓練效果在99%以上(無限接近于100%),但這不等于實際應用的效果就是99%。工業上場景復雜的人臉應用(類似識別黑名單這種1:N的人臉比對)正確率在90%以上就已經是表現得很好的算法模型。
2、算法漏洞常被利用破解人臉識別系統
人臉識別常常被質疑是否安全性不夠高,很多人臉識別的產品都能被破解。比如長得比較像的人可能會被誤認為同一人;用錄入人員的照片或者視頻也能通過人臉系統。
而現在安全性能比較高的系統一般是人臉識別技術和其他生物識別技術相結合,例如人臉識別+指紋識別;人臉識別+虹膜識別等等。
以上所有內容,就是本次對人臉識別的梳理。文章參考了大量文獻,也結合了本人的實戰項目經驗,希望能通過這樣體系化的梳理讓大家有所收獲。也非常歡迎大家和我溝通對人臉識別的見解和看法。
附:參考文章
- 《人臉面部特征提取技術的研究》?http://t.cn/RTm3Xwm
- 《人機交互中的人臉表情識別研究進展》?http://t.cn/RTm3pLS
- 《基于深度學習的人臉識別技術綜述》http://t.cn/RJeczWj
- 《人臉識別之端到端的框架(二)—DeepID》http://t.cn/RHlEVZU
相關閱讀
作者:Jasmine,微信公眾號:AI產品的自我修養
本文由 @Jasmine 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖由作者提供
CV的英文是啥啊
computer vision
謝謝分享
不錯