当前位置:   article > 正文

YOLO_V8训练自己的数据集_yolov8训练自己的数据集

yolov8训练自己的数据集

YOLO_V8在2023年开年横空出世,在春节前还得卷一下。

由于YOLO_V8和YOLO_V5是同一个作者,所以很多操作都是一样的,下面主要描述一下如何用自己的数据集进行训练和测试(非命令行的方式)。

1、训练数据和模型的目录结构

这里以口罩数据集为例,该数据集分为两类,戴口罩和不戴口罩:['mask', 'no-mask'],由于本文是进行目标检测任务,直接将数据集放到“detect”目录下,实际使用时可将“MaskDataSet”文件夹放到工程中的任何位置。

  1. MaskDataSet
  2. ├─ test
  3. │ ├─ images
  4. │ │ └─ ······
  5. │ └─ labels
  6. │ └─ ······
  7. ├─ train
  8. │ ├─ images
  9. │ │ └─ ······
  10. │ └─ labels
  11. │ └─ ······
  12. ├─ valid
  13. │ ├─ images
  14. │ │ └─ ······
  15. │ └─ labels
  16. │ └─ ······
  17. ├─ data.yaml
  18. └─ yolov8s.yaml

2、训练数据集的说明

train文件夹下主要包含训练图片images和标签labels,其中图片名和标签文件(.txt)名一一对应,且标签文件中保存的是对应图片中各个目标的类别和坐标(和YOLO_V5一样),例如:

  1. 类别+坐标
  2. 0 0.4669 0.2392 0.1822 0.3123

test和valid存储的东西和train完全一致。

3、数据集参数文件data.yaml

data.yaml文件保存训练数据集的目录,类别数,类别名,如图所示:

我这里由于数据集的路径太深,直接使用了绝对路径,可根据需求自行修改。

4、模型参数文件yolov8s.yaml

YOLO_V8包含5种模型,主要差异还是在:depth_multiple和width_multiple

  1. depth_multiple: 0.33 # scales module repeats
  2. width_multiple: 0.50 # scales convolution channels

本文以YOLOv8s为例进行说明,将yolov8s.yaml中的nc改为2即可。

5、训练前的参数配置

之前的YOLO_V5实在train.py文件中配置模型路径,数据路径,epochs等参数的,但是YOLO_V8做了较大的改变,将所有的参数整合到一个文件中集中配置(.\YOLOv8\ultralytics\yolo\configs\default.yaml),并且划分了检测、分类、分割任务,便于后续集成多个项目,特别容易维护。

  1. task: "detect" # choices=['detect', 'segment', 'classify', 'init'] # init is a special case. Specify task to run.
  2. mode: "predict" # choices=['train', 'val', 'predict', 'export'] # mode to run task in.

特别注意:mode应该加一个‘export’,在模型格式转换时就选择的是export。

6、开始训练

运行:YOLOv8\ultralytics\yolo\v8\detect\train.py,即可开始训练。

7、可能遇到的问题

1> OSError: [WinError 1455]页面文件太小,无法完成操作。

解决方法: 修改train.py中配置项workers的默认值,从初始值8修改为0(也可以试试1或2等较小的数)。

错误原因: workers=2, # 每个gpu分配的线程数,给每一个GPU喂数据的进程,GPU性能越强,取值越大,这样才能充分利用GPU的算力。如果用自己的电脑训练,这个值需要取小一些。

我在使用过程中直接将workers改为0

参考:https://blog.csdn.net/q839039228/article/details/124514664

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号