基于开源模型搭建实时人脸识别系统(六):人脸识别(人脸特征提取)
- 人臉識別的幾個發展階段
- 基于深度學習的人臉識別技術的流程
- 閉集和開集(Open set)識別
- 人臉識別的損失
- Insightface
- 人臉識別數據集
- 模型選型
- 參考文獻
- 結語
- 人臉識別系統項目源碼
前面我們講過了人臉檢測、人臉質量、人臉關鍵點、人臉跟蹤,接下來就是人臉識別系統里面的重中之重人臉識別了,或者叫人臉特征提取,這個算法是來判定人臉是誰。我們刷臉進車站、刷臉付款、解鎖手機都離不開這個算法。
人臉識別的幾個發展階段
第一個發展階段主要從 20 世紀 60 年代到 90 年代。Brunelli 、Bledsoe 、金出武 雄等人在這一時期做了人臉識別的相關研究,人工神經網絡在這時被提出,因為當時硬 件基礎難以支撐其過高的計算復雜度而沒有得到重點關注。這一時期的識別精確度不高, 可以做到簡單的人臉識別,但還是無法運用到實際中。
第二個發展階段是從 1991 年到 1997 年。這一時期出現了耶魯大學的 Fisherface 算法和麻省理工學院的 Eigenface 算法。這兩種算法在當時頗具影響力。這一時期還出 現了人臉等密度圖線性分析、基于彈性圖匹配的方法 EBGM、隱馬爾可夫模型 HMM等。Eigenface使用了PCA(主成分分析)將人臉圖像進行降維,然后用歐式距離來判定人臉相似度,PCA也是計算機視覺課程會接觸到的算法;Fisherface則使用了LDA(線性判別分析)。
第三個發展階段是從 1997 年到 2010 年前后,研究人員開始摒棄原先的理想環境, 把研究重點轉移到了非理想環境。這個時期研究者所使用分類器的聯合方式和傳統的特 征提取的技術方法。在此階段,研究人員主要采用貝葉斯分類器、聯合貝葉斯、支持向 量機 SVM等分類器進行研究。用SVM這類分類器來做人臉識別,實現了人臉特征和分類的解耦,所以有很多特征提取器都被用來做人臉識別了,比如sift、Gabor、HoG、LBP等。總體上,雖然相比于第二個階段的算法,這個階段的算法從精度和魯棒性上都有較大提升,不過還是無法進行大規模的使用。
第四個階段就是深度學習時期了,這個階段是人臉識別真正進入日常生活的階段,我們日常的刷臉解鎖、刷臉進小區、打卡都離不開基于深度學習的人臉識別技術的發展。2014 年,Facebook 提出 Deepface 和香港中文大學提出 DeepID在 LFW上分別達到了 97.34%和 97.44%的識別精度。2015 年,Google 提出的 FaceNet ,在 LFW 上取得了 99.62%的識別率。同年,牛津大學提出了 VGGface 并公開數據集 CASIA WebFace ,VGGNet 在 CASIA WebFace 人臉集上訓練,得到了 98.95%的識別率。2017 年,Liu 等人提出 SphereFace ,人臉識別準確率提升到了 99.42%。而后的arcface\cosface等新的人臉loss的提出,以及insightface項目的開源,極大的推動了人臉識別的發展。
基于深度學習的人臉識別技術的流程
與我們前面博文提到的技術一致,在支付、打卡、門禁等場景,還要加上face anti-spoof(活體檢測)來防止出現假體攻擊。
閉集和開集(Open set)識別
閉集是指待識別的人都在訓練集中,這時的人臉識別等同于一個分類問題。
開集是指待識別的人不在訓練集中,這時的人臉識別就不等同于一個分類問題了,而是一個度量學習的問題,即要學習的是如何判定2個人臉是否屬于一個人,盡管實際上訓練的時候是按分類訓練。
人臉識別的損失
目前主要使用的人臉識別損失是arcface\cosface這類margin softmax 損失,即在普通的softmax分類損失上加上了乘性或加性的margin, 以期望達到類內內聚,類間分開的效果。
而在此之前,triplelet loss也曾用于人臉識別,由于訓練過程中樣本采樣比較復雜,使用不太廣泛。
Insightface
deepinsight/insightface: State-of-the-art 2D and 3D Face Analysis Project (github.com)
insightface是人臉識別領域最有名的開源項目,該項目包括了從人臉檢測、人臉關鍵點到人臉識別的全流程算法,是入門和深入人臉識別的不二之選。
人臉識別數據集
人臉識別的發展也離不開數據集規模的擴大,最大的數據集已經到了百萬級ID:
模型選型
insightface提供了很多模型:
insightface/recognition/arcface_torch at master · deepinsight/insightface (github.com)
insightface/model_zoo/README.md at master · deepinsight/insightface (github.com)
考慮到速度和精度,我們選擇使用WebFace訓練的resnet50模型。
參考文獻
A Survey of Face Recognition)
結語
這里我們簡要介紹了人臉識別技術的發展過程和主要的一些方法,這里只是一些寬泛的介紹,更深入的算法理解還需要自行閱讀論文,可以閱讀上述的綜述。
人臉識別系統項目源碼
https://mbd.pub/o/bread/ZJyTmZty
總結
以上是生活随笔為你收集整理的基于开源模型搭建实时人脸识别系统(六):人脸识别(人脸特征提取)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果11promax尺寸是多少
- 下一篇: 混合专家模型 (MoE) 详解