機(jī)器視覺(jué)“面部識(shí)別”,這是一個(gè)熱門(mén)話(huà)題!幾乎每周,它就以一種或另一種方式出現(xiàn)在新聞上。但是您是否想知道這項(xiàng)技術(shù)如何工作?直到現(xiàn)在它才成為如此熱門(mén)的話(huà)題,而十年前卻沒(méi)有多少人關(guān)心它呢?
在這篇文章中,我希望揭開(kāi)面部識(shí)別的神秘面紗,并以清晰的方式介紹其一般工作原理。我特別想解釋一下為什么在過(guò)去的5年左右的時(shí)間里,人臉識(shí)別的性能有了巨大的提高。
機(jī)器視覺(jué)我將按照大多數(shù)面部識(shí)別技術(shù)中采取的步驟來(lái)分解這篇文章,并逐一討論每個(gè)步驟:
1.人臉檢測(cè)和對(duì)齊
任何(的)面部識(shí)別技術(shù)的步都是檢測(cè)圖像/視頻中面部的位置。此步驟稱(chēng)為人臉檢測(cè),不應(yīng)與實(shí)際的人臉識(shí)別相混淆。一般來(lái)說(shuō),人臉檢測(cè)對(duì)于人臉識(shí)別而言是一項(xiàng)更為簡(jiǎn)單的任務(wù),并且在許多方面都被認(rèn)為是已解決的問(wèn)題。
有很多人臉檢測(cè)算法。Viola-Jones算法曾經(jīng)是一種流行的算法,尤其是在CPU和內(nèi)存已不再是當(dāng)今的時(shí)代,因?yàn)樗哂辛钊擞∠笊羁痰乃俣?。然而,此后已?jīng)開(kāi)發(fā)了更加精確的算法。本文[2]在各種條件下對(duì)其中的一些進(jìn)行了基準(zhǔn)測(cè)試,“ Tiny Faces Detector[3]”( 于2017年在的計(jì)算機(jī)視覺(jué)和模式識(shí)別會(huì)議上發(fā)布[4],可在此處下載代碼[5])排在:
人臉檢測(cè)由Tiny Face Detector執(zhí)行。(圖片取自論文網(wǎng)站)
人臉檢測(cè)算法的工作原理超出了本文的范圍。在這里,我想著重于實(shí)際的面部識(shí)別,并假設(shè)面部已經(jīng)位于給定的圖像上。
一旦檢測(cè)到臉部,下一步(常規(guī))是旋轉(zhuǎn)和縮放臉部,以使其主要特征與其他檢測(cè)到的臉部特征或多或少地位于同一位置。理想情況下,您希望臉部以嘴唇直接注視著您,并且眼睛的位置與地面平行。臉部對(duì)齊是非常重要的一步,非常類(lèi)似于清理數(shù)據(jù)(對(duì)于那些在數(shù)據(jù)分析中起作用的對(duì)象)。這使得進(jìn)一步處理變得更容易執(zhí)行。
2.人臉表示
當(dāng)我們擁有一張干凈的臉部圖片時(shí),下一步就是提取它的表示形式。機(jī)器的表示形式(通常也稱(chēng)為 簽名)是事物的描述/摘要,其形式可以被其處理和分析。例如,在處理面部時(shí),通常將面部表示為數(shù)字向量。解釋方法是一個(gè)簡(jiǎn)單的例子。
假設(shè)我們選擇用二維向量表示一個(gè)面部:個(gè)維度表示眼睛之間的距離,第二個(gè)維度表示鼻子的寬度。我們有兩個(gè)人,愛(ài)麗絲和鮑勃,以及他們每張面孔的照片。我們檢測(cè)并對(duì)齊這些照片中的兩個(gè)臉部,得出愛(ài)麗絲的眼睛之間的距離為12像素,鮑勃的眼睛之間的距離為15像素。同樣,愛(ài)麗絲的鼻子的寬度是4像素,鮑勃的鼻子的寬度是7像素。因此,我們具有以下兩種表示形式:
因此,例如,愛(ài)麗絲的臉由矢量(12,4)表示–個(gè)維度存儲(chǔ)眼睛之間的距離,第二個(gè)維度存儲(chǔ)鼻子的寬度。Bob的臉由矢量(15,7)表示。
當(dāng)然,一張人的照片不足以使機(jī)器獲得對(duì)人臉的可靠表現(xiàn)/理解。我們需要更多示例。因此,假設(shè)我們抓取了每個(gè)人的3張照片,并從每個(gè)人中提取了代表。我們可能會(huì)提出以下向量列表(請(qǐng)記住此列表,因?yàn)樵谏院蟮奈恼轮形覍⑹褂眠@些數(shù)字來(lái)解釋更多概念):
對(duì)于機(jī)器而言,用這樣的數(shù)字表示面孔比處理原始圖片要容易得多–機(jī)器與我們不同!
現(xiàn)在,在上面的示例中,我們使用了兩個(gè)維度來(lái)描述一張臉。我們可以輕松地增加表示的維數(shù)以包含更多功能。例如,第三維可以代表眼睛的顏色,第四維可以代表皮膚的顏色,依此類(lèi)推。一般而言,我們選擇用來(lái)描述每個(gè)面孔的尺寸越多,我們的描述就越精確。并且我們的描述越精確,我們的機(jī)器就越容易執(zhí)行面部識(shí)別。在當(dāng)今的面部識(shí)別算法中,看到具有128多個(gè)維度的矢量并不少見(jiàn)。
機(jī)器視覺(jué)讓我們談?wù)勚茍D表達(dá)中使用的面部特征。在上面的示例中,我選擇了眼睛之間的距離和鼻子的寬度作為特征,這是一個(gè)非常粗糙的示例。實(shí)際上,的面部識(shí)別算法使用“低級(jí)”功能。例如,在1990年代后期,人臉識(shí)別算法被發(fā)布,該算法考慮了臉部每個(gè)像素周?chē)奶荻确较?使用 局部二進(jìn)制模式(LBP)[6])。也就是說(shuō),對(duì)每個(gè)像素進(jìn)行分析,以查看與相鄰像素相比,它的亮度更高或更暗。因此,像素的亮度/暗度是用來(lái)創(chuàng)建面部表示的特征。(您會(huì)看到它是如何工作的:每個(gè)像素位置的亮度/暗度得分相對(duì)不同,具體取決于人的臉部結(jié)構(gòu))。
也已經(jīng)提出了針對(duì)面部識(shí)別算法的其他較低級(jí)特征。有些解決方案實(shí)際上使用了混合方法,即它們使用了多個(gè)低層功能。2018年有一篇有趣的論文(M. Wang和W. Deng,“ Deep Face Recognition:A Survey [7]”,arXiv預(yù)印本)總結(jié)了面部識(shí)別算法的歷史。這張紙上的圖片顯示了選擇用于面部識(shí)別的功能的演變:
請(qǐng)注意,根據(jù)所使用的表示類(lèi)型,面部識(shí)別算法(在LFW數(shù)據(jù)集上標(biāo)有基準(zhǔn))的準(zhǔn)確性如何隨時(shí)間增加?還注意到上面描述的LBP算法在1990年代后期問(wèn)世嗎?它的準(zhǔn)確性得分約為70%。
您在圖表的最上方看到了什么?當(dāng)然,深度學(xué)習(xí)!深度學(xué)習(xí)總體上改變了計(jì)算機(jī)視覺(jué)和AI的面貌。但是,它如何使面部識(shí)別技術(shù)發(fā)生革命性的變化,以至于如今它已經(jīng)達(dá)到了人類(lèi)水平的精度?關(guān)鍵區(qū)別在于,無(wú)需機(jī)器手動(dòng)選擇功能(也稱(chēng)為“手工功能”,即當(dāng)您說(shuō):“讓我們使用像素亮度作為功能”時(shí)),而是讓機(jī)器決定應(yīng)使用哪些功能。換句話(huà)說(shuō),機(jī)器會(huì)自己生成表示。您建立一個(gè)神經(jīng)網(wǎng)絡(luò)并對(duì)其進(jìn)行訓(xùn)練,以為您提供描述面孔的向量。您可以通過(guò)該網(wǎng)絡(luò)放置任何面孔,最后將獲得引導(dǎo)。
但是向量中的每個(gè)維代表什么?好吧,我們真的不知道! 我們將必須逐步分解用于查看其內(nèi)部運(yùn)行情況的神經(jīng)網(wǎng)絡(luò)。 由Facebook開(kāi)發(fā)的算法DeepFace[8](您可以在上圖中看到它)看到了128個(gè)維的向量。但是考慮到所使用的神經(jīng)網(wǎng)絡(luò)具有1.2億個(gè)參數(shù),將其分解以查看向量中的每個(gè)維究竟代表什么可能是不可行的。但是,重要的是該策略有效!而且效果非常好。
3.模型訓(xùn)練
現(xiàn)在是時(shí)候進(jìn)行下一步:模型訓(xùn)練。這是我們在一個(gè)人的面部表情列表上訓(xùn)練分類(lèi)器(一種對(duì)事物進(jìn)行分類(lèi)的算法)的步驟,以便能夠識(shí)別這些人的面部表情的更多示例。
讓我們與朋友愛(ài)麗絲(Alice)和鮑勃(Bob)一起回到示例中來(lái)解釋這一步驟。還記得我們之前提出的六張面孔矢量表嗎?
如果數(shù)據(jù)中存在兩個(gè)以上的集群(即,我們?cè)跀?shù)據(jù)中與兩個(gè)以上的人打交道),則分類(lèi)器將需要能夠處理此問(wèn)題。然后,如果我們?cè)诟叩木S度(例如128+)上工作,則算法也需要在這些維度上運(yùn)行。
4.識(shí)別
機(jī)器視覺(jué)識(shí)別是面部識(shí)別過(guò)程中的步。給定一張新的臉部圖像,將為其生成一個(gè)表示,分類(lèi)算法將提供一個(gè)分?jǐn)?shù),說(shuō)明其與最近的集群的接近程度。如果分?jǐn)?shù)足夠高(根據(jù)某個(gè)閾值),則面部將被標(biāo)記為已識(shí)別/已識(shí)別。
因此,在我們的示例案例中,假設(shè)出現(xiàn)了一張新照片,上面有一張臉。我們將首先生成它的表示形式,例如:(13,4)。分類(lèi)算法將采用此向量,并查看其的群集–在這種情況下,它將是愛(ài)麗絲的群集。由于此數(shù)據(jù)點(diǎn)非常接近聚類(lèi),因此還將生成較高的識(shí)別分?jǐn)?shù)。下圖說(shuō)明了此示例:
結(jié)論
在這篇文章中,我描述了魯棒的面部識(shí)別算法所采取的主要步驟。然后描述每個(gè)步驟,并使用示例用例來(lái)說(shuō)明這些步驟背后的概念。面部識(shí)別技術(shù)的重大突破出現(xiàn)在2014年,當(dāng)時(shí)深度學(xué)習(xí)被用于生成面部表情,而不是手工特征技術(shù)。結(jié)果,面部識(shí)別算法現(xiàn)在可以達(dá)到接近人類(lèi)水平的精度。
2025第十一屆中國(guó)國(guó)際機(jī)電產(chǎn)品交易會(huì) 暨先進(jìn)制造業(yè)博覽會(huì)
展會(huì)城市:合肥市展會(huì)時(shí)間:2025-09-20