InsightFace: 2D和3D人脸分析项目

深度人脸识别

介绍

在这个知识库中,我们提供了用于深度人脸识别的训练数据集、网络设置和损失设计。训练数据集包括已标准化的MS1M、VGG2和CASIA-Webface数据集,这些数据集已经打包为MXNet二进制格式。网络的backbones包括ResNet、MobilefaceNet、MobileNet、InceptionResNet_v2、DenseNet、DPN。损失函数包括Softmax、SphereFace、CosineFace、ArcFace和Triplet (Euclidean/Angular)损失。

我们的方法ArcFace最初是在arXiv technical report中描述的。通过使用这个存储库,您可以通过一个模型简单地实现LFW 99.80%+和Megaface 98%+。该知识库可以帮助研究人员/工程师快速开发深度人脸识别算法,只需两个步骤:下载二进制数据集并运行训练脚本。

 

训练数据集

所有的人脸图像被MTCNN对齐并裁剪到112x112:

详细信息和数据集下载请查看Dataset Zoo

请查看 src/data/face2rec2.py 如何建立一个二进制人脸数据集。任何公开的MTCNN都可以用于对齐面,并且性能不会改变。我们将在近期通过完整的姿态对齐方法来改善人脸归一化的步骤。

 

训练

1.使用GPU支持安装MXNet (Python 2.7)

注意:根据自己电脑的cuda版本安装相应的包

pip install mxnet-cu80  #CUDA-8.0
pip install mxnet-cu90  #CUDA-9.0
pip install mxnet-cu91  #CUDA-9.1
pip install mxnet-cu92  #CUDA-9.2
pip install mxnet-cu100  #CUDA-10.0
pip install mxnet-cu101  #CUDA-10.1

2.克隆InsightFace存储库。我们将目录insightface称为INSIGHTFACE_ROOT。

git clone --recursive https://github.com/deepinsight/insightface.git

3.下载训练集(MS1M-Arcface)并将其放在$INSIGHTFACE_ROOT/datasets/中。每个训练数据集至少包含以下6个文件:

    faces_emore/
       train.idx
       train.rec
       property
       lfw.bin
       cfp_fp.bin
       agedb_30.bin

前三个文件是训练数据集,后三个文件是验证集。

4. 训练深度人脸识别模型。在这一部分中,我们假设您位于 $INSIGHTFACE_ROOT/recognition/ 目录中。

export MXNET_CPU_WORKER_NTHREADS=24
export MXNET_ENGINE_TYPE=ThreadedEnginePerDevice

放置和编辑配置文件:

cp sample_config.py config.py
vim config.py # edit dataset path etc..

我们在下面给出了一些例子。我们的实验是在Tesla P40 GPU上进行的。

(1) 使用LResNet100E-IR训练ArcFace

CUDA_VISIBLE_DEVICES='0,1,2,3' python -u train.py --network r100 --loss arcface --dataset emore

每2000批输出LFW、CFP-FP、AgeDB-30的验证结果。您可以查看config.py中的所有选项。该模型可以实现LFW 99.80+和MegaFace 98.3%+。

(2) 使用LResNet50E-IR训练CosineFace

CUDA_VISIBLE_DEVICES='0,1,2,3' python -u train.py --network r50 --loss cosface --dataset emore

(3) 使用LMobileNet-GAP训练Softmax

CUDA_VISIBLE_DEVICES='0,1,2,3' python -u train.py --network m1 --loss softmax --dataset emore

(4) 使用Triplet loss对上述的Softmax模型进行微调

CUDA_VISIBLE_DEVICES='0,1,2,3' python -u train.py --network m1 --loss triplet --lr 0.005 --pretrained ./models/m1-softmax-emore,1

5. 验证结果

针对MS1M-Arcface数据集训练的LResNet100E-IR网络

 

预训练模型

您可以使用 $INSIGHTFACE/src/eval/ verific.py 来测试所有的预培训模型。

请查看Model-Zoo中更多的预训练模型。

 

Combined Margin(联合间隔)的验证结果

我们提出了一种联合间隔的方法作为目标logit值和原始θ的函数:

COM(θ) = cos(m_1*θ+m_2) - m_3

对于m_{1}=1.0m_{2}=0.3m_{3}=0.2 的训练,运行以下命令:

CUDA_VISIBLE_DEVICES='0,1,2,3' python -u train_softmax.py --network r100 --loss combined --dataset emore

使用MS1M-IBUG(MS1M-V1)的结果

 

MegaFace上的测试

请查看 $INSIGHTFACE_ROOT/Evaluation/megaface/ 以评估megaface上的模型精度。所有对齐的图像已经提供。

 

512-D 特征嵌入

在本部分中,我们假设您位于$INSIGHTFACE_ROOT/deploy/ 目录中。输入的人脸图像一般应被中心裁剪。我们使用MTCNN的RNet+ONet进一步对齐图像,然后将其发送到特征嵌入网络。

1.准备一个预训练模型。

2.将模型放在$INSIGHTFACE_ROOT/models/下。例如,$INSIGHTFACE_ROOT/models/model-r100-ii

3.运行测试脚本$INSIGHTFACE_ROOT/deploy/test.py。

对于单裁剪的人脸图像(112x112),在我们的测试服务器上总的前向推理时间只有17ms (Intel E5-2660 @ 2.00GHz, Tesla M40, LResNet34E-IR)。

 

人脸对齐

请查看 Menpo Benchmark 和 Dense U-Net以获得更多详细信息。

 

人脸检测

详情请查看RetinaFace

 

引用

如果你觉得InsightFace对你的研究有帮助,请参考以下相关论文:

@inproceedings{deng2019retinaface,
title={RetinaFace: Single-stage Dense Face Localisation in the Wild},
author={Deng, Jiankang and Guo, Jia and Yuxiang, Zhou and Jinke Yu and Irene Kotsia and Zafeiriou, Stefanos},
booktitle={arxiv},
year={2019}
}

@inproceedings{guo2018stacked,
  title={Stacked Dense U-Nets with Dual Transformers for Robust Face Alignment},
  author={Guo, Jia and Deng, Jiankang and Xue, Niannan and Zafeiriou, Stefanos},
  booktitle={BMVC},
  year={2018}
}

@article{deng2018menpo,
  title={The Menpo benchmark for multi-pose 2D and 3D facial landmark localisation and tracking},
  author={Deng, Jiankang and Roussos, Anastasios and Chrysos, Grigorios and Ververas, Evangelos and Kotsia, Irene and Shen, Jie and Zafeiriou, Stefanos},
  journal={IJCV},
  year={2018}
}

@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}
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值