# 前言

本項目參考了ArcFace的損失函數,同時參考了PP-OCRv2模型結構,意在開發一個模型較小,但識別準確率較高且推理速度快的一種人臉識別項目,該項目訓練數據使用emore數據集,一共有85742個人,共5822653張圖片,使用lfw-align-128數據集作爲測試數據。

源碼地址:https://github.com/yeyupiaoling/PaddlePaddle-MobileFaceNets

數據集準備

本項目提供了標註文件,存放在dataset目錄下,解壓即可。另外需要下載下面這兩個數據集,下載完解壓到dataset目錄下。
- emore數據集百度網盤
- lfw-align-128下載地址:百度網盤 提取碼:b2ec

然後執行下面命令,將提取人臉圖片到dataset/images,並把整個數據集打包爲二進制文件,這樣可以大幅度的提高訓練時數據的讀取速度。

python create_dataset.py

訓練

執行train.py即可,更多訓練參數請查看代碼。

python train.py

評估

執行eval.py即可,更多訓練參數請查看代碼。

python eval.py

預測

本項目已經不教提供了模預測,模型文件可以直接用於預測。在執行預測之前,先要在face_db目錄下存放人臉圖片,每張圖片只包含一個人臉,並以該人臉的名稱命名,這建立一個人臉庫。之後的識別都會跟這些圖片對比,找出匹配成功的人臉。。這裏使用的人臉檢測是MTCNN模型,這個模型具有速度快,模型小的特點,源碼地址:PaddlePaddle-MTCNN

如果是通過圖片路徑預測的,請執行下面命令。

python infer.py --image_path=temp/test.jpg

日誌輸出如下:

人臉檢測時間:45ms
人臉識別時間:6ms
人臉對比結果: [('楊冪', 0.61594474), ('迪麗熱巴', 0.37707973)]
人臉對比結果: [('迪麗熱巴', 0.7290128), ('楊冪', 0.3993025)]
預測的人臉位置: [[156, 80, 214, 135, 1], [269, 67, 327, 121, 1]]
識別的人臉名稱: ['楊冪', '迪麗熱巴']
總識別時間:53ms

如果是通過相機預測的,請執行下面命令。

python infer_camera.py --camera_id=0
小夜