原创:岐山凤鸣,转载请注明本站域名
阶段性进行一些总结,这是总结的第三部分,包括一个精简式的人脸识别工程,训练速度非常的快。
觉得不错不妨star/follow一下我的Github
我制作的工程代码在这:Tiny_Face_Recognition
迟来的一周系列Day7的结果。
概要
网络结构、训练的过程以及其他的细节均和我之前的一周复刻系列一致。
传送门:
这篇博文主要介绍这个完整的人脸识别流程,使用纯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}
}