一、 detection部分选择retinaface
https://github.com/deepinsight/insightface/tree/master/detection/retinaface
1数据
使用WIDERFACE数据集,下载来源:http://shuoyang1213.me/WIDERFACE/index.html 标签来源:https://pan.baidu.com/s/1Laby0EctfuJGgGMgRRgykA
在retinaface目录下新建data目录,然后data下再建retinaface目录,如下:
2安装
pip install -U insightface
pip install cytion
安装gpu版本mxnet(必须与cuda版本对应)
pip install mxnet-cu101 #对应cuda10.1
此时make一下生成cxx工具
由于使用多GPU方式进行训练,因此需要安装NCCL,否则会报错: OSError: libnccl.so.2: cannot open shared object file: No such file or directory
在 Ubuntu 上安装NCCL首先需要向包含NCCL软件包的 APT 系统添加一个存储库,然后通过 APT安装NCCL软件包。有两个可用的存储库,一个本地存储库和一个网络存储库,建议选择后者,在此展示网络存储库安装方式。参考官网:https://docs.nvidia.com/deeplearning/nccl/install-guide/index.html
(1)安装钥匙
例如使用 Ubuntu 18.04 的网络存储库安装时:
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
需指定自己的Ubuntu版本型号以及CPU架构。
(2)安装存储库
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
(3)更新APT数据库
sudo apt update
(4)安装 libnccl2以及libncl-dev
sudo apt install libnccl2 libnccl-dev
3训练
(1)复制rcnn/sample_config.py到rcnn/config.py
(2)下载 ImageNet ResNet50 预训练模型并将它们解压放入model/ 下载链接:https://pan.baidu.com/s/1WAkU9ZA_j-OmzO-sdk9whA
(3)开启训练前,由于使用的是ResNet50预训练模型,所以在rcnn/config.py中需做出以下修改:
运行以下命令开始训练:
CUDA_VISIBLE_DEVICES='0, 1' python -u train.py --prefix model/resnet-50 --network resnet
目前只有0,1两个GPU空闲可用,可运行nvidia-smi命令查看当前空闲可用的GPU id进行选择更改。
4测试
可以在训练集中随便选一张图片,例如选择:20_Family_Group_Family_Group_20_290.jpg这张图片,将其放在retinaface目录下:
然后修改test.py文件如下:
运行如下命令则可以测试这张图片:
CUDA_VISIBLE_DEVICES='0, 1' python -u test.py --prefix model/resnet-50 --network resnet
二 、 recognition部分选择arcface _mxnet
https://github.com/deepinsight/insightface/tree/master/recognition/arcface_mxnet
1、下载训练数据集MS1M-ArcFace: https://pan.baidu.com/s/1S6LJZGdqcZRle1vlcMzHOQ
解压后将其放入insightface/recognition/datasets/ 如下:
2、编辑配置文件
cp sample_config.py config.py
vim config.py # 编辑数据集路径等
3、创建sh文件然后训练
进入arcface_mxnet/目录,编辑
vim run_train.sh
编辑下面三行代码:
export MXNET_CPU_WORKER_NTHREADS=24
export MXNET_ENGINE_TYPE=ThreadedEnginePerDevice
CUDA_VISIBLE_DEVICES='0,1' python -u train.py --network r100 --loss arcface --dataset emore --per-batch-size 36
保存退出,在终端运行
bash run_train.sh
则开始训练
模型开始训练如下图: