人脸检测】复现Pytorch_Retinaface(Pytorch版本)

https://github.com/biubug6/Pytorch_Retinaface

训练这个模型很耗GPU,mobilenet0.25还好(训练8G以内,测试1G以内),resnet50至少要43G。

0.环境
ubuntu16.04
python3.6
cuda9.0
torch==1.1.0
ipython
1.准备数据与模型
(1)准备数据
原始数据:train+val+test http://shuoyang1213.me/WIDERFACE/WiderFace_Results.html

标签数据:https://pan.baidu.com/s/1Laby0EctfuJGgGMgRRgykA

按照官方给的格式放:

./data/widerface/
train/
images/
label.txt
val/
images/
label.txt
test/
images/
label.txt

由于val只有label.txt,所以我们要自己转一下(这一步一定要转一下,不然会测试时会出错的):

# -*- coding: UTF-8 -*-
'''
@author: mengting gu
@contact: 1065504814@qq.com
@time: 2020/11/2 上午11:47
@file: widerValFile.py
@desc:
'''
import os
import argparse

parser = argparse.ArgumentParser(description='Retinaface')
parser.add_argument('--dataset_folder', default='./data/widerface/val/images/', type=str, help='dataset path')
args = parser.parse_args()

if __name__ == '__main__':
# testing dataset
testset_folder = args.dataset_folder
testset_list = args.dataset_folder[:-7] + "label.txt"

with open(testset_list, 'r') as fr:
test_dataset = fr.read().split()
num_images = len(test_dataset)


for i, img_name in enumerate(test_dataset):
print("line i :{}".format(i))
if img_name.endswith('.jpg'):
print(" img_name :{}".format(img_name))
f = open(args.dataset_folder[:-7] + 'wider_val.txt', 'a')
f.write(img_name+'\n')
f.close()
最后将数据按照作者的要求,写成下面这种:

./data/widerface/
train/
images/
label.txt
val/
images/
label.txt
wider_val.txt
test/
images/
label.txt
(2)准备模型
 google cloud and baidu cloud Password: fstq

2.训练
CUDA_VISIBLE_DEVICES=0 python train.py --network mobile0.25
   要想训练Resnet50的话,在train.py代码的139行后, 添加:

torch.cuda.empty_cache()
3.测试评估
  这份代码原来是测试与评估是分开的。

(1)测试
python test_widerface.py --trained_model weight_file --network mobile0.25

# eg
python test_widerface.py --trained_model ./weights/mobilenet0.25_epoch_245.pth --network mobile0.25

# eg 测试结果保存 去掉test_widerface.py中参数设置parser(save_image) action="store_true"
python test_widerface.py --trained_model ./weights/mobilenet0.25_epoch_245.pth --network mobile0.25 -s=True
   检测结果jpg与txt分别在results与widerface_evaluate/widerface_txt目录下。

   检测画框结果:

 

检测txt结果:

0_Parade_marchingband_1_20
261
542 357 36 42 0.9983047
29 404 27 33 0.9953412
254 371 29 33 0.98255116
629 394 19 21 0.96621066
464 355 27 29 0.9414734
81 391 22 25 0.9405682
386 368 17 20 0.9325298
730 346 17 19 0.88296247
(2)评估
cd ./widerface_evaluate
python setup.py build_ext --inplace
python evaluation.py


下面是作者自己跑出来的结果:

 

对比来看与第二行这项结果相差较小,基本能复现结果了。

 

参考
1.Pytorch_Retinaface

2.官方RetinaFace
原文链接:https://blog.csdn.net/qq_35975447/article/details/109447929

posted @   水木清扬  阅读(932)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示