我用的是pytorch版本(Windows 10系统,python 3.7),其项目地址在:https://github.com/TreB1eN/InsightFace_Pytorch
预训练模型IR-SE50和Mobilefacenet的结果地址:https://pan.baidu.com/s/12BUjjwy1uUTEF9HCx5qvoQ 和 https://pan.baidu.com/s/1hqNNkcAjQOSxUjofboN6qg
训练集emore的地址:https://pan.baidu.com/s/1eXohwNBHbbKXh5KHyItVhQ
准备工作结束,开始训练自己的模型:
1、下载mtcnn-pytorch模型(注意:是在InsightFace_Pytorch文件夹下):
git clone https://github.com/TropComplique/mtcnn-pytorch.git
这里不建议用这个指令,因为项目中本身包含了mtcnn_pytorch文件,git指令的这个文件夹里缺少部分文件,所以这步可以忽略。
2、数据准备:
(1)准备Facebank(用于通过摄像机或视频进行测试)
在data / face_bank文件夹中提供要检测的面部图像,也就是自己的应用数据,并确保其结构如下:
data/facebank/ ---> id1/ ---> id1_1.jpg ---> id2/ ---> id2_1.jpg ---> id3/ ---> id3_1.jpg ---> id3_2.jpg
(2)将预训练的模型下载到work_space / model
(3)准备训练集用于训练
将emore数据集解压到data数据集下,运行:
python prepare_data.py
此时遇到问题:
1)mxnet的安装:
pip install --user mxnet
得到结果如下(时间会有点长,毕竟有5822653张图):
faces_emore/ ---> agedb_30 ---> calfw ---> cfp_ff ---> cfp_fp ---> cfp_fp ---> cplfw --->imgs ---> lfw ---> vgg2_fp
(4)通过视频检测:
python infer_on_video.py -f [video file name] -s [save file name]
视频文件应位于data / face_bank文件夹中。
1)报错:ModuleNotFoundError: No module named 'tensorboardX'
解决:
pip install tensorboardX
2)报错:ValueError: Object arrays cannot be loaded when allow_pickle=False
解决:降numpy的版本:
pip install --user numpy==1.16.2
3)报错:ModuleNotFoundError: No module named 'mtcnn_pytorch',这个问题就很迷。
解决:
pip install --user mtcnn_pytorch
(5)摄像头检测:
1)调用摄像头拍照的指令:
python take_pic.py -n name
t拍照,q退出,如果出现两个人就优先识别可能性最高的那个。
2)将原来存在的照片放在facebank里面,文件结构如下:
- facebank/ name1/ photo1.jpg photo2.jpg ... name2/ photo1.jpg photo2.jpg ... .....
然后运行:
python face_verify.py
1)会出现一个错误:No such file or directory: 'work_space\\save\\model_cpu_final.pth'
解决方案:放入model中的两个.pth文件将一个更该名字为model_cpu_final,pth,然后再work_space文件夹中新建save文件夹,将.pth文件放入文件夹中。
2)另外,问题:RuntimeError: Error(s) in loading state_dict for Backbone:
解决:
(6)训练:
python train.py -b [batch_size] -lr [learning rate] -e [epochs] # python train.py -net mobilefacenet -b 200 -w 4