人脸检测和行人检测2:YOLOv8 YOLO11 YOLO26实现人脸检测和行人检测(含数据集和训练代码)
目录
[人脸检测和行人检测2:YOLOv8 YOLO11 YOLO26实现人脸检测和行人检测(含数据集和训练代码)](#人脸检测和行人检测2:YOLOv8 YOLO11 YOLO26实现人脸检测和行人检测(含数据集和训练代码))
[1. 前言](#1. 前言)
[2. 人脸检测和行人检测数据集说明](#2. 人脸检测和行人检测数据集说明)
[3. 模型训练](#3. 模型训练)
[4. Python版本人脸检测和行人检测效果](#4. Python版本人脸检测和行人检测效果)
[5. Android版本人脸检测和行人检测效果](#5. Android版本人脸检测和行人检测效果)
1. 前言
这是项目《人脸检测和行人检测》系列中的《YOLOv8 / YOLO11 / YOLO26 实现人脸检测和行人检测(含数据集和训练代码) 》。本项目基于开源的 Ultralytics 框架,实现一个轻量级的、高性能的、可实时的人脸检测和行人检测模型算法(Face and Person Detection)。项目开源配套了完整的训练源码、测试脚本以及适配的专用数据集,用户仅需简单配置运行环境与基础参数,即可快速启动模型训练、性能测试、效果验证等全流程实验。同时,为满足实际产业落地与边缘端部署需求,项目额外配套了成熟的C/C++部署工程与Android移动端部署项目,完整打通模型训练、效果测试、边缘终端部署的全技术开发闭环,可直接适配PC端、嵌入式设备、移动端等多终端场景,具备极高的工程落地价值与复用性。

为了更直观地展示不同版本模型在精度与效率之间的权衡,下表详细对比了 YOLOv8n、YOLO11n 以及 YOLO26n的计算量(FLOPs)、参数量(Params),以及在人脸检测和行人检测任务上的具体性能指标:
|-------------|----------------|---------------|------------|-------------|------------------|
| 模型 | input-size | params(M) | GFLOPs | mAP_0.5 | mAP_0.5:0.95 |
| YOLOv8n | 416×416 | 3.15M | 3.7 | 0.97046 | 0.79315 |
| YOLO11n | 416×416 | 2.62M | 2.7 | 0.97001 | 0.79531 |
| YOLO26n | 416×416 | 2.41M | 2.3 | 0.97002 | 0.79009 |
先展示一下人脸检测和行人检测效果:


Android人脸检测和行人检测APP Demo体验:
【尊重原创,转载请注明出处】https://blog.csdn.net/guyuealian/article/details/164620332
更多项目《人脸检测和行人检测》系列文章请参考:
- 人脸检测和人体检测(行人检测)1:人脸检测和人体检测数据集(含下载链接)
- 人脸检测和行人检测2:YOLOv8 YOLO11 YOLO26 实现人脸检测和行人检测(含数据集和训练代码) https://blog.csdn.net/guyuealian/article/details/164620332
- 人脸检测和行人检测3:C/C++实现YOLOv8 YOLO11 YOLO26 人脸检测和人体检测(含源码,可实时检测) https://blog.csdn.net/guyuealian/article/details/164629582
- 人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测) https://blog.csdn.net/guyuealian/article/details/164629596

如果需要进行人像分割,实现一键抠图效果,请参考文章:《一键抠图Portrait Matting人像抠图 (C++和Android源码)》
|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
|
|
|
|
2. 人脸检测和行人检测数据集说明
(1)人脸检测和行人检测数据集
目前收集了约10W+的人体(行人)检测数据集,数据集主要来源于VOC,COCO和MPII的人体数据集,关于人体数据集说明,请参考《人脸检测和人体检测(行人检测)1:人脸检测和人体检测数据集(含下载链接) 》:人脸检测和人体检测(行人检测)1:人脸检测和人体检测数据集(含下载链接)
(2)自定义数据集
如果需要增/删类别数据进行训练,或者需要自定数据集进行训练,可参考如下步骤:
- 采集图片,建议不少于200张图片
- 使用Labelme等标注工具,对目标进行拉框标注:labelme工具:GitHub - wkentaro/labelme: Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).
- 将标注格式转换为VOC数据格式,参考工具:labelme/labelme2voc.py at main · wkentaro/labelme · GitHub
- 生成训练集train.txt和验证集val.txt文件列表
- 修改cfg/custom/voc-face-person.yaml的train和val的数据路径
- 运行脚本scripts/train.sh,重新开始训练
3. 模型训练
(1)Ultralytics安装
ultralytics 是一个专注于计算机视觉 的开源 AI 库,其核心产品是 YOLO (You Only Look Once) 系列模型 ,如YOLOv8,YOLO11,YOLO26等模型,在学术界和工业界都享有盛誉,以其卓越的速度、精度和易用性而闻名。
原始ultralytics训练的数据格式主要支持YOLO格式,其他数据集格式需要转换为YOLO格式才能训练。为兼容多种格式,项目在开源项目ultralytics基础上重新构建了增强版的ultralytics,即ultralytics-plus,增加了一些特性,可直接支持Labelme、COCO 和 Pascal VOC等数据格式训练和测试。
关于ultralytics-plus安装和说明,请参考https://blog.csdn.net/guyuealian/article/details/164299205
ultralytics-plus已经包含了ultralytics,不需要重复安装ultralytics
ultralytics-plus安装方法:
bash
# ultralytics-plus已经包含了ultralytics,不需要重复ultralytics
# 下载源码ultralytics-plus
git clone https://github.com/PanJinquan/ultralytics-plus
cd ultralytics-plus
# 切换到dev
git checkout dev
# 如果使用了conda,请激活你的虚拟环境
# conda activate py310 # 激活虚拟环境py310(每次运行都需要运行)
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple
# 当安装成功后,可以测试ultralytics-plus是否正常训练
yolo detect train data=coco8.yaml model=yolov8n.yaml epochs=1 imgsz=640 # 会自动下载相关数据进行测试
Python依赖环境,使用pip安装即可**,项目代码都在Ubuntu系统和Windows系统验证正常运行,请放心使用;若出现异常,大概率是相关依赖包版本没有完全对应**
python
# Ultralytics requirements
# Usage: pip install -r requirements.txt
# pip install torch==2.2.0 torchvision==0.17.0 --index-url https://download.pytorch.org/whl/cpu
# Base ----------------------------------------
ultralytics==8.0.180
matplotlib>=3.2.2
numpy>=1.22.2 # pinned by Snyk to avoid a vulnerability
opencv-python>=4.6.0
pillow>=7.1.2
pyyaml>=5.3.1
requests>=2.23.0
scipy>=1.4.1
# torch>=1.8.0
# torchvision>=0.9.0
tqdm>=4.64.0
# Logging -------------------------------------
# tensorboard>=2.13.0
# dvclive>=2.12.0
# clearml
# comet
# Plotting ------------------------------------
pandas>=1.1.4
seaborn>=0.11.0
# Export --------------------------------------
# coremltools>=7.0.b1 # CoreML export
# onnx>=1.12.0 # ONNX export
# onnxsim>=0.4.1 # ONNX simplifier
# nvidia-pyindex # TensorRT export
# nvidia-tensorrt # TensorRT export
# scikit-learn==0.19.2 # CoreML quantization
# tensorflow>=2.4.1 # TF exports (-cpu, -aarch64, -macos)
# tflite-support
# tensorflowjs>=3.9.0 # TF.js export
# openvino-dev>=2023.0 # OpenVINO export
# Extras --------------------------------------
psutil # system utilization
py-cpuinfo # display CPU info
# thop>=0.1.1 # FLOPs computation
# ipython # interactive notebook
# albumentations>=1.0.3 # training augmentations
# pycocotools>=2.0.6 # COCO mAP
# roboflow
easydict
pybaseutils
pycocotools
toolz
推荐使用Python3.10,更高版本可能存在版本差异问题, 项目安装教程请参考(初学者入门,麻烦先看完下面教程,配置好开发环境):
- 项目开发使用教程和常见问题和解决方法
- 视频教程: 1 手把手教你安装CUDA和cuDNN(1)
- 视频教程: 2 手把手教你安装CUDA和cuDNN(2)
- 视频教程: 3 如何用Anaconda创建pycharm环境
- 视频教程: 4 如何在pycharm中使用Anaconda创建的python环境
- 推荐使用Python3.10,更高版本可能存在版本差异问题
(2)准备Train和Test数据
下载人体检测数据集, 关于人体数据集说明,请参考《行人检测(人体检测)1:人体检测数据集(含下载链接)》:行人检测(人体检测)1:人体检测数据集(含下载链接)
(3)配置数据文件
- 修改训练和测试数据的路径:cfg/custom/voc-face-person.yaml
bash
# VOC 数据集
data_type: "voc"
path: "./" # TODO 数据集根目录,如果是相对路径,需要指定根目录,如path="./"
train:
- 'D:/dataset/face_person/COCO/trainval.txt'
- 'D:/dataset/face_person/COCO/test.txt'
- 'D:/dataset/face_person/MPII/trainval.txt'
- 'D:/dataset/face_person/VOC/VOC2007/trainval.txt'
- 'D:/dataset/face_person/VOC/VOC2012/trainval.txt'
val:
- 'D:/dataset/face_person/MPII/test.txt'
test: # test images (optional)
check: True # 是否检查数据集是否完整
names: [ 'face','person'] # 设置你需要训练的类别名称
**(4)**超参文件
修改训练超参文件cfg/default.yaml,可以修改训练学习率,数据增强等方式,使用默认即可,可不修改。
关于训练参数的具体说明,请参数这里:使用 Ultralytics YOLO 进行模型训练 | Ultralytics
(5)开始训练
整套训练代码非常简单操作,用户只需要填写好对应的数据路径,即可开始训练了。
- Linux系统终端训练命令bash scripts/train.sh(选择其中一个训练即可)
bash
#!/usr/bin/env bash
# TODO ---------------------训练YOLOv8模型---------------------
imgsz=416
task="detect"
data="cfg/custom/voc-face-person.yaml"
cfg="cfg/default.yaml"
weights="data/model/pretrained/yolov8n.pt"
model="cfg/models/v8/yolov8n.yaml"
save_dir="output/face-person-${task}/yolov8n-${imgsz}"
device=0 # TODO GPU设备ID
python train.py --model $model --weights $weights --data $data --batch 8 --cfg $cfg --save_dir $save_dir --task $task --epochs 300 --imgsz $imgsz --device $device
# TODO ---------------------训练YOLO11模型---------------------
imgsz=416
task="detect"
data="cfg/custom/voc-face-person.yaml"
cfg="cfg/default.yaml"
weights="data/model/pretrained/yolo11n.pt"
model="cfg/models/11/yolo11n.yaml"
save_dir="output/face-person-${task}/yolo11n-${imgsz}"
device=0 # TODO GPU设备ID
python train.py --model $model --weights $weights --data $data --batch 8 --cfg $cfg --save_dir $save_dir --task $task --epochs 300 --imgsz $imgsz --device $device
# TODO ---------------------训练YOLO26模型---------------------
imgsz=416
task="detect"
data="cfg/custom/voc-face-person.yaml"
cfg="cfg/default.yaml"
weights="data/model/pretrained/yolo26n.pt"
model="cfg/models/26/yolo26.yaml"
save_dir="output/face-person-${task}/yolo26n-${imgsz}"
device=0 # TODO GPU设备ID
python train.py --model $model --weights $weights --data $data --batch 8 --cfg $cfg --save_dir $save_dir --task $task --epochs 300 --imgsz $imgsz --device $device
- Windows系统终端训练命令(选择其中一个训练即可)
bash
#!/usr/bin/env bash
# TODO ---------------------训练YOLO26n模型---------------------
python train.py --model cfg/models/v8/yolov8n.yaml --weights data/model/pretrained/yolov8n.pt --data cfg/custom/voc-face-person.yaml --batch 8 --cfg cfg/default.yaml --save_dir output/face-person-detect/yolov8n-416 --task detect --epochs 300 --imgsz 416 --device 0
# TODO ---------------------训练YOLO11模型---------------------
python train.py --model cfg/models/11/yolo11n.yaml --weights data/model/pretrained/yolo11n.pt --data cfg/custom/voc-face-person.yaml --batch 8 --cfg cfg/default.yaml --save_dir output/face-person-detect/yolo11n-416 --task detect --epochs 300 --imgsz 416 --device 0
# TODO ---------------------训练YOLO8n模型---------------------
python train.py --model cfg/models/26/yolo26.yaml --weights data/model/pretrained/yolo26n.pt --data cfg/custom/voc-face-person.yaml --batch 64 --cfg cfg/default.yaml --save_dir output/face-person-detect/yolo26n-416 --task detect --epochs 300 --imgsz 416 --device 0
- 开始训练:
- 训练数据量比较大,训练时间比较长,请耐心等待哈
- 训练完成后,在模型输出目录中有个results.csv文件,记录每个epoch测试的结果,如loss,mAP等信息
|-------------|----------------|---------------|------------|-------------|------------------|
| 模型 | input-size | params(M) | GFLOPs | mAP_0.5 | mAP_0.5:0.95 |
| YOLOv8n | 416×416 | 3.15M | 3.7 | 0.97046 | 0.79315 |
| YOLO11n | 416×416 | 2.62M | 2.7 | 0.97001 | 0.79531 |
| YOLO26n | 416×416 | 2.41M | 2.3 | 0.97002 | 0.79009 |
(6)可视化训练结果
在输出目录,保存很多性能指标的图片
- 这是训练epoch的可视化图,可以看到mAP随着Epoch训练,逐渐提高(见result.png)

- 这是每个类别的F1-Score分数(见BoxF1_curve.png)

- 这是模型的PR曲线(见BoxPR_curve.png)
- 这是混淆矩阵(见confusion_matrix_normalized.png):

(7)常见的错误
- 项目常见问题和解决方法,请参考https://blog.csdn.net/guyuealian/article/details/164299205
- 项目不要出现含有中文字符的目录文件或路径,否则会出现很多异常!!!!!!!!
4. Python版本人脸检测和行人检测效果
demo.py文件用于推理和测试模型的效果,填写好模型文件以及测试图片即可运行测试了
- 测试图片
bash
# TODO 测试图片
python demo.py --weights "output/face-person-detect/yolo26n-416/weights/best.pt" --image_dir "data/test_image" --imgsz 416
- 测试视频文件
bash
# TODO 测试视频文件
python demo.py --weights "output/face-person-detect/yolo26n-416/weights/best.pt" --video_file "data/video1.mp4" --imgsz 416
- 测试摄像头
bash
# TODO 测试摄像头
python demo.py --weights "output/face-person-detect/yolo26n-416/weights/best.pt" --video_file 0 --imgsz 416
下面人脸检测和行人(人体)检测效果:
|-------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|
|
|
|
|
|
|
|
|
|
如果想进一步提高模型的性能,可以尝试:
扩充训练样本:当前已有10W+的数据量,建议结合自身业务场景,持续采集更具代表性的真实场景数据(如不同光照、角度、遮挡情况),以提升模型的泛化能力和鲁棒性。
数据质量提升:对现有数据进行清洗和标注复核,剔除错误标注样本,确保标签一致性与准确性。
引入更多数据增强组合:除基础的翻转、旋转、缩放外,可尝试MixUp、Mosaic、Cutout、随机擦除等增强策略,并调整其概率与强度参数,通过对比实验筛选最适合当前任务的数据增强组合。
选用更大参数量模型:本教程使用的YOLOv8n、YOLO26n参数量较少,可尝试升级为YOLOv8s、YOLO26s甚至YOLOv8m/l等系列模型。
5. Android版本人脸检测和行人检测效果
已经完成Android版本人脸检测和行人检测 算法开发,APP在普通Android手机上可以达到实时的检测和识别效果,CPU(4线程)约40ms左右,GPU约20ms左右 ,基本满足业务的性能需求。详细说明请查看:人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测) https://blog.csdn.net/guyuealian/article/details/164629596
Android人脸检测和行人检测APP Demo体验:https://download.csdn.net/download/guyuealian/93441570

6.项目源码下载
整套项目源码内容包含:人脸检测和行人检测数据集 + 训练代码和测试代码
如需下载项目源码,请WX关注【AI吃大瓜】,回复【人脸检测和人体检测】即可下载
项目源码包含内容:
(1)人脸检测和行人检测数据集:
- **VOC人脸人体检测数据集:**VOC2007共9963张图片,VOC2012共17125张图片,已经标注了人脸框(face)和人体框(person)
- **COCO人脸人体检测数据集:**总共66697张含有人体的图片,已经标注了人脸框(face)和人体框(person)
- **MPII人脸人体检测数据集:**总共21430张含有人体的图片,已经标注了人脸框(face)和人体框(person)
- 详细说明,请查看《人脸检测和人体检测(行人检测)1:人脸检测和人体检测数据集(含下载链接) 》:人脸检测和人体检测(行人检测)1:人脸检测和人体检测数据集(含下载链接)
(2)训练代码和测试代码(Pytorch)
- 包含整套训练和测试工程项目源码,含训练代码train.py和测试代码demo.py
- 基于ultralytics开发了增强版本ultralytics-plus,完全兼容开源库ultralytics,支持Labelme、COCO 和 Pascal VOC等数据格式。
- 项目包含了训练好pretrained模型文件(YOLOv8n YOLO11n YOLO26n),配置好环境,可直接运行demo.py
- 测试代码demo.py支持图片,视频和摄像头测试
Android人脸检测和行人检测APP Demo体验:https://download.csdn.net/download/guyuealian/93441570
