深度学习入门(十九)阶段性总结3,精简式人脸识别

Apr 26, 2019


原创:岐山凤鸣,转载请注明本站域名

阶段性进行一些总结,这是总结的第三部分,包括一个精简式的人脸识别工程,训练速度非常的快。

觉得不错不妨star/follow一下我的Github

我制作的工程代码在这:Tiny_Face_Recognition

迟来的一周系列Day7的结果。

概要

网络结构、训练的过程以及其他的细节均和我之前的一周复刻系列一致。

传送门:

Day1 ArcFace

Day2 ArcFace

Day3 ArcFace、网络结构与源码分析

Day4 MTCNN+ArcFace全流程代码1.0

Day5 各种特殊功能的Layer

Day6 Test & Evaluation

这篇博文主要介绍这个完整的人脸识别流程,使用纯TensorFlow搭建的网络如何work。

从我制作的工程代码Tiny_Face_Recognition,可以非常容易的做好你自己的人脸识别脚本,只需要下载代码,并且下载12G左右的轻量级数据集即可。

数据集

百度网盘

里面包括train.rec, train.idx两个训练数据,和一系列的验证数据。

Usage

首先要根据下载的数据集制作Tfrecords文件,即TensorFlow的数据读取文件。

运行工程代码中的mx2tfrecords.py,给予相关参数,train.rec路径,train.idx路径,和输出Tfrecords文件路径即可。

Example:

$ python3 mx2tfrecords.py --bin_path '/data/ChuyuanXiong/up/face/faces_emore/train.rec' --idx_path '/data/ChuyuanXiong/up/face/faces_emore/train.idx' --tfrecords_file_path '/data/ChuyuanXiong/up/face/tfrecords'

接下来就可以训练了,需要输入Tfrecords文件路径,和一些超参数和保存参数的路径,如Batch_size,具体看我Github里的说明

Example:

$ python3 train.py --tfrecords '/data/ChuyuanXiong/up/face/tfrecords/tran.tfrecords' --batch_size 64 --num_classes 85742 --lr [0.001, 0.0005, 0.0003, 0.0001] --ckpt_save_dir '/data/ChuyuanXiong/backup/face_real403_ckpt' --epoch 10000

最后训练的差不多了就可以评测效果了,采用下载的数据集里面的那些验证文件(*.bin),运行eval_veri.py给予参数即可:

Example:

$ python3 eval_veri.py --datasets '/data/ChuyuanXiong/up/face/faces_emore/cfp_fp.bin' --dataset_name 'cfp_fp' --num_classes 85742 --ckpt_restore_dir '/data/ChuyuanXiong/backup/face_ckpt/Face_vox_iter_78900.ckpt'

评测效果

Datasets backbone loss steps batch_size acc
lfw resnet50 ArcFace 78900 64 0.9903
cfp_ff resnet50 ArcFace 78900 64 0.9847
cfp_fp resnet50 ArcFace 78900 64 0.8797
agedb_30 resnet50 ArcFace 78900 64 0.8991

可以看到评测精度非常的高,而且训练速度很快,基本3-5小时即可训练完成。

要是觉得好用记得star一下我的仓库吧。

Reference

@inproceedings{deng2018arcface,
title={ArcFace: Additive Angular Margin Loss for Deep Face Recognition},
author={Deng, Jiankang and Guo, Jia and Niannan, Xue and Zafeiriou, Stefanos},
booktitle={CVPR},
year={2019}
}