『深度應用』深度學習人臉識別模型開發與應用流程綜述
0. 概念簡介
度量學習(Metric Learning),也稱距離度量學習(Distance Metric Learning,DML) 屬於機器學習的一種。其本質就是相似度的學習,也可以認爲距離學習。因爲在一定條件下,相似度和距離可以相互轉換。比如在空間座標的兩條向量,既可以用餘弦相似度的大小,也可以使用歐式距離的遠近來衡量相似程度。
常見的人臉識別與聲紋識別都屬於度量學習。
一般的度量學習包含以下步驟:
- Encoder編碼模型:用於把原始數據編碼爲特徵向量(重點如何訓練模型)
- 相似度判別算法:將一對特徵向量進行相似度比對(重點如何計算相似度,閾值如何設定)
1.編碼模型訓練
通過使用大量數據集進行網絡模型訓練。使編碼模型可以實現對原始數據提取特徵向量的功能。
基於深度學習的度量學習算法中,可以分爲兩個流派:
- 網絡設計派:代表孿生神經網絡(Siamese network)
- 損失改進派:代表 xx-softmax
本文主要講整體開發流程,具體細節請自行查閱。
通過對編碼模型訓練,得到了具備提取特徵的encoder模型,讓原始數據通過encoder模型就可以對應特徵向量:
X = Encoder(row)
下面就是利用這個encoder模型,作爲特徵提取器,進行相似度判別。
2.相似度判別算法
在第一步(1.編碼模型訓練)完成後,獲得了具備特徵提取的編碼模型,就可以利用此encoder網絡進行驗證系統開發。
首先要對在第一步得到的編碼模型進行性能測試。步驟如下:
- 使用測試數據生成測試對,需要保證儘量隨機取對和正負數據平衡,同一種標籤爲1,不同種爲0
- 使用編碼模型得到所有特徵向量
- 根據測試對的特徵向量計算相似度,可選餘弦距離度/歐式距離
- 根據測試對的相似度與標籤,設置合理閾值範圍,分辨率取0.0001,遍歷閾值計算 FAR(錯誤接受率)FRR(錯誤拒絕率),兩者相等得到EER(等錯誤概率),此時的閾值也是較優閾值。(也可以使用類似方法驗證準確率)
通過上述步驟就可以獲得模型的識別性能和應用閾值。
如若想提高閾值的泛化能力,可以採用測試與驗證的方法計算閾值:
- 將測試對分爲10組,用來確定閾值並驗證精讀。
- 使用其中1組,同種判斷錯誤和不同種判定錯誤的個數。
- 選擇錯誤個數最少的那個閾值,用剩餘9組,判斷識別精度。
- 步驟2和3執行10次,將每次3獲取的精度進行累加並求平均,得到最終判定精度。記錄下精度最高的那次的閾值,記爲最優閾值