很多朋友都有涉及到這方面的項目,那么人臉識別,到底是什么?
1、人臉檢測
“人臉檢測(FaceDetection)”是檢測出圖像中人臉所在位置的一項技術。
人臉檢測算法的輸入是一張圖片,輸出是人臉框坐標序列(0個人臉框或1個人臉框或多個人臉框)。一般情況下,輸出的人臉坐標框為一個正朝上的正方形,但也有一些人臉檢測技術輸出的是正朝上的矩形,或者是帶旋轉方向的矩形。
常見的人臉檢測算法基本是一個“掃描”加“判別”的過程,即算法在圖像范圍內掃描,再逐個判定候選區域是否是人臉的過程。因此人臉檢測算法的計算速度會跟圖像尺寸、圖像內容相關。開發過程中,我們可以通過設置“輸入圖像尺寸”、或“最小臉尺寸限制”、或“人臉數量上限”的方式來加速算法。
2、人臉配準
“人臉配準(FaceAlignment)”是定位出人臉上五官關鍵點坐標的一項技術。
人臉配準算法的輸入是“一張人臉圖片”加“人臉坐標框”,輸出五官關鍵點的坐標序列。五官關鍵點的數量是預先設定好的一個固定數值,可以根據不同的語義來定義(常見的有5點、68點、90點等等)。
當前效果的較好的一些人臉配準技術,基本通過深度學習框架實現,這些***都是基于人臉檢測的坐標框,按某種事先設定規則將人臉區域扣取出來,縮放的固定尺寸,然后進行關鍵點位置的計算。因此,若不計入圖像縮放過程的耗時,人臉配準算法是可以計算量固定的過程。另外,相對于人臉檢測,或者是后面將提到的人臉提特征過程,人臉配準算法的計算耗時都要少很多。
3、人臉屬性識別
“人臉屬性識別(FaceAttribute)”是識別出人臉的性別、年齡、姿態、表情等屬性值的一項技術。
一般的人臉屬性識別算法的輸入是“一張人臉圖”和“人臉五官關鍵點坐標”,輸出是人臉相應的屬性值。人臉屬性識別算法一般會根據人臉五官關鍵點坐標將人臉對齊(旋轉、縮放、扣取等操作后,將人臉調整到預定的大小和形態),然后進行屬性分析。
常規的人臉屬性識別算法識別每一個人臉屬性時都是一個獨立的過程,即人臉屬性識別只是對一類算法的統稱,性別識別、年齡估計、姿態估計、表情識別都是相互獨立的算法。但的一些基于深度學習的人臉屬性識別也具有一個算法同時輸入性別、年齡、姿態等屬性值的能力。
4、以在基本保證算法效果的前提下,將模型大小和運算速度優化到移動端可用的狀態。
5、人臉比對(人臉驗證、人臉識別、人臉檢索、人臉聚類)
“人臉比對(FaceCompare)”是衡量兩個人臉之間相似度的算法
人臉比對算法的輸入是兩個人臉特征(注:人臉特征由前面的人臉提特征算法獲得),輸出是兩個特征之間的相似度。人臉驗證、人臉識別、人臉檢索都是在人臉比對的基礎上加一些策略來實現。相對人臉提特征過程,單次的人臉比對耗時極短,幾乎可以忽略。
基于人臉比對可衍生出人臉驗證(FaceVerification)、人臉識別(FaceRecognition)、人臉檢索(FaceRetrieval)、人臉聚類(FaceCluster)等算法。
6、人臉驗證
“人臉驗證(FaceVerification)”是判定兩個人臉圖是否為同一人的算法。
它的輸入是兩個人臉特征,通過人臉比對獲得兩個人臉特征的相似度,通過與預設的閾值比較來驗證這兩個人臉特征是否屬于同一人(即相似度大于閾值,為同一人;小于閾值為不同)。
7、人臉識別
“人臉識別(FaceRecognition)”是識別出輸入人臉圖對應身份的算法。
它的輸入一個人臉特征,通過和注冊在庫中N個身份對應的特征進行逐個比對,找出“一個”與輸入特征相似度較高的特征。將這個較高相似度值和預設的閾值相比較,如果大于閾值,則返回該特征對應的身份,否則返回“不在庫中”。
8、人臉檢索
“人臉檢索”是查找和輸入人臉相似的人臉序列的算法。
人臉檢索通過將輸入的人臉和一個***中的說有人臉進行比對,根據比對后的相似度對***中的人臉進行排序。根據相似度從高到低排序的人臉序列即使人臉檢索的結果。
9、人臉聚類
“人臉聚類(FaceCluster)”是將一個***內的人臉根據身份進行分組的算法。
人臉聚類也通過將***內所有的人臉兩兩之間做人臉比對,再根據這些相似度值進行分析,將屬于同一個身份的人劃分到一個組里。
在沒有進行人工身份標注前,只知道分到一個組的人臉是屬于同一個身份,但不知道確切身份。另外假設***中有N個人臉,那么人臉聚類的算法復雜度為O(N2)
10、人臉活體
“人臉活體(FaceLiveness)”是判斷人臉圖像是來自真人還是來自攻擊假體(照片、視頻等)的***。
和前面所提到的人臉技術相比,人臉活體不是一個單純算法,而是一個問題的解法。這個解法將用戶交互和算法緊密結合,不同的交互方式對應于完全不同的算法。鑒于***的種類過于繁多,這里只介紹“人臉活體”的概念,不再展開。