人臉辨識(face recognition)是機器學習領域中最受歡迎的技術之一。最近,該技術的使用案例已經從政府安全系統的特定監視應用擴展到多個產業的更廣泛應用,例如使用者的辨識和認證、消費者體驗、健康和廣告。事實上,根據MarketsAndMarkets,到2022年,臉部辨識(facial recognition)市場預計將成長到77.6億美元,複合年成長率(CAGR)為13.9%。

本文討論eInfochips工程師為存取管理應用成功開發的人臉辨識演算法實務。在這樣的系統中有兩個階段:人臉檢測;然後是人臉辨識。一開始,臉部的檢測是在影像上使用Haar級聯分類器(Haar Cascade Classifier),結合臉部主要的裁剪部份。

使用Haar級聯分級器進行眼睛檢測,形成幾何臉部模型;而鼻子的檢測則被用作眼睛檢測的再確認機制。之後,從大量臉部影像中擷取「定向梯度直方圖」(Histogram of Oriented Gradients;HOG)特徵,作為辨識機制的一部份。然後將這些HOG特徵一併標記為某一個人臉/使用者,並且訓練支援向量機(SVM)模型以預測饋送到系統中的臉部。

可能的用例和環境條件如下:

  • 使用人臉辨識進行存取管理。
  • 近距離場景,攝影機與待辨識人員臉部之間的距離為5到6英呎。
  • 成功辨識僅限於15個自由度(℃)以內的臉部俯仰翻轉、左右翻轉和平面旋轉姿態。

就像任何其他形式的生物辨識一樣,人臉辨識需要採集、辨識、提取必要(特徵)資訊的臉部樣本,並儲存以供辨識。整個人臉辨識解決方案分為以下幾個主要模組:

  1. 臉部擷取
  2. 臉部訓練
  3. 臉部辨識

臉部檢測是在人臉辨識過程中執行任何操作的基本步驟。基於Haar特徵的級聯分類器是一種廣泛使用的臉部檢測機制。為了訓練分類器來檢測臉部,要形成兩組包含眾多影像的影像集:一組包含具有臉部的影像,另一組則包含沒有臉部的影像。然後使用這些影像產生分類器模型。透過從正像(positive image)和負像(negative image)中擷取Haar特徵來產生分類器。

Haar級聯分類器如何運作?

Haar分類器主要根據Paul Viola和Michael Jones在其論文《使用增強級聯的簡單特徵進行快速物件檢測》(Rapid object detection using boosted cascade of simple features)中提出的物件檢測架構。使用下圖所示的每個特徵訓練單個分類器。然而,單個分類器本身無法實現高精度,因此多個這樣的分類器形成級聯。所形成的最終分類器是弱分類器的加權之和。使用此方法,分類器可提供95%以上的分類準確度。

eInfochips_TA31P1 圖1:Haar特徵(來源:opencv.org)

在圖2的示例中,影像作為卷積核心以擷取特徵,其中每個特徵是透過從白色矩形下方畫素總和中減去黑色矩形下方畫素總和所取得的值。

eInfochips_TA31P2 圖2:Haar特徵示例(來源:opencv.org)

上圖提供了兩個特徵示例:邊緣和線條。邊緣特徵有效地映射臉部屬性;即眼睛區域比臉部其它任何部份更暗。線條特徵映射了鼻子屬性;即臉部的垂直鼻線比兩側更亮。因為,這些特徵中的任一個都無法準確對圖案進行分類,所以將它們做成級聯;因此,這就是基於Haar特徵的級聯分類器名稱由來。

現在,讓我們詳細考慮臉部辨識的三個主要模組,如下所述。

臉部擷取

人臉辨識的第一步是收集臉部樣本。基本上包括以下三個基本步驟:

  1. 檢測臉部。
  2. 裁剪臉部的主要部份。
  3. 儲存臉部影像。

如同前一節中所討論的,臉部檢測主要使用基於Haar特徵的級聯分類器來實現。通常,臉部辨識的準確性高度依賴於樣本影像的品質和種類。針對相同臉部捕捉具有多個臉部表情的多個影像,可獲得各種樣本影像。

eInfochips_TA31P3 圖3:捕捉臉部樣本(來源:eInfochips)

一旦檢測到臉部,就可以將其裁剪並儲存為樣本影像以供分析。廣泛地使用矩形來框定影像中的區域,引入了裁剪頭部影像的多餘部份。因此,使用Haar級聯分類器獲得的矩形限定臉部特徵中包含了無關緊要的資料,例如頸部、耳朵、頭髮等周圍的區域。使用幾何臉部模型可緩解這一情況,該幾何臉部模型由各種臉部特徵(包括眼睛、鼻子和嘴巴)之間的幾何關係形成。

幾何臉部模型如何運作?為了形成幾何臉部模型,通常將一雙眼睛視為影像內定位的第一特徵。理想情況下,任何特徵都可用於作為形成臉部模型的起點,但從眼睛的位置開始產生具有更高精度的臉部模型。在某些情況下,鼻子的位置用於確定臉部模型。然而,眼睛通常被認為是主要的起始特徵,而鼻子則被認為是眼睛未定位或部份閉塞(occluded)情況下的次要起始特徵。

