基于YOLOv5的人脸目标检测

本文是在之前的基于yolov5的人脸关键点检测项目上扩展来的。因为人脸目标检测的效果将直接影响到人脸关键点检测的效果,因此本文主要讲解利用yolov5训练人脸目标检测(关键点检测可以看我人脸关键点检测文章)

基于yolov5的人脸关键点检测:人脸关键点检测


环境说明

torch>=1.5.0

数据集

这里使用的人脸数据集为WIDER FACE

该数据集共有12880张图像

引用说明:

@inproceedings{yang2016wider,
Author = {Yang, Shuo and Luo, Ping and Loy, Chen Change and Tang, Xiaoou},
Booktitle = {IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
Title = {WIDER FACE: A Face Detection Benchmark},
Year = {2016}}

下载数据集并解压至datasets,images中是图像,labels中是对应标签文件(已经做了归一化)

 其中train_bak.txt是所有图像的相对路径(注意此时还没有划分真正的训练集、验证机和测试集),格式为:

./images/xxx.jpg

数据集百度云:

 链接:https://pan.baidu.com/s/1O7pgjy77ur21jMm4lwwuQw 
提取码:yypn 
 

数据集划分脚本

tran_bak.txt包含了12880张图像的相对路径

该脚本可以生成train.txt、val.txt和test.txt。如果你感觉训练过程毕竟慢,希望可以先得到一个训练模型,那么可以将lines=lines[:2000]注释去掉,这将仅从数据集中选择2000张图来进行训练和测试

with open('datasets/train_bak.txt', 'r') as f:
    lines = f.readlines()
# lines = lines[:2000]  # 只取2000张
# 随机打乱数据
random.shuffle(lines)
# 划分比例
val_ratio = 0.1  # 验证集占比
test_ratio = 0.1  # 测试集占比
# 计算划分的索引
val_index = int(len(lines) * val_ratio)
test_index = int(len(lines) * (val_ratio + test_ratio))
# 划分数据集
val_data = lines[:val_index]
test_data = lines[val_index:test_index]
train_data = lines[test_index:]

# 保存划分后的数据集到文件
with open('datasets/val.txt', 'w') as f:
    f.writelines(val_data)

with open('datasets/test.txt', 'w') as f:
    f.writelines(test_data)

# 剩余的部分作为训练集
with open('datasets/train.txt', 'w') as f:
    f.writelines(train_data)

新建mydata.yaml

上面完成了数据集的划分,然后和正常的yolov5训练一样,需要在data/下新建一个mydata.yaml文件,内容如下:

train: ./datasets/train.txt
val: ./datasets/val.txt
test: ./datasets/test.txt

# number of classes
nc: 1

# class names
names: ['face']

训练

python train.py --data data/mydata.yaml --weights yolov5s.pt

我这里仅训练了10个epoch(需要的可以自己继续训练),评价指标如下:

RPmAP_0.5mAP_0.5:0.95
0.521
0.7987
0.59592
0.28344

 

batch中标签预览图: 

 

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃肉的鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值