本库下载过来可以直接进行预测,已经在model_data文件夹下存放了Retinaface_mobilenet0.25.pth文件,可用于预测。
如果想要使用基于resnet50的retinaface请下载Retinaface_resnet50.pth进行预测。
pytorch==1.2.0
训练所需的Retinaface_resnet50.pth等文件可以在百度云下载。
数据集也可以在如下连接里下载。
链接: https://pan.baidu.com/s/1q2E6uWs0R5GU_PFs9_vglg
提取码: z7es
a、下载完库后解压,运行predict.py,输入
img/timg.jpg
可完成预测。
b、利用video.py可进行摄像头检测。
a、按照训练步骤训练。
b、在retinaface.py文件里面,在如下部分修改model_path和backbone使其对应训练好的文件。
_defaults = {
"model_path": 'model_data/Retinaface_mobilenet0.25.pth',
"confidence": 0.5,
"backbone": "mobilenet",
"cuda": True
}
c、运行predict.py,输入
img/timg.jpg
可完成预测。
d、利用video.py可进行摄像头检测。
1、本文使用widerface数据集进行训练。
2、可通过上述百度网盘下载widerface数据集。
3、覆盖根目录下的data文件夹。
4、根据自己需要选择从头开始训练还是在已经训练好的权重下训练,需要修改train.py文件下的代码,在训练时需要注意backbone和权重文件的对应。
使用mobilenet为主干特征提取网络的示例如下:
从头开始训练需要将pretrained设置为True,并且注释train.py里面的权值载入部分:
backbone = "mobilenet"
#-------------------------------#
# 是否使用主干特征提取网络
# 的预训练权重
#-------------------------------#
pretrained = True
model = RetinaFace(cfg=cfg, pretrained = pretrained).train()
在已经训练好的权重下训练:
backbone = "mobilenet"
#-------------------------------------------#
# 权值文件的下载请看README
# 权值和主干特征提取网络一定要对应
#-------------------------------------------#
model = RetinaFace(cfg=cfg, pretrained = pretrained).train()
model_path = "model_data/Retinaface_mobilenet0.25.pth"
# 加快模型训练的效率
print('Loading weights into state dict...')
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model_dict = model.state_dict()
pretrained_dict = torch.load(model_path, map_location=device)
pretrained_dict = {k: v for k, v in pretrained_dict.items() if np.shape(model_dict[k]) == np.shape(v)}
model_dict.update(pretrained_dict)
model.load_state_dict(model_dict)
print('Finished!')
5、可以在logs文件夹里面获得训练好的权值文件。