使用眼睛的臉部模型:從兩隻眼睛中心的座標開始,使用以下等式獲得臉部的必要部份(特徵):

eInfochips_TA31P4 圖4:使用眼睛的幾何臉部模型(來源:eInfochips)

使用鼻子的臉部模型:使用鼻子中心的座標,利用以下等式獲得兩隻眼睛中心的座標。此外,使用等式(eq.) 1、2和3 (如上所述)獲得臉部必要部份的裁剪。

eInfochips_TA31P5 圖5:使用鼻子的幾何臉部模型(來源:eInfochips)

為了提高辨識準確度,在臉部捕捉過程中丟棄尺寸小於256x256的臉部剪裁區域。此外,臉部區域相對於光源方向有顯著偏差。為了減輕這種影響,在裁剪的臉部影像實施直方圖等化。這降低了由於不均勻照明而在臉部形成的不對稱性。

臉部訓練

在此階段,從與每個人相關聯的影像中收集特徵。之後,對來自所有儲存影像的完整資訊集(每人作為單個SVM標籤予以隔離)進行訓練以產生SVM模型。

什麼是支持向量機(SVM)?支持向量機(SVM)是受監督的機器學習模型,用於對資料進行劃分和分類。

eInfochips_TA31P6 圖6:臉部訓練方塊圖(來源:eInfochips)

SVM廣泛用於諸如臉部檢測、影像分類、手寫辨識等應用。可以將SVM模型視為使用超平面隔離多個類的點空間。

什麼是定向梯度直方圖(HOG)?HOG是通常用於物件檢測的特徵描述符號,在行人檢測應用上也廣為人知。HOG依賴於影像內物件的屬性而擁有強度梯度或邊緣方向的分佈。在每個區塊的影像內計算梯度。區塊被認為是畫素網格,其中梯度由區塊內畫素強度的變化幅度和方向構成。

eInfochips_TA31P7 圖7:具HOG特徵的臉部樣本(來源:eInfochips)

在當前示例中,個人的所有臉部樣本影像被饋送到特徵描述符號擷取演算法;即HOG。描述符號是影像的每個畫素所產生的梯度向量。每個畫素的梯度由大小和方向組成,使用以下公式計算:

eInfochips_TA31T1

在當前示例中,Gx和Gy分別是畫素強度變化的水平和垂直分量。大小為128x144的視窗用於臉部影像,因為它與人臉的一般寬高比相匹配。描述符號是在具有8×8維度的區塊上計算的。在8×8區塊上每個畫素的這些描述符號值被量化為9個區間(bin),其中每個區間表示在該區間內梯度和值的方向角,其為具有相同角度的所有畫素強度總和。此外,將直方圖在16×16區塊的大小上統一處理,這意味著將4個8×8區塊統一以最小化光條件的影響。該機制減輕了由於光變化導致的精度降低。使用針對多個臉部的幾個HOG向量來訓練SVM模型。

臉部辨識

視訊序列中的臉部辨識分為三個主要任務:臉部檢測、臉部預測和臉部追蹤。臉部捕捉程式執行的任務也在臉部辨識期間執行。為了辨識所獲得的臉部,必須擷取臉部的HOG特徵向量。然後在SVM模型中使用該向量來確定具有每個標籤的輸入向量之匹配分數。SVM返回具有最高分數的標籤,這表示對訓練臉部資料內最接近匹配的置信度。

eInfochips_TA31P8 圖8:臉部辨識流程方塊圖(來源:eInfochips)

計算匹配分數的任務需要大量的運算。因此,一旦被檢測和辨識到,就需要追蹤影像中的標記臉部,以減少未來訊框中的運算量,直到臉部最終從視訊中消失。在所有可用的追蹤器中,使用Camshift追蹤演算法可產生最佳的臉部辨識結果。

範例應用

本文採用的實際範例應用是在視訊管理系統中使用臉部辨識存取管理和分析。在該計劃中,艾睿(Arrow)旗下子公司eInfochips的一支團隊設計並實施了一個帶有臉部辨識功能的視訊管理系統,用於檢測和辨識多個IP攝影機饋送的人臉。該設置部署在製造業中,其中攝影機安裝在多個建築物中的不同位置,並且使用局域網路(LAN)互連。

該團隊為該網路開發並安裝了完整的視訊管理解決方案,為安全部門賦予視訊串流、透過視訊分析提供警報以及訪客身份驗證。該視訊管理系統中的臉部辨識服務用於辨識來自攝影機即時饋送的人臉,並產生系統事件,以觸發員工和訪客到場所的認證過程。此外,這些事件包括諸如辨識時間、人名、人在地圖上的位置等細節。然後使用視訊管理系統內的使用者介面用戶端分析來自資料庫的這些事件。

結論

在現代監控和安全應用方面,臉部辨識扮演著非常重要的作用。透過應用本文中描述的方法,可以獲得準確的演算法和高品質的臉部辨識結果。此外,藉助HOG和SVM模型,即使在包含複雜背景的場景中,也可以在辨識人臉和分析臉部特徵方面實現高性能。