# 前言
本項目參考了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