度量学习:ArcFace算法和工程应用总结
生活随笔
收集整理的這篇文章主要介紹了
度量学习:ArcFace算法和工程应用总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
前言
1 度量學習簡介
2 ARCFace介紹
3 實際應用時的探討
探討1:類似于人臉識別這樣的應用,從0到落地應用的大概流程是怎樣的?
探討2:怎么評估這個特征提取器網絡訓練好了?
探討3:如何評估模型或項目效果?
前言
- 需要的基礎:了解深度學習分類器原理。
- 主題:以深度學習中的ArcFace算法為案例,獲得對度量學習領域舉一反三的領悟。
1 度量學習簡介
度量學習(Metric Learning)通俗的說就是相似度學習。例如,如果要計算兩張人臉圖片的相似度,如何度量圖片之間的相似度,并使得不同人的人臉圖片相似度小而相同人的人臉圖片相似度大就是度量學習的目標。
綜上,以人臉識別(不是人臉檢測)為例子,用程序和算法實現此功能,要解決3個問題:
- 用什么東西作為某一個人的人臉的特征基準?
- 答案:因為不同的拍攝視角、不同的表情、不同的光照、不同階段的年齡等都會導致人臉形態和細節發生較大變化,所以,用一張標準人臉圖像并不能作為某個人的特征基準。在ARCFace算法中,用一個高維度向量(如1x512)來定義和存儲他的人臉信息。類似于DNA這種編碼方式能夠存儲人類的形態和細節差異。當然,這種建模解決問題方式,肯定讓人還有很多疑問,這里不細究,它只是當前科技發展中實踐出來的SOTA方法而已。
- 如何獲得這種特征基準?
- 答案:卷積神經網絡能夠提取圖像的特征,既然如此,我們就可以用大量帶標注的訓練樣本,外加誤差度量公式,以及損失函數,去訓練這個神經網絡特征提取器把單個人的所有人臉圖像轉換成用一個特征向量去表示。
- 有了基準,怎么計算相似度值?
- 答案:最簡單的度量方法,就是計算特征向量每一維度距離差的平方和。
2 ARCFace介紹
3 實際應用時的探討
探討1:類似于人臉識別這樣的應用,從0到落地應用的大概流程是怎樣的?
- 案例假設:假設為一個小區或一個公司搭建一個人臉識別門禁系統。
- 第1步——訓練人臉特征提取器:使用開源人臉數據集,基于ARCFace這樣的度量學習算法,訓練好一個特征提取器(如resnet,輸入一張人臉圖,輸出512維度特征向量)。
- 第2步——建庫:小區所有用戶提供1張或多張人臉相片,把每個人的相片輸入特征提取器,轉換成一個512維度的向量,把這個特征向量存儲在數據庫中,與人員信息綁定,作為這個人的基準特征向量。
- 第3步——使用:建好庫后,后續這個用戶刷臉門禁時,圖像會送入ARCFace算法,提取成一個512維度的特征向量,然后這個特征向量會和系統人臉數據庫中所有用戶的基準人臉特征向量進行度量(使用矩陣計算,哪怕是千萬級用戶,普通電腦也可在0.1秒內度量計算完畢)。如果發現與人臉數據庫中某個人的相似度值超過閾值(這個閾值的選擇,也是工程應用的關鍵),即表示此刻刷臉的人,就是小區用戶。
探討2:怎么評估這個特征提取器網絡訓練好了?
- 要滿足兩個條件:
- 第一:同一個人的不同照片輸入特征提取器網絡,得到的特征向量,通過距離度量公式,它們的距離差很小。
- 第二:不同人的照片輸入特征提取器網絡,得到的特征向量,通過距離度量公式,它們的距離差很大。
探討3:為什么卷積輸出特征圖或全連接層的輸出結果能代表某一個類的信息?
網絡學會的,當網絡訓練好后,這些位置的輸出結果可以編碼某一類的“全部”信息。具體可在http://scs.ryerson.ca/~aharley/vis/conv/?中體驗,通過手寫不同的“1”,你會發現,最后一個全連接層的高亮區,基本變化不大,這就表示,只要輸入圖是“1”字,那么全連接層的結果基本變動不大。
探討4:如何評估模型或項目效果?
以XXX度量為案例,流程如下:
備注:
- train集和val集由103人構成,每個人大概幾千張XXX圖像。
- 第104號、105號人數據不參與模型的訓練,大概幾十張XXX圖像。
總結
以上是生活随笔為你收集整理的度量学习:ArcFace算法和工程应用总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: V2V-PoseNet算法和应用详解(3
- 下一篇: CenterNet算法快速入门