【本期推薦專題】從三大主流前端技術出發,看看它們各自特性,以及如何從業務特性出發,選擇合適的框架。html
摘要:咱們基於MindSpore設計了一種人臉識別算法,以解決口罩遮擋場景下的人臉識別問題。該算法的開源代碼已經在MindSpore上首發了。前端
本文分享自華爲雲社區《不用摘口罩也知道你是誰,MindSpore訓練口罩人臉識別模型》,原文做者:chengxiaoli。git
人臉識別的目標是肯定人臉圖像的身份。隨着智慧城市的建設,人臉識別的應用場景愈來愈多樣,好比嫌疑人追蹤、定位走失的老人兒童等。隨着新型冠狀病毒在全球範圍內的爆發,爲了公共衛生安全,愈來愈多的人在公共場所佩戴口罩以下降感染傳染性疾病的風險。算法
傳統的人臉分析方法主要提取整張臉部的全局特徵進行分析,口罩遮擋場景下,面部的部分重要部位(好比下頜等)被口罩覆蓋住,提取整張臉的全局特徵將會引入大量噪聲。所以,口罩遮擋場景下的人臉分析任務亟需新的解決方案。咱們基於MindSpore設計了一種人臉識別算法,以解決口罩遮擋場景下的人臉識別問題。該算法的開源代碼已經在MindSpore上首發了。安全
- 論文:
Feifei Ding, Peixi Peng, Yangru Huang, Mengyue Geng and Yonghong Tian. Masked Face Recognition with Latent Part Detection. ACM Multimedia 2020. https://dl.acm.org/doi/pdf/10.1145/3394171.3413731網絡
- 開源地址:
https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/cv/MaskedFaceRecognition框架
算法框架
目前尚未針對口罩人臉的大規模的訓練數據集,爲解決訓練數據不足的問題,咱們基於已有的公開人臉數據集生成口罩人臉數據做爲訓練數據。流程以下:函數
(1)採用已有的人臉關鍵點檢測算法(好比Dlib)檢測出無遮擋人臉圖片上的多個關鍵點位置;性能
(2)標註出口罩佩戴區域(鼻尖如下區域)的關鍵點位置;學習
(3)在口罩示例圖片(好比N95口罩)上手動標註關鍵點,並和人臉口罩佩戴區域的關鍵點一一對應;
(4)根據口罩示例圖片的關鍵點位置,對其作三角剖分,將口罩示例圖片劃分爲多個小三角形;
(5)根據口罩示例圖片和人臉圖片的關鍵點對應關係,將口罩示例圖片上的每一個小三角形區域仿射變換到人臉圖片上,並進行平滑操做,生成口罩人臉圖片。
咱們在人臉公開數據集WebFace上生成了8種不一樣風格的口罩人臉,將其與原始未佩戴口罩的人臉圖片混合,做爲訓練數據。
算法框架如圖所示,考慮到口罩人臉中的許多重要信息被口罩遮擋,咱們提出了基於潛在區域檢測的二分支網絡模型以提取更具判別力的特徵。其中,局部分支對潛在區域提取局部特徵,全局分支對原圖提取全局特徵。
咱們將潛在區域定義爲未被口罩遮擋的人臉區域,用表示,其中爲待學習的參數。受空間轉換網絡(STN)的啓發,咱們對區域內的特徵進行有限制的仿射變換,使其轉變爲原圖大小,公式以下:
其中,目標框定義爲H和W分別爲原圖的長和寬。經過該公式能夠獲得能夠經過STN的仿射變換矩陣的參數轉化獲得,由此能夠檢測出潛在區域。根據潛在區域和原圖座標的對應關係,採用雙線性插值將其擴充爲和原圖同樣的大小。
網絡模型爲二分支網絡,一分支對潛在區域提取局部特徵,另外一分支對原圖提取全局特徵,兩分支共享網絡參數。各分支採用分類損失函數進行優化,對於局部分支,額外引入LPD損失函數:
其中,爲鼻尖關鍵點的縱座標。引入該損失函數的目的是規範網絡對潛在區域的定位,使其儘量在人臉鼻尖以上的區域,由於根據先驗知識,口罩每每會遮擋鼻尖如下的臉部區域。在測試階段,將全局特徵與局部特徵結合做爲最終的特徵表達。
實驗結果
咱們蒐集了實際的口罩人臉數據集PKU-Masked-Face Dataset做爲測試集,該測試集共有10301張屬於1018個不一樣身份的人臉圖片。大多數身份有至少5張佩戴口罩和5張不佩戴口罩的共計5個視角的人臉圖片,5個視角分別爲:正面、左面、右面、俯視、仰視。口罩人臉圖片做爲查詢圖像庫,正常人臉圖片做爲待匹配圖像庫。
- 測試集連接:
https://pkuml.org/resources/pku-masked-face-dataset.html
基於MindSpore實現的算法模型實驗結果以下表所示,其中Baseline爲採用WebFace原始數據訓練的ResNet50基準模型,MG是採用WebFace加強數據訓練的ResNet50模型,LPD爲咱們提出的潛在區域檢測模型。
MindSpore代碼實現
二分支網絡結構代碼:
其中global_out和partial_out分別對應對原圖提取的全局特徵和潛在區域提取的局部特徵,兩部分共用特徵提取主幹層。
潛在區域檢測LPD模塊的具體實現:
其中輸入爲原始圖片,輸出爲未被遮擋人臉區域邊界座標。
- 相關訓練與推理代碼:
https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/cv/MaskedFaceRecognition
該代碼基於MindSpore框架實現,運行的硬件環境爲Ascend910。算法解決了口罩遮擋場景下的人臉識別問題,對基準模型性能提高明顯,實驗結果如上表達到業界領先水平。