一文看懂人臉識(shí)別技術(shù)流程
文章出處:http://www.nyfzw.net 作者:IT之家 人氣: 發(fā)表時(shí)間:2020年07月20日
舉個(gè)例子,十多年前大家還在普遍用現(xiàn)金的時(shí)代,小編在商店買(mǎi)東西排隊(duì)結(jié)賬,每當(dāng)看到收銀員找零時(shí)手忙腳亂的樣子就會(huì)心急如焚,只恨不能拿了東西直接走人。那時(shí)候年幼的小編就攥緊拳頭夢(mèng)想著以后一定要發(fā)明一種不用找零錢(qián)的方法。
后來(lái)這個(gè)在心底萌芽多年的夢(mèng)想被別人實(shí)現(xiàn)了,失望之余小編也樂(lè)享其成。用手機(jī)掃掃碼就能付錢(qián)可比現(xiàn)金方便快捷多了。可天知道小編“懶癌+急癌”晚期,久而久之竟覺(jué)得抬手掃碼、輸入密碼這樣的動(dòng)作也很麻煩。所以后來(lái)出現(xiàn)的指紋支付算是拯救了小編。
再后來(lái),連手指都不用動(dòng)了,因?yàn)槌霈F(xiàn)了“刷臉支付”,配合手上iPhone的卓越體驗(yàn),不得不說(shuō)小編愛(ài)死了這個(gè)功能。
嗯,刷臉支付將小編從付錢(qián)時(shí)漫長(zhǎng)等待的焦躁和不安中解救了出來(lái),所以在IT之家編輯部的科技氛圍里淫浸多年后,小編覺(jué)得有必要為大家講一講“刷臉”到底是個(gè)什么東西,也可算是知恩圖報(bào)了!
“刷臉”,顧名思義,背后是一項(xiàng)關(guān)鍵技術(shù):人臉識(shí)別。
別看這兩年因?yàn)樵谥悄苁謾C(jī)上的使用而大熱,其實(shí)人臉識(shí)別技術(shù)最早的研究還要追溯到20世紀(jì)50年代,當(dāng)時(shí)已經(jīng)有科學(xué)家在研究人臉輪廓的提取方法,但受限于技術(shù)水平,這項(xiàng)技術(shù)的相關(guān)研究一度停滯,直到20世紀(jì)80年代,人臉識(shí)別的方法才有了新的突破,神經(jīng)生理學(xué)、腦神經(jīng)學(xué)、視覺(jué)等相關(guān)知識(shí)被引入,人臉識(shí)別進(jìn)入了新的發(fā)展階段。
所以,當(dāng)前階段的人臉識(shí)別不是單一的技術(shù),而是融合了神經(jīng)生理學(xué)、腦神經(jīng)學(xué)、計(jì)算機(jī)視覺(jué)等多方面學(xué)科的技術(shù)。不過(guò),本質(zhì)上它還是一項(xiàng)計(jì)算機(jī)視覺(jué)技術(shù)。
當(dāng)然,IT之家做這篇文章的重點(diǎn)不在于回顧人臉識(shí)別的歷史,而是和大家講講人臉識(shí)別背后的一些基本原理。
人臉識(shí)別技術(shù)系統(tǒng)的基本邏輯架構(gòu)
我們每天用人臉識(shí)別技術(shù)解鎖手機(jī)、結(jié)賬付款,是那么的自然,但相信很少有同學(xué)深入思考這項(xiàng)技術(shù)背后是怎樣一個(gè)流程。
前面我們說(shuō),計(jì)算機(jī)視覺(jué)是人臉識(shí)別關(guān)系最緊密的技術(shù)。所以我們從這一點(diǎn)入手。
計(jì)算機(jī)視覺(jué),通俗來(lái)說(shuō)就是利用攝像頭等設(shè)備代替人眼,來(lái)獲取圖像,利用計(jì)算機(jī)對(duì)圖像信息進(jìn)行處理,綜合人類的認(rèn)知模式來(lái)建立人類視覺(jué)的計(jì)算理論。
這其中,最難的無(wú)疑是如何處理圖像信息、如何模擬人類的認(rèn)知模式。
為了解決這些問(wèn)題,計(jì)算機(jī)視覺(jué)還引入了圖像處理、模式識(shí)別、圖像理解、圖像生成等學(xué)科的知識(shí)。
圖像處理就是把原始圖像轉(zhuǎn)換成計(jì)算機(jī)更容易識(shí)別的圖像;模式識(shí)別,就是計(jì)算機(jī)判斷自己要識(shí)別的是什么和怎么識(shí)別的過(guò)程;圖像理解,就是對(duì)圖像中描述的景物進(jìn)行分析;圖像生成,舉例來(lái)說(shuō)就是當(dāng)圖像的部分信息缺失時(shí),能夠?qū)⑷笔У男畔⒀a(bǔ)上……
這些都是計(jì)算機(jī)視覺(jué)需要借助的學(xué)科技術(shù)。這里面我們要著重講的是模式識(shí)別,它是一個(gè)獨(dú)立的理論體系,具體到計(jì)算機(jī)視覺(jué)領(lǐng)域的應(yīng)用,它表示將計(jì)算機(jī)表示出來(lái)的圖像和一致的類別進(jìn)行匹配的過(guò)程。
有點(diǎn)懂是吧。IT之家為大家通俗解釋一下,所謂“識(shí)別”,就是先認(rèn)識(shí),然后辨別。認(rèn)識(shí)什么?認(rèn)識(shí)的是圖像和從圖像中總結(jié)的目標(biāo)物體的特征。怎么辨別?就是將總結(jié)出來(lái)的特征和自己已經(jīng)掌握的特征庫(kù)進(jìn)行比對(duì),然后才能實(shí)現(xiàn)辨別。
我們?nèi)祟愖R(shí)別一樣物體也是遵循這個(gè)邏輯,先總結(jié)特征,然后比對(duì)。至于前面的“模式”,就有點(diǎn)抽象了,你可以理解為一種規(guī)律,它影響著特征和類型比對(duì)的結(jié)果。
沒(méi)錯(cuò),人臉識(shí)別本質(zhì)上也是這個(gè)過(guò)程。
所以,我們沿著模式識(shí)別的思路,來(lái)看看它的整體過(guò)程:分別為預(yù)處理、特征提取和分類等。我們畫(huà)出如下流程圖:
預(yù)處理是第一步,但是這部分工作可能很多很雜,例如減少圖像中的噪聲干擾、提高清晰度、還有包括圖像濾波、變換、轉(zhuǎn)碼、模數(shù)轉(zhuǎn)化等。
特征提取,就是在預(yù)處理后的圖像中,提取對(duì)識(shí)別有明顯作用的特征,并在這個(gè)過(guò)程中降低模式特征的維數(shù),令其便于處理。這是一個(gè)復(fù)雜的過(guò)程,后面我們講到具體方法時(shí)候會(huì)有體現(xiàn);
分類,就是對(duì)提取到的特征值按照一定的準(zhǔn)則進(jìn)行分類,便于決策。
舉個(gè)例子,計(jì)算機(jī)要識(shí)別出這張照片中的男人,當(dāng)它拿到照片時(shí),可能覺(jué)得畫(huà)面太暗,先提個(gè)亮度,然后又發(fā)現(xiàn)噪點(diǎn)太多,再做個(gè)降噪……一頓操作后感覺(jué)可以了,再將照片轉(zhuǎn)化為數(shù)字信息,這個(gè)過(guò)程是預(yù)處理。
提取出來(lái)的特征值會(huì)進(jìn)入單獨(dú)的特征空間,因?yàn)檫@樣可以更好地識(shí)別和做分類。接下來(lái),就要對(duì)特征空間里的數(shù)據(jù)進(jìn)行分類了,讓它們眼睛歸眼睛,鼻子歸鼻子,頭發(fā)歸頭發(fā)……基于這些分類好的數(shù)據(jù),計(jì)算機(jī)才可以進(jìn)行識(shí)別判斷和決策。
當(dāng)然,為了方便大家理解這個(gè)邏輯過(guò)程,IT之家在這里只是舉例粗略地說(shuō)明,可能不準(zhǔn)確,實(shí)際的步驟也是相當(dāng)復(fù)雜的,還要考慮各種干擾的因素,例如圖像的質(zhì)量不清晰、背景復(fù)雜、圖像光照分布不均勻、目標(biāo)姿勢(shì)角度出現(xiàn)扭曲或者佩戴了頭飾、眼鏡以及張了胡須、化了妝等等各種情況。
還有要說(shuō)明的一點(diǎn)是,這個(gè)模式識(shí)別的系統(tǒng)是需要一個(gè)自我訓(xùn)練、學(xué)習(xí)的過(guò)程的,其中最重要的是對(duì)前面分類錯(cuò)誤率的訓(xùn)練(分類器訓(xùn)練),因?yàn)樵谇懊娴姆诸愔校覀儫o(wú)法保證分類的結(jié)果是100%正確的,但必須控制在一定的錯(cuò)誤率之類,這必須通過(guò)大量的訓(xùn)練樣本來(lái)不斷修正,令錯(cuò)誤率符合要求。
好了,基于以上對(duì)計(jì)算機(jī)視覺(jué)模式識(shí)別的討論,我們就可以給出人臉識(shí)別系統(tǒng)的主要功能模塊了:
可能有小伙伴覺(jué)得上面這個(gè)舉出功能模塊太簡(jiǎn)單了,所以我們?cè)倬_一些,給出下面的邏輯架構(gòu)圖,相信不難理解:
人臉識(shí)別的主流方法
在上面一部分,我們主要介紹了人臉識(shí)別的基本邏輯流程,其實(shí)人臉識(shí)別的基本思想是比較類似的,都是要將圖像中的特征提取出來(lái),轉(zhuǎn)換到一個(gè)合適的子空間里,然后在這個(gè)子空間里衡量類似性或分類學(xué)習(xí)。但問(wèn)題在于,對(duì)客觀世界采用怎樣協(xié)調(diào)統(tǒng)一且有成效的表示法?我們要找到怎樣合適的子空間,怎樣去分類,才能區(qū)分不同類,聚集相似的類別?為解決這些問(wèn)題,衍生出了很多種方法和解決方案。
所以說(shuō),我們所說(shuō)的人臉識(shí)別技術(shù)是籠統(tǒng)的,事實(shí)上,這是一個(gè)很多技術(shù)和方法的集合。
我們不妨依據(jù)上面的邏輯結(jié)構(gòu)圖來(lái)逐步說(shuō)明。
1、預(yù)處理
人臉圖像的預(yù)處理,這一步?jīng)]有太多可說(shuō)的,主要包括消除噪聲、灰度歸一化、幾何校正等,這些操作一般有現(xiàn)成的算法可以實(shí)現(xiàn),屬于比較基本的操作。不過(guò)要說(shuō)明的是,這里主要說(shuō)的是靜態(tài)人臉圖像的預(yù)處理,如果是動(dòng)態(tài)人臉圖像的預(yù)處理,就比較復(fù)雜了,一般是要先將動(dòng)態(tài)人臉圖像分割成一組靜態(tài)人臉圖像,然后對(duì)人臉進(jìn)行邊緣檢測(cè)和定位,在做一系列的處理,這里就不展開(kāi)了。
2、特征提取
圖像特征的提取是比較關(guān)鍵的一步(上文所說(shuō)的模式空間向特征空間的跨越),但對(duì)于圖像處理來(lái)說(shuō)也是比較初級(jí)的一步。目前關(guān)于圖像特征提取的方法有很多,但其實(shí)我們想一想,通常而言圖像的特征還是可以歸類的,例如顏色特征、紋理特征、空間關(guān)系特征、形狀特征等,每一種特征都有匹配的方法,其中有一些比較經(jīng)典、好用的方法,例如HOG特征法,LBP特征法,Haar特征法等,小編當(dāng)然不可能一一講解,所以這里選取其中一種——HOG特征法。
HOG特征也叫方向梯度直方圖,它是由Navneet Dalal和Bill Triggs在2005年的一篇博士論文中提出的。我們簡(jiǎn)單來(lái)看它是怎么進(jìn)行的。
我們以這張照片為例,第一步是要將它變成黑白的照片,因?yàn)樯市畔⒃谶@里對(duì)識(shí)別并沒(méi)有幫助。
在這張黑白照片中,我們從單個(gè)像素看起,觀察它周?chē)南袼兀此峭膫€(gè)方向逐漸變暗的,然后用箭頭表示這個(gè)像素變暗的方向。
如果對(duì)每個(gè)像素執(zhí)行這樣的操作,這樣所有像素都會(huì)被這樣的箭頭取代,它們表示了像素明暗變化的方向。每一個(gè)這樣的箭頭表示明暗梯度。
事實(shí)上,對(duì)于每一個(gè)像素,給定坐標(biāo)系,我們能夠求出它的梯度方向值。計(jì)算的方法比較復(fù)雜,我們不需要了解,只需要知道這一步是為了捕獲目標(biāo)的輪廓信息,同時(shí)進(jìn)一步弱化光照的干擾。
如果是以這樣的方式做提取的話,計(jì)算量會(huì)很大。所以我們會(huì)把圖像分割成8x8像素的小方塊,叫做一個(gè)Cell,然后對(duì)每個(gè)Cell計(jì)算梯度信息,包括梯度的大小和方向。得到的是這個(gè)Cell的9維特征向量。
相信到這里大家有些不懂了。IT之家再為小伙伴們稍微解釋一下,其實(shí)這一步的目的是為每個(gè)Cell構(gòu)建梯度方向直方圖,直方圖就是我們大家熟知的條形統(tǒng)計(jì)圖,這個(gè)直方圖中,X軸是將方向劃分的區(qū)間,Navneet Dalal等人研究表示劃分9個(gè)區(qū)間效果是最好的,如果是180°的方向,每個(gè)區(qū)間就代表20°。y軸表示某個(gè)方向區(qū)間內(nèi)的梯度大小。這樣就等于是每個(gè)Cell的特征描述符。
▲大致就是這個(gè)意思(圖片來(lái)源:加州大學(xué)舊金山分校圖像處理論文)
這里還有一步,就是如果你的圖像受到光照的影響比較大,那么還可以將一定的Cell組成一個(gè)block,例如2x2個(gè)Cell,這樣每個(gè)block上就是36維的特征向量,然后對(duì)這36維特征向量做規(guī)范化(具體怎樣規(guī)范,涉及到高等數(shù)學(xué)的知識(shí),大家也不需要知道)。
如果我們輸入的圖像大小是256x512像素,那么就有32x64=2048個(gè)Cell,有31x63=1953個(gè)block,每個(gè)block有36維向量,那么這個(gè)圖像就有1953x36=70308維向量。這70308維向量就是這個(gè)圖像的HOG特征向量了。
當(dāng)然,上面這些步驟你也可都不了解,你只需要知道,最后原始的圖像被表示成了HOG的形式,如下圖:
然后根據(jù)這個(gè)HOG形式,在我們的庫(kù)中找到與已知的一些HOG樣式中,看起來(lái)最相似的部分。
3、圖像識(shí)別
人臉識(shí)別技術(shù)經(jīng)過(guò)科學(xué)家多年的研究和發(fā)展,已經(jīng)形成了多種研究方向和更多種的研究方法,如果我們梳理一下,主要包括基于幾何特征的方法、基于模板的方法、基于模型的方法以及其他方法。
基于幾何特征的方法是比較早期、傳統(tǒng)的方法了,它主要是研究人臉眼睛、鼻子等器官的形狀和結(jié)構(gòu)關(guān)系的幾何描述,以此作為人臉識(shí)別的重要特征。
基于模板的方法基本思想是拿已有的模板和圖像中同樣大小的區(qū)域去比對(duì),包括基于相關(guān)匹配的方法、特征臉?lè)椒ā⒕€性判別分析方法、神經(jīng)網(wǎng)絡(luò)方法等。
基于模型的方法的方向是對(duì)人臉的顯著特征進(jìn)行特征點(diǎn)定位,然后進(jìn)行人臉的編碼,再利用相應(yīng)的模型進(jìn)行處理實(shí)現(xiàn)人臉識(shí)別,例如隱馬爾柯夫模型,主動(dòng)形狀模型和主動(dòng)外觀模型的方法等。
在人臉識(shí)別領(lǐng)域,有一些比較經(jīng)典的算法,例如特征臉?lè)ǎ‥igenface)、局部二值模式法、Fisherface等,不過(guò)IT之家在這里還是還是覺(jué)得與時(shí)俱進(jìn)比較好,所以選擇一個(gè)目前應(yīng)用比較廣泛且流行的方法作為示例,叫做OpenFace。當(dāng)然,我們不做實(shí)際的測(cè)試,只是通過(guò)它來(lái)了解識(shí)別的原理。
OpenFace屬于基于模型的方法,它是一個(gè)開(kāi)源庫(kù),包含了landmark,head pose,Actionunions,eye gaze等功能,以及訓(xùn)練和檢測(cè)所有源碼的開(kāi)源人臉框架。
在前面的步驟中,IT之家已經(jīng)為大家介紹如何通過(guò)HOG的方法將圖像中人臉的特征數(shù)據(jù)提取出來(lái),也就是成功檢測(cè)到了人臉。
這時(shí)又有一個(gè)問(wèn)題,就是這個(gè)人臉的姿勢(shì)好像不是那么“正”,同樣一個(gè)人,如果她的姿勢(shì),面部的朝向不同,人類仍然能認(rèn)出她來(lái),而計(jì)算機(jī)可能就認(rèn)不出了。
解決這個(gè)問(wèn)題,有一個(gè)辦法,就是檢測(cè)人臉主要特征的特征點(diǎn),然后根據(jù)這些特征點(diǎn)對(duì)人臉做對(duì)齊校準(zhǔn)。這是Vahid Kazemi和Josephine Sullivan在2014年發(fā)明的方法,他們給人臉的重要部分選取68個(gè)特征點(diǎn)(Landmarks),這68個(gè)點(diǎn)的位置是固定的,所以只需要對(duì)系統(tǒng)進(jìn)行一些訓(xùn)練,就能在任何臉部找到這68個(gè)點(diǎn)。
有了這68個(gè)點(diǎn),就可以對(duì)人臉進(jìn)行校正了,主要是通過(guò)仿射變換將原來(lái)比較歪的臉擺正,盡量消除誤差。這里的仿射變換主要還是進(jìn)行一些旋轉(zhuǎn)、放大縮小或輕微的變形,而不是夸張的扭曲,那樣就不能看了。
▲過(guò)程大約是這樣,原來(lái)的臉被進(jìn)行了一定程度的校正(圖片來(lái)源:OpenFace github說(shuō)明頁(yè)面)
這樣我們把原始的人臉圖像以及HOG的特征向量輸入,能夠得到一張姿勢(shì)正確的只含有人臉的圖像。
注意,到這一步我們還不能直接拿這張人臉圖像去進(jìn)行比對(duì),因?yàn)楣ぷ髁刻螅覀円龅氖抢^續(xù)提取特征。
接著,我們將這個(gè)人臉圖像再輸入一個(gè)神經(jīng)網(wǎng)絡(luò)系統(tǒng),讓它為這個(gè)臉部生成128維的向量,也可以說(shuō)是這個(gè)人臉的128個(gè)測(cè)量值,它們可以表示眼睛之間的距離,眼睛和眉毛的距離、耳朵的大小等等。這里只是方便大家理解而舉例,實(shí)際上具體這128維的向量表示了哪些特征,我們不得而知。
當(dāng)然,這一步說(shuō)起來(lái)簡(jiǎn)單,其實(shí)難點(diǎn)在于如何訓(xùn)練這樣的一個(gè)卷積神經(jīng)網(wǎng)絡(luò)。具體的訓(xùn)練方法不是我們需要了解的,但我們可以了解一下訓(xùn)練的思路。訓(xùn)練時(shí)我們可以輸入一個(gè)人臉圖像的向量表示、同一人臉不同姿態(tài)的向量表示和另一人臉的向量表示,反復(fù)進(jìn)行類似的操作,并不斷調(diào)整,調(diào)整的目標(biāo)是讓同一類對(duì)應(yīng)的向量表示盡可能接近,其實(shí)也就是同一個(gè)人的向量表示盡可能距離較近,同理,不同類別的向量表示距離盡可能遠(yuǎn)。至于人工智能神經(jīng)網(wǎng)絡(luò)訓(xùn)練的基本原理,大家可以查看IT之家之前發(fā)布的《AI不是科幻電影里的洪水猛獸,而是被慢慢變革的生活方式》這篇文章。
其實(shí)訓(xùn)練的思路也很好理解,因?yàn)橐粋€(gè)人的人臉不管姿態(tài)怎么變,在一段時(shí)間內(nèi)有些東西是固定的,比如眼睛間的距離、耳朵的大小、鼻子的長(zhǎng)度等。
在得到這128個(gè)測(cè)量值后,最后一步就簡(jiǎn)單了,就是將這128個(gè)測(cè)量值和我們訓(xùn)練、測(cè)試過(guò)的所有面部數(shù)據(jù)做比對(duì),測(cè)量值最接近的,就是我們要識(shí)別的那個(gè)人了。
這樣就可以完成一次人臉的識(shí)別。
總結(jié)
人臉識(shí)別技術(shù)經(jīng)過(guò)70多年的發(fā)展,到今天已經(jīng)發(fā)展成為一門(mén)以計(jì)算機(jī)視覺(jué)數(shù)字信息處理為中心,糅合信息安全學(xué)、語(yǔ)言學(xué)、神經(jīng)學(xué)、物理學(xué)、AI等多學(xué)科交合的綜合性技術(shù)學(xué)科,內(nèi)涵已極為豐富,并且發(fā)展快速。而IT之家在本文試圖為大家講解的,只是人臉識(shí)別最基礎(chǔ)和通俗的原理以及相對(duì)單一的用例分析,顯然無(wú)法涵蓋人臉識(shí)別領(lǐng)域所有的內(nèi)容,只是希望借此對(duì)大家理解、認(rèn)識(shí)如今我們已經(jīng)習(xí)慣使用的人臉識(shí)別功能有所幫助。
國(guó)際調(diào)研機(jī)構(gòu)Gen Market Insights發(fā)布的數(shù)據(jù)顯示,到2025年底全球人臉識(shí)別設(shè)備市場(chǎng)價(jià)值將達(dá)到71.7億美元,智能手機(jī)上對(duì)人臉識(shí)別技術(shù)的廣泛應(yīng)用,只是為我們了解這項(xiàng)技術(shù)提供了一個(gè)契機(jī),未來(lái),隨著5G萬(wàn)物互聯(lián)時(shí)代的到來(lái),智能硬件市場(chǎng)將得到極大擴(kuò)展,那才是人臉識(shí)別技術(shù)真正大展身手的天地。
嗯,不錯(cuò),期待這個(gè)時(shí)代早日到來(lái),到時(shí)候小編這張盛世美顏終于能做點(diǎn)有意義的事情了,也算不負(fù)父母恩澤。
本文參考資料:
沈理、劉翼光,熊志勇,2015-11-16,《人臉識(shí)別原理及算法:動(dòng)態(tài)人臉識(shí)別系統(tǒng)研究》
CSU985,CSDN,2018-10-06,《圖像特征提取總結(jié)》
人工智障v,簡(jiǎn)書(shū),2018-07-30,《HOG特征——行人識(shí)別》
laolaonuonuo,CSDN,2018-03-10,《人臉識(shí)別主要算法》
大數(shù)據(jù)v,CSDN,2018-08-23,《深度干貨!一文讀懂人臉識(shí)別技術(shù)(建議收藏)》
leon1741,CSDN,2018-08-02,《深入淺出人臉識(shí)別原理》
zouxy09,CSDN,2015-04-25,《人臉識(shí)別之特征臉?lè)椒ǎ‥igenface)》
csdn研發(fā)技術(shù),CSDN,2018-01-26,《看OpenFace如何做到精準(zhǔn)人臉識(shí)別