YOLOv8.2入门案例行人检测教程

YOLOv8.2入门案例行人检测教程

实验目的

学会使用YOLOv8训练自己的数据集实现对视频人物检测

在这里插入图片描述

实验环境

python=3.8.19
Windows=11
pytorch=2.0.1+cu117
Yolov8=8.2

实验步骤

代码获取

官方代码地址(不推荐,更新后可能会有差异导致其它问题):https://github.com/ultralytics/ultralytics

本次演示代码地址(clone in 2024.4.22):https://pan.baidu.com/s/1dZ_XRhTGcT7Fg7g3xQ5gDA?pwd=vnuq

解压后打开终端进入到项目目录下

如下图

这是我的项目目录确保当前目录下是项目文件,否则后续命令无法正常运行

环境安装

电脑有GPU的用这个命令

conda create -n yolov8-seg python=3.8 -y 
conda activate yolov8-seg       
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 
pip install ultralytics 

仅有CPU的用这个命令

conda create -n yolov8-seg python=3.8 -y 
conda activate yolov8-seg       
pip install torch torchvision torchaudio 
pip install ultralytics 

上述步骤依次为

  1. 创建环境
  2. 进入环境
  3. 安装pytorch
  4. 安装项目环境

验证环境

yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' 

出现Results saved to即可,可以自行去路径下看看预测结果图像

结果图像

在这里插入图片描述

数据集准备

行人检测数据集下载链接:https://pan.baidu.com/s/1A4IFt-EluQ6BBhQ4r1tgWQ?pwd=okci

目录结构

├── CUHKSYSU
│   ├── data #原始数据集
│   │   ├── images
│   │   ├── labels
│   ├── train #划分后训练集
│   │   ├── images
│   │   ├── labels
│   ├── val  #划分后测试集
│   │   ├── images
│   │   ├── labels

修改配置文件

数据集配置文件

ultralytics\cfg\datasets目录下新建custom.yaml文件,内容如下

将提供的数据集下载后,path后的路径改为自己的

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO128-seg dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco/
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco128-seg  ← downloads here (7 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: D:\Users\13055\Desktop\CUHKSYSU # dataset root dir
train: train/images # train images (relative to 'path') 128 images
val: val/images # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes
names:
  0: person

上述文件参数解释(注意yaml文件语法格式,:后面有空格)

参数名解释示例值
path自己的数据集路径D:\Users\13055\Desktop\CUHKSYSU
trainpath目录下训练集图像所在文件夹的相对路径train/images
valpath目录下验证集图像所在文件夹的相对路径val/images
testpath目录下测试集图像所在文件夹的相对路径test/images
names数据集中类别数,格式为 索引值: 标签名0: person
模型配置文件

ultralytics\cfg\models目录下新建yolov8n.yaml文件,内容如下

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect

# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.33, 0.25, 1024] # YOLOv8n summary: 225 layers,  3157200 parameters,  3157184 gradients,   8.9 GFLOPs
  s: [0.33, 0.50, 1024] # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients,  28.8 GFLOPs
  m: [0.67, 0.75, 768] # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients,  79.3 GFLOPs
  l: [1.00, 1.00, 512] # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPs
  x: [1.00, 1.25, 512] # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs

# YOLOv8.0n backbone
backbone:
  # [from, repeats, module, args]
  - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
  - [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
  - [-1, 3, C2f, [128, True]]
  - [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
  - [-1, 6, C2f, [256, True]]
  - [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
  - [-1, 6, C2f, [512, True]]
  - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
  - [-1, 3, C2f, [1024, True]]
  - [-1, 1, SPPF, [1024, 5]] # 9

# YOLOv8.0n head
head:
  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 6], 1, Concat, [1]] # cat backbone P4
  - [-1, 3, C2f, [512]] # 12

  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 4], 1, Concat, [1]] # cat backbone P3
  - [-1, 3, C2f, [256]] # 15 (P3/8-small)

  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 12], 1, Concat, [1]] # cat head P4
  - [-1, 3, C2f, [512]] # 18 (P4/16-medium)

  - [-1, 1, Conv, [512, 3, 2]]
  - [[-1, 9], 1, Concat, [1]] # cat head P5
  - [-1, 3, C2f, [1024]] # 21 (P5/32-large)

  - [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)

上述模型配置是yolov8原型,后续自己修改模块(如C2f换为C3)也是在配置文件中修改,实现模型结构清晰且与具体代码分离

训练自己模型

参数解释

参数名解释示例值默认值
data数据集配置文件路径ultralytics\cfg\datasets\custom.yaml-
model模型配置文件路径ultralytics\cfg\models\yolov8n.yaml-
epochs模型训练迭代次数100100
imgsz输入模型的图像resize后大小640640
batch每次输入迭次批量大小(-1代表自动分配)1616

训练命令

yolo train data=ultralytics\cfg\datasets\custom.yaml model=ultralytics\cfg\models\yolov8n.yaml epochs=20 imgsz=640 batch=-1

运行后

通常来说,上述标红处出现训练开始了,等待训练完成即可

实验结果

我这里用的GPU训练模型,受硬件条件以及模型超参数影响,结果会有区别

查看结果

标红处即为结果报保存的路径,通常在项目的runs目录下

内容如下

模型预测

预测图片

yolo predict model="D:\projects\python\ultralytics\runs\detect\train\weights\best.pt" source=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Ffile.zouran.top%2Fmarkdown%2F%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%2F1713859187671.jpg&pos_id=img-cqSaHSmP-1713863351248)

在这里插入图片描述

参数解释

参数名解释示例
model预测使用的模型路径D:\projects\python\ultralytics\runs\detect\train2\weights\best.pt
source需要预测的图片(url或者本地目录)https://ultralytics.com/images/bus.jpg或者bus.jpg

预测结果保存在标红处路径

查看结果

在这里插入图片描述

预测视频

yolo predict model="D:\projects\python\ultralytics\runs\detect\train\weights\best.pt" source=https://file.zouran.top/videos/person.mp4

原视频

person

下载链接:https://pan.baidu.com/s/1gbepMaggOkhbUWMIUKLuOg?pwd=c4ig

预测结果

在这里插入图片描述

常见问题

待补充

完整源代码

链接:https://pan.baidu.com/s/1YmxwiwxbggqGVCGy9cHkrQ?pwd=m36m

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我还没秃头~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值