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