YOLO v8使用WIDER Face数据集人脸检测

本文介绍了如何使用yolov8在WIDERFace数据集上进行人脸检测,包括数据集准备、转换为yolo所需的COCO8格式,以及如何配置和训练模型。后续章节涉及PyTorch和OpenCV的模型训练与测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


github:https://github.com/taisuii/yolo_face

0x1 数据集准备

yolo支持多种数据集格式,详细请看官网 https://docs.ultralytics.com/datasets/

WIDER Face(人脸目标检测数据集) http://shuoyang1213.me/WIDERFACE/

人脸图像 https://drive.google.com/file/d/1KfmeBY7N0hNhg79UIgdEhbNxGSrDPWSm/view?usp=drive_link

使用yolov8模型目标检测,再使用resnet或者OpenCV对人脸图像进行分类

0x2 数据处理 及其转换

网上有转换成VOC数据集再转换成COCO再转换成yolo的数据集,实际上没必要那么麻烦

先下载这三个,解压到WIDER_FACE,我们只需要这几个数据,从左到右,x和y的最小值坐标,box的宽和高
在这里插入图片描述

在这里插入图片描述

把数据进行转换成yolo支持的coco8格式(WIDER_FACE_COCO8.py),即比例形式

x_center = (xmin + boxw/2)/img_with

y_center = (ymin + boxh/2)/img_height

box_width = boxw / img_width

box_height = boxh / img_height

处理代码,及其绘制box

python WIDER_FACE_COCO8.py

验证是否文件齐全

python verify.py

0x3 模型训练

配置文件在config/coco8.yaml

这里我用的设备是RTX 4070 12G

单线程 batch=8 跑出来大概需要空闲显存10G

python train_yolov8.py

PyTorch: starting from 'runs\detect\train2\weights\best.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 5, 8400) (5.9 MB)

Results saved to runs\detect\train22
在这里插入图片描述

左边标签,右边predict
在这里插入图片描述

在这里插入图片描述

0x4 OpenCv训练

1.数据处理

提取所有人名 放入config.py

python FaceDataHandle.py
2.训练模型

训练opencv的模型 保存为model.yml

python opencv_faceClassify/train.py

0x5 模型测试

python run.py

在这里插入图片描述

Base on yolov8 and wider face dataset, training a model that can be used

### WIDER Face 数据集测试方法 对于WIDER Face数据集的测试,通常涉及几个关键步骤来评估模型性能。这些过程不仅限于特定框架或工具,而是广泛适用于多种目标检测算法。 #### 准备工作 为了准备测试环境,需先确保拥有完整的WIDER Face数据集以及相应的预处理脚本。该数据集分为训练、验证和测试三个部分[^1]。针对不同需求可以选择不同的子集用于实验。值得注意的是,在正式评测之前应该严格区分这三个集合的功能——仅使用训练集调整超参数并优化网络结构;利用验证集监控过拟合现象;最后通过官方提供的标准接口提交至测试服务器获取最终成绩。 #### 转换标注格式 由于原始的数据标签是以MATLAB .mat 文件形式存储,因此需要将其转化为适合所选深度学习库读取的形式。例如,当采用MMDetection作为开发平台时,则应参照其文档说明将WIDER FACE转为COCO数据集格式标注[^2]。此操作可以通过编写Python脚本来实现自动化处理,从而简化流程提高效率。 #### 训练与推理阶段 一旦完成了上述准备工作之后就可以着手构建自己的人脸识别系统了。以YOLOv3为例,在完成必要的配置修改后即可启动训练进程[^3]。期间要注意保存最佳权重文件以便后续加载执行预测任务。至于实际部署方面,可以借助OpenCV等计算机视觉库快速绘制边界框可视化输出结果,并配合专门编写的辅助函数如`count_IOU.py`来进行精度分析。 #### 性能度量指标 评价一个物体探测器的好坏往往依赖于一系列量化统计数值,其中最常用的就是平均交并比(mAP)、精确率(Precision) 和 召回率(Recall)。具体来说就是比较预测出来的矩形区域同真实标记之间的重叠程度,进而得出各项分数。此外还有F-measure综合考量两者平衡状况。 ```python def calculate_iou(boxA, boxB): # determine the (x, y)-coordinates of the intersection rectangle xA = max(boxA[0], boxB[0]) yA = max(boxA[1], boxB[1]) xB = min(boxA[2], boxB[2]) yB = min(boxA[3], boxB[3]) # compute the area of intersection rectangle interArea = abs(max((xB - xA, 0)) * max((yB - yA), 0)) if interArea == 0: return 0 # compute the area of both the prediction and ground-truth rectangles boxAArea = abs((boxA[2] - boxA[0]) * (boxA[3] - boxA[1])) boxBArea = abs((boxB[2] - boxB[0]) * (boxB[3] - boxB[1])) iou = interArea / float(boxAArea + boxBArea - interArea) return iou ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值