Milvus 實戰|生物多因子認證系列 (二):人臉識別

視覺 AI 作爲一個已經發展成熟的技術領域,具有豐富的應用場景和商業化價值,全球 40% 的 AI 企業都集中在視覺 AI 領域。近年來,視覺 AI 除了在智能手機、智能汽車、智慧安防等典型行業中發揮重要作用外,更全面滲入細分的實體行業,催生了如車站人臉實名認證、人臉支付、小區人臉門禁管理、酒店自助人臉實名登記等視覺 AI 的應用。

人臉識別是視覺 AI 領域中技術成熟度、商業應用程度都比較高的一個技術。人臉識別又稱爲面部識別,是基於生物特徵的識別方式。與指紋識別等傳統的識別方式相比,人臉識別具有實時、準確、易於使用、穩定、難仿冒、無須接觸等特點。

本文將介紹一個人臉識別項目。此項目基於開源的人臉檢測算法 MTCNN、人臉識別庫 InsightFace,以及向量相似度搜索引擎 Milvus 實現。

 

| 關鍵技術

 

人臉識別通常包括人臉檢測、人臉特徵提取、人臉特徵比對這三個環節。

 

人臉檢測

人臉檢測是人臉識別完整流程中的一個環節。人臉識別系統首先用攝像頭採集含有人臉的圖像或視頻流,然後用人臉檢測技術檢測人臉位置、定位五官關鍵點、提取人臉,隨後才能進行人臉圖像預處理及人臉特徵提取。

在實際商業化方案中,人臉檢測也可獨立於人臉識別進行使用。比如近期被廣泛應用的 AI 測溫設備就是基於人臉檢測技術迅速鎖定人臉區域,從而實現紅外熱成像遠距離自動測溫。

 

人臉特徵提取

主流的人臉識別算法在進行最核心的人臉比對時,主要依靠人臉特徵值的比對。所謂特徵值,即面部特徵所組成的信息集。

人臉識別算法利用卷積神經網絡對海量人臉圖片進行學習。它從輸入圖像中提取出區分不同人臉的特徵向量,以替代人工設計的特徵。每張人臉在算法中都有一組對應的特徵值,這也是人臉比對的依據。

 

人臉比對

人臉比對是對通過深度學習模型提取出的人臉特徵向量進行相似度比對。從同一人的不同照片中提取出的特徵值在特徵空間裏的距離很近;反之,從不同人的照片中提取出的特徵值在特徵空間裏的距離較遠。

人臉比對一般會設定一個閾值作爲評判通過與否的標準,該閾值一般是用分數或者百分比來衡量。當人臉比對的相似度值大於此閾值時,則比對通過,否則比對失敗。一般用拒真率和認假率兩個指標來評估人臉比對的效果。

  • 拒真率 FRR(False Rejection Rate):拒真率是指本人親自比對但是比對失敗了,把“真的”當成了“假的”。

  • 認假率 FAR(False Accept Rate):認假率是指人臉比對通過了但其實並不是本人,把“假的”認成了“真的”。

設定的閾值越高,認假率越低,拒真率越高。儘管 FAR 和 FRR 都是越低越好,但兩個指標中一個指標的降低會導致另一個指標的升高,所以實際設定的閾值需要根據具體場景去實現兩者間的平衡[1]。

 

| 實現與應用

 

實現

人臉識別是對攝像頭採集到的人臉圖像信息進行分析,這一過程主要包括了人臉檢測、特徵提取和特徵比對。本項目使用 MTCNN 完成人臉檢測功能,InsightFace 完成人臉特徵提取的功能,然後使用 Milvus 完成人臉特徵向量的相似度檢索。項目流程如圖所示:

 

MTCNN

MTCNN (Multi-task Cascaded Convolutional Networks) 是目前比較流行的人臉檢測算法,採用 TensorFlow 框架編寫。MTCNN 模型是多任務網絡,通過 PNet、RNet、ONet 三個網絡級聯。下圖是三個網絡結構:

在提取人臉特徵前,通常需要對輸入的圖像進行中心裁剪。本項目用 MTCNN 對圖像進行調整,提取圖像中的人臉邊界和人臉關鍵點(包括眼睛、鼻子、嘴角這五個關鍵點)。

 

InsightFace

InsightFace 是一個基於 MXNet 的開源的人臉識別庫,也是對 Deng J[2] 等人提出的算法的實現。InsightFace 的網絡主幹包括 ResNet、MobilefaceNet、MobileNet、InceptionResNet_v2、DenseNet、DPN。損失函數包括了 Softmax、SphereFace、CosineFace、ArcFace and Triplet (Euclidean/Angular) Loss。

本項目用 InsightFace 提供的模型將 MTCNN 處理過的人臉圖像提取爲 512 維的特徵向量。

 

Milvus

Milvus 支持使用多種 AI 模型向量化非結構化數據,併爲向量數據提供搜索分析服務。它可處理的業務包括圖像處理、機器視覺、自然語言處理、語音識別、推薦系統以及新藥發現。具體實現方式是:

  1. 通過深度學習模型將非結構化數據轉化爲特徵向量,並導入 Milvus 庫。

  2. 對特徵向量進行存儲並建立索引。

  3. 接收到用戶的向量搜索請求後,返回與輸入向量相似的結果。

Milvus 充分利用現代處理器的並行計算能力,可以在單臺通用服務器上完成對十億級數據的毫秒級搜索。人臉庫的數據量通常是非常龐大的,因此本項目選擇使用 Milvus 來完成人臉比對。

本項目中,我們將 InsightFace 提取出的人臉特徵向量導入 Milvus 中,Milvus 會對特徵向量進行存儲並建立索引。在進行比對時,我們在 Milvus 中查詢要識別的人臉的特徵向量,Milvus 將返回庫中與該人臉向量最相似的向量和相似度。這裏我們使用餘弦距離來計算人臉相似度,當兩張人臉圖像的餘弦距離大於 0.85 時判定爲同一個人。

 

| 應用

上面介紹瞭如何通過 MTCNN、InsightFace 和 Milvus 實現一個人臉識別項目。在具體的應用中,我們通過結合人臉識別和聲紋識別實現了一個生物多因子認證系統。所謂生物多因子認證,就是利用認證人所擁有的生物信息(包括指紋、人臉、聲紋等)實現的一種更加安全的身份認證方式。我們實現的生物多因子認證系統具體搭建步驟可以參考:https://github.com/milvus-io/bootcamp/tree/master/solutions/MFA。關於聲紋識別的介紹請參考本系列的第一篇文章:Milvus 實戰|生物多因子認證系列 (一):聲紋識別

 

| 結語

本文介紹了 Milvus 在視覺 AI 領域的一個應用,通過對海量人臉特徵向量的相似度匹配來實現人臉識別。Milvus 作爲一款向量相似度檢索引擎,在其他 AI 領域也有着豐富的應用場景,涉及自然語言處理、聲音處理等領域。Milvus 的目標是成爲 AI 領域中通用的數據處理平臺,致力於加速 AI 技術在各個場景中的落地,更多應用場景請參考 https://tutorials.milvus.io/cn/。

 

參考文獻

  1. https://www.zhihu.com/question/57515604/answer/1210825250

  2. Deng J, Guo J, Xue N, et al. Arcface: Additive angular margin loss for deep face recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 4690-4699.

 

| 歡迎加入 Milvus 社區

github.com/milvus-io/milvus | 源碼

milvus.io | 官網

milvusio.slack.com | Slack 社區

zhihu.com/org/zilliz-11/columns | 知乎

zilliz.blog.csdn.net | CSDN 博客

space.bilibili.com/478166626 | Bilibili

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章