人臉識別流程:
1. 人臉定位
輸入是原始圖像,輸出是人臉所在位置的矩形框,這里需要用到一個模型(這個模型可以用回歸的方式去訓練);
2. 人臉特征點檢測(landmarks)
輸入是(原始圖像+人臉矩形框=人臉圖像),輸出是特征點坐標(嘴巴的坐標,眼睛的坐標等),這里需要用到一個模型(這個模型可以用回歸的方式去訓練);
3. 人臉對齊&特征提取
輸入是(當前人臉landmarks+標准人臉landmarks+特征提取矩陣),過程是將對齊后的人臉輸入到CNN之類的網絡,得到人臉特征(如128維的人臉特征)(詳細了解請看這里)
4. 應用
接下來就可以根據具體需求做不同的事了,比如判斷兩張照片是不是一個人,就可以對比步驟3得到的128維矩陣的相似度,如果高於閾值就是一個人,一般計算人臉特征矩陣的相似度會用余弦距離
ps:可以直接使用dlib庫來提取人臉128維特征,支持cpu
其他
人臉識別范圍很廣泛,目前有十個關鍵技術
1. 人臉檢測(face detection)是檢測出圖像中人臉位置的技術
一般輸入是一張圖片,輸出是人臉所在位置,常用矩形框標記在原圖之上;
2. 人臉配准(face alignment)是定位人臉五官關鍵點坐標的技術
一般輸入是人臉圖像+人臉坐標框,輸出是五官關鍵點坐標序列,輸入一般會統一尺寸;
3. 人臉屬性識別(face atrribute)是識別人臉的性別、年齡、姿態、表情等屬性的技術
一般輸入是人臉圖像+五官關鍵點坐標,輸出是人臉屬性值,輸入一般會調整統一尺寸和旋轉角度,保證數據的統一性再做分析;
4. 人臉特征提取(face feature extraction)是將人臉圖像轉化為一串固定長度的數字串的技術
一般輸入是人臉圖像+五官關鍵點坐標,輸出是一串固定長度的數字串;
5. 人臉對比(face compare)是對比兩張人臉相似度的技術
一般輸入是兩張人臉的特征(即兩個固定長度的數字串),輸出是兩張人臉的相似度,人臉驗證、人臉識別、人臉檢索都是在人臉比對的基礎上加一些策略來實現;
6. 人臉驗證(face verification)判斷兩張人臉是否為同一個人的技術
一般輸入是兩個人臉特征,通過計算相似度並且和預先設置的閾值進行比較,輸出為是否為同一個人;
7. 人臉識別(face recognition)是識別出輸入人臉對應身份的技術
一般輸入是一個人臉特征,通過對比數據庫已有的人臉特征計算最高的相似度並與閾值比較,輸出是人臉對應的身份,當相似度小於閾值時,輸入人臉不在數據庫中;
8. 人臉檢索,是查詢和輸入人臉相似的人臉序列的技術
一般輸入是一個人臉特征,通過對比數據庫已有人臉特征計算相似度,並對一定數量的人臉根據相似度由高到低進行排序作為輸出;
9. 人臉聚類(face cluster)是將一個集合內的人臉按身份進行分組的技術(這個集合中可能會有多張人臉屬於一個身份)
一般輸入是一個人臉集合,將集合內的人臉兩兩對比相似度,通過分析,將集合內的人臉圖按身份進行分組作為輸出;
10. 人臉活體(face liveness)是判斷人臉是來自真人還是攻擊假體(照片、視頻等)的技術