機器視覺“面部識別”,這是一個熱門話題!幾乎每周,它就以一種或另一種方式出現在新聞上。但是您是否想知道這項技術如何工作?直到現在它才成為如此熱門的話題,而十年前卻沒有多少人關心它呢?
在這篇文章中,我希望揭開面部識別的神秘面紗,并以清晰的方式介紹其一般工作原理。我特別想解釋一下為什么在過去的5年左右的時間里,人臉識別的性能有了巨大的提高。
機器視覺我將按照大多數面部識別技術中采取的步驟來分解這篇文章,并逐一討論每個步驟:
1.人臉檢測和對齊
任何(的)面部識別技術的步都是檢測圖像/視頻中面部的位置。此步驟稱為人臉檢測,不應與實際的人臉識別相混淆。一般來說,人臉檢測對于人臉識別而言是一項更為簡單的任務,并且在許多方面都被認為是已解決的問題。
有很多人臉檢測算法。Viola-Jones算法曾經是一種流行的算法,尤其是在CPU和內存已不再是當今的時代,因為它具有令人印象深刻的速度。然而,此后已經開發了更加精確的算法。本文[2]在各種條件下對其中的一些進行了基準測試,“ Tiny Faces Detector[3]”( 于2017年在的計算機視覺和模式識別會議上發布[4],可在此處下載代碼[5])排在:
人臉檢測由Tiny Face Detector執行。(圖片取自論文網站)
人臉檢測算法的工作原理超出了本文的范圍。在這里,我想著重于實際的面部識別,并假設面部已經位于給定的圖像上。
一旦檢測到臉部,下一步(常規)是旋轉和縮放臉部,以使其主要特征與其他檢測到的臉部特征或多或少地位于同一位置。理想情況下,您希望臉部以嘴唇直接注視著您,并且眼睛的位置與地面平行。臉部對齊是非常重要的一步,非常類似于清理數據(對于那些在數據分析中起作用的對象)。這使得進一步處理變得更容易執行。
2.人臉表示
當我們擁有一張干凈的臉部圖片時,下一步就是提取它的表示形式。機器的表示形式(通常也稱為 簽名)是事物的描述/摘要,其形式可以被其處理和分析。例如,在處理面部時,通常將面部表示為數字向量。解釋方法是一個簡單的例子。
假設我們選擇用二維向量表示一個面部:個維度表示眼睛之間的距離,第二個維度表示鼻子的寬度。我們有兩個人,愛麗絲和鮑勃,以及他們每張面孔的照片。我們檢測并對齊這些照片中的兩個臉部,得出愛麗絲的眼睛之間的距離為12像素,鮑勃的眼睛之間的距離為15像素。同樣,愛麗絲的鼻子的寬度是4像素,鮑勃的鼻子的寬度是7像素。因此,我們具有以下兩種表示形式:
因此,例如,愛麗絲的臉由矢量(12,4)表示–個維度存儲眼睛之間的距離,第二個維度存儲鼻子的寬度。Bob的臉由矢量(15,7)表示。
當然,一張人的照片不足以使機器獲得對人臉的可靠表現/理解。我們需要更多示例。因此,假設我們抓取了每個人的3張照片,并從每個人中提取了代表。我們可能會提出以下向量列表(請記住此列表,因為在稍后的文章中我將使用這些數字來解釋更多概念):
對于機器而言,用這樣的數字表示面孔比處理原始圖片要容易得多–機器與我們不同!
現在,在上面的示例中,我們使用了兩個維度來描述一張臉。我們可以輕松地增加表示的維數以包含更多功能。例如,第三維可以代表眼睛的顏色,第四維可以代表皮膚的顏色,依此類推。一般而言,我們選擇用來描述每個面孔的尺寸越多,我們的描述就越精確。并且我們的描述越精確,我們的機器就越容易執行面部識別。在當今的面部識別算法中,看到具有128多個維度的矢量并不少見。
機器視覺讓我們談談制圖表達中使用的面部特征。在上面的示例中,我選擇了眼睛之間的距離和鼻子的寬度作為特征,這是一個非常粗糙的示例。實際上,的面部識別算法使用“低級”功能。例如,在1990年代后期,人臉識別算法被發布,該算法考慮了臉部每個像素周圍的梯度方向(使用 局部二進制模式(LBP)[6])。也就是說,對每個像素進行分析,以查看與相鄰像素相比,它的亮度更高或更暗。因此,像素的亮度/暗度是用來創建面部表示的特征。(您會看到它是如何工作的:每個像素位置的亮度/暗度得分相對不同,具體取決于人的臉部結構)。
也已經提出了針對面部識別算法的其他較低級特征。有些解決方案實際上使用了混合方法,即它們使用了多個低層功能。2018年有一篇有趣的論文(M. Wang和W. Deng,“ Deep Face Recognition:A Survey [7]”,arXiv預印本)總結了面部識別算法的歷史。這張紙上的圖片顯示了選擇用于面部識別的功能的演變:
請注意,根據所使用的表示類型,面部識別算法(在LFW數據集上標有基準)的準確性如何隨時間增加?還注意到上面描述的LBP算法在1990年代后期問世嗎?它的準確性得分約為70%。
您在圖表的最上方看到了什么?當然,深度學習!深度學習總體上改變了計算機視覺和AI的面貌。但是,它如何使面部識別技術發生革命性的變化,以至于如今它已經達到了人類水平的精度?關鍵區別在于,無需機器手動選擇功能(也稱為“手工功能”,即當您說:“讓我們使用像素亮度作為功能”時),而是讓機器決定應使用哪些功能。換句話說,機器會自己生成表示。您建立一個神經網絡并對其進行訓練,以為您提供描述面孔的向量。您可以通過該網絡放置任何面孔,最后將獲得引導。
但是向量中的每個維代表什么?好吧,我們真的不知道! 我們將必須逐步分解用于查看其內部運行情況的神經網絡。 由Facebook開發的算法DeepFace[8](您可以在上圖中看到它)看到了128個維的向量。但是考慮到所使用的神經網絡具有1.2億個參數,將其分解以查看向量中的每個維究竟代表什么可能是不可行的。但是,重要的是該策略有效!而且效果非常好。
3.模型訓練
現在是時候進行下一步:模型訓練。這是我們在一個人的面部表情列表上訓練分類器(一種對事物進行分類的算法)的步驟,以便能夠識別這些人的面部表情的更多示例。
讓我們與朋友愛麗絲(Alice)和鮑勃(Bob)一起回到示例中來解釋這一步驟。還記得我們之前提出的六張面孔矢量表嗎?
如果數據中存在兩個以上的集群(即,我們在數據中與兩個以上的人打交道),則分類器將需要能夠處理此問題。然后,如果我們在更高的維度(例如128+)上工作,則算法也需要在這些維度上運行。
4.識別
機器視覺識別是面部識別過程中的步。給定一張新的臉部圖像,將為其生成一個表示,分類算法將提供一個分數,說明其與最近的集群的接近程度。如果分數足夠高(根據某個閾值),則面部將被標記為已識別/已識別。
因此,在我們的示例案例中,假設出現了一張新照片,上面有一張臉。我們將首先生成它的表示形式,例如:(13,4)。分類算法將采用此向量,并查看其的群集–在這種情況下,它將是愛麗絲的群集。由于此數據點非常接近聚類,因此還將生成較高的識別分數。下圖說明了此示例:
結論
在這篇文章中,我描述了魯棒的面部識別算法所采取的主要步驟。然后描述每個步驟,并使用示例用例來說明這些步驟背后的概念。面部識別技術的重大突破出現在2014年,當時深度學習被用于生成面部表情,而不是手工特征技術。結果,面部識別算法現在可以達到接近人類水平的精度。
關鍵詞:機器視覺
上一篇:供應ADOS氣體監測報警器
全年征稿/資訊合作
聯系郵箱:1271141964@qq.com
免責聲明
- 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://m.xashilian.com。違反者本網將追究相關法律責任。
- 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
- 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
- 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
CIEME2025第二十三屆中國國際裝備制造業博覽會
展會城市:沈陽市展會時間:2025-09-01