人脸识别模型训练 |
您所在的位置:网站首页 › 人脸识别模型有哪些 › 人脸识别模型训练 |
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 (测试时代码绘制的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 param32. 运行 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 FaceNet2.运行 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 |