insightface训练mobilenet的时候模型太大

导读

在使用insightface训练mobilefacenet的时候,训练完成之后模型还有22.5M,而官方训练的模型只有4.7M左右,训练的命令如下:

 CUDA_VISIBLE_DEVICES='0,1' python -u train_softmax.py --network y1 --ckpt 2 --loss-type 4 --margin-s 128 --lr-steps 120000,180000,210000,230000 --emb-size 512 --per-batch-size 150 --data-dir ../data/faces_ms1m_112x112 --pretrained ../models/MobileFaceNet/model-y1-softmax,20 --prefix ../models/MF/model-y1-arcface

上面的命令是用来训练一个mobiefacenet使用arcLoss的模型,最终保存的模型有22.5M,如果你的类别多这个模型会更大,下面介绍如何来缩减模型的size。

缩减模型的大小

  • 删除最后一层的全连接层

因为人脸识别其实训练的是一个分类模型,所以类别越多最后一层的全连接层越大参数越多,导致模型越大。然而在实际应用和部署模型的时候我们并不需要用到最后一层全连接层,所以我们通过删除最后一层全连接层的参数可以减少模型的size。通过insighface/deploy/model_slim.py修改一下模型的保存路径就可以了,最终生成的模型是删除了最后一层全连接的。

  • 将version-output改为GDC

在训练的命令后面加上一个version-output参数设置,默认使用的是E,代码如下:

--version-output GDC

参考:https://github.com/deepinsight/insightface/issues/454

你可能感兴趣的:(人脸识别相关)