人脸识别模型训练

您所在的位置:网站首页 人脸识别模型有哪些 人脸识别模型训练

人脸识别模型训练

#人脸识别模型训练| 来源: 网络整理| 查看: 265

github地址:  face-recognition-supervised-by-center-loss

这里介绍我训练的人脸识别模型,放到了github上,各位看官路过的可以点个star

简介

这个仓库我提供了训练人脸深度神经网络的代码,框架使用的是pytorch。损失函数用的是center_loss。同时也提供了triplet_loss的实现。但是根据我的训练经验,用triplet_loss训练没有用center_loss准确度高。所以推荐center_loss。网络我使用的是标准的vgg16。你也可以根据自己的需求换成resnet 或者其他。我相信会获得更高的准确度(大概高两三个百分点的样子)。因为工作需求我选择了vgg16。训练数据我选择的是vggface2(8631个id 及300万照片)。MSLM 有更多的数据,用MSLM 训练我相信结果h会再好一点(大概一两个百分点)。测试数据集我选择的是LFW

训练结果 

vgg16+vggface2:   测试准确度:  0.967     auc:  0.99

auc

(测试时代码绘制的ROC曲线图)

环境

python3, pytorch  

代码既可以在CPU运行,也可以在GPU中运行,支持多显卡

数据准备

所有的人脸都需要被对齐,使用MTCNN算法,然后才裁剪成112*112大小。

获取数据以及对齐的方法请参考 https://github.com/deepinsight/insightface 这个仓库里提供了mxnet压缩的数据,关于解压缩的方法仓库里也有提供,可以下载下来用它的代码解压缩。里边的图片已经对齐并且裁剪好的。如果你想对齐自己的数据,也可以用它src/align里的代码对齐自己的数据。如果你的数据不对齐,效果会很差。

因为vggface2的数据太大了,还是读者自行下载,我提供了LFW测试集的下载连接

链接:https://pan.baidu.com/s/1hfTRck0jc2HM1Ya2r-BAVQ  提取码:z2qn 

数据的存放地址: datasets文件夹里

存放格式(一定要按类别存放):--datasets

                      --vggface2(数据集名)

                            ---类别名(这里是人名或者时编号)

                                      ---1111.jpg

训练 使用center loss (recommand)

paper: A Discriminative Feature Learning Approach for Deep Face Recognition

1.修改配置文件 -------> training_certer.json

我把所有的配置项都写在了json文件里,这样训练的时候就不用带一大堆参数了。  

参数名默认值说明 dataroot "datasets/vggface2"训练集的地址,放到dataset文件夹里 lfw_dir |"datasets/lfw_alighed"测试集的地址lfw_pairs_path "datasets/lfw_alighed"测试集的triplet对 log_dir "./checkpoints"存放checkpoint的地址 resume  false是否预训练加载checkpointstart_epoch0开始的epoch序号epochs  50训练的epoch数no_cuda false使用cuda为false,不适用为truegpu_id  "0,1"gpu序号num_workers 10加载数据的进程数seed  | 0| random seed|0随机数种子 val_interval 200每隔$(val_interval) batchs ,用测试集测试一次log_interval  10每隔$(log_interval) batchs ,打印训练的信息(loss等)save_interval  500每隔$(save_interval  ) batchs ,保存checkpoint batch_size256traing batch_sizetest_batch_size  128test_batch_size  optimizer  "sgd"优化器:sgd/adam/adagradlr  0.1学习率center_loss_weight 0.5center_loss 所占权重alpha  0.5center的学习率beta1  0.9adam param1lr_decay  1e-4adam param2wd  0.0adam param3

2. 运行

python train_center.py

 

使用triplet loss

paper:FaceNet: A Unified Embedding for Face Recognition and Clustering

1.修改配置文件 -------> training_triplet.json

比之前的配置项多了两个参数

参数名默认值说明n_triplets  1000000 训练用的triplet pairs 的数量margin  0.5margin in paper FaceNet

2.运行

python train_triplet.py

你可以观察训练的过程 使用tensorboard. 具体的方式被写在了: "checkpoints/readme.txt"

预训练的checkpoints

这里提供我自己训练的vgg16的模型一个,可以放在checkpoints里加载

链接:https://pan.baidu.com/s/1IPdmFy0bFfPt1xqV8S7eDg  提取码:89sf 

代码中加载checkpoints的逻辑是:遍历checkpoints文件夹所有pth文件,选择Acc后面数最大的,例如checkpoints_Acc0.89 .pth  和 checkpoints_Acc0.99 .pth 就会选择 后一个加载



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3