基于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(需要的可以自己继续训练),评价指标如下:

R P mAP_0.5 mAP_0.5:0.95
0.521
0.7987
0.59592
0.28344

 

batch中标签预览图: 

 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 20:30:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 20:30:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 20:30:02       45 阅读
  4. Python语言-面向对象

    2024-07-09 20:30:02       55 阅读

热门阅读

  1. AWS CloudWatch 权限管理指南

    2024-07-09 20:30:02       24 阅读
  2. PLSQL Day5

    2024-07-09 20:30:02       25 阅读
  3. 使用nodejs输出著作权申请所需的word版源码

    2024-07-09 20:30:02       23 阅读
  4. Linux Conda 入门案例教程

    2024-07-09 20:30:02       22 阅读
  5. HTTP Client

    2024-07-09 20:30:02       30 阅读