yolov8训练自定义数据集——settings.yaml与自定义数据集.yaml指向路径的配置问题

本文详细介绍了Yolov8中与数据集相关的settings文件设置、查看、修改方法,以及自定义数据集.yaml文件的官方格式和常见错误处理。包括如何通过Python代码和终端操作来管理设置,以及解决找不到数据集路径的问题。

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

摘要

如果你在调用模型预测后找不到预测后的结果存放路径,如果你在训练模型时出现找不到数据集存放位置,都可以来这里寻找答案
找不到数据集的报错可能如下:

RuntimeError: Dataset 'csgo.yaml' error ❌ 
Dataset 'xxx.yaml' images not found ⚠️, missing path '/root/tmp/xxxx'
Note dataset download directory is '/root/'. You can update this in '/root/.config/Ultralytics/settings.yaml'

一、yolov8中与数据集有关的文件

  1. settings文件
  2. 自定义数据集时需要编写的.yaml文件

二、settings文件

(一)settings文件的参数信息

在这里插入图片描述
实际例子
在这里插入图片描述

(二)如何查看

yolo官网
可以使用以下代码查看settings文件的参数信息

from ultralytics import settings

# View all settings
print(settings)

# Return a specific setting
value = settings['runs_dir']

也可以在终端使用

yolo settings

(三)如何修改

1、python代码修改
from ultralytics import settings

# Update a setting
settings.update({'runs_dir': '/path/to/runs'})

# Update multiple settings
settings.update({'runs_dir': '/path/to/runs', 'tensorboard': False})

# Reset settings to default values
settings.reset()
2、终端修改
# Update a setting
yolo settings runs_dir='/path/to/runs'

# Update multiple settings
yolo settings runs_dir='/path/to/runs' tensorboard=False

# Reset settings to default values
yolo settings reset
3、找到文件所在位置直接编辑

在 …\ultralytics\ultralytics\utils 下有 init.py 文件,其中指明了 YOLOv8 的数据集配置文件的存放位置,不同的操作系统有不同的位置。

def get_user_config_dir(sub_dir="Ultralytics"):
    """
    Get the user config directory.

    Args:
        sub_dir (str): The name of the subdirectory to create.

    Returns:
        (Path): The path to the user config directory.
    """
    # Return the appropriate config directory for each operating system
    if WINDOWS:
        path = Path.home() / "AppData" / "Roaming" / sub_dir
    elif MACOS:  # macOS
        path = Path.home() / "Library" / "Application Support" / sub_dir
    elif LINUX:
        path = Path.home() / ".config" / sub_dir
    else:
        raise ValueError(f"Unsupported operating system: {platform.system()}")

    # GCP and AWS lambda fix, only /tmp is writeable
    if not is_dir_writeable(path.parent):
        LOGGER.warning(
            f"WARNING ⚠️ user config directory '{path}' is not writeable, defaulting to '/tmp' or CWD."
            "Alternatively you can define a YOLO_CONFIG_DIR environment variable for this path."
        )
        path = Path("/tmp") / sub_dir if is_dir_writeable("/tmp") else Path().cwd() / sub_dir

    # Create the subdirectory if it does not exist
    path.mkdir(parents=True, exist_ok=True)

    return path

在不同的操作系统中均可以使用以下代码查找到路径信息

from pathlib import Path
 
print(Path.home())

依照路径和代码中的信息即可找到settings文件

三 训练自定义数据集需要创建的.yaml文件

(一).yaml文件的格式

1、这是官方格式
# 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: ../datasets/coco8-pose  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

# Keypoints
kpt_shape: [17, 3]  # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
# 共有多少个关键点,维度是多少
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
# 反转后关键点的对应关系

# Classes dictionary
names:
  0: person

如果维度为2

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
# 采用这种格式、 <class-index> 是对象的类索引、<x> <y> <width> <height> 是边界框的坐标及宽和高,而 <px1> <py1> <px2> <py2> ... <pxn> <pyn> 是关键点的像素坐标。坐标之间用空格隔开。

如果维度为3

<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <p2-visibility>
<pn-visibility>:0代表不可见、1代表遮挡、2代表可见
2、可能的修改

如:

RuntimeError: Dataset 'csgo.yaml' error ❌ 
Dataset 'xxx.yaml' images not found ⚠️, missing path '/root/tmp/xxxx'
Note dataset download directory is '/root/'. You can update this in '/root/.config/Ultralytics/settings.yaml'

所以如果你严格按照官方路径填写而报错,你可以将它修改为绝对路径
例如:
在这里插入图片描述
在此时settings文件的配置如图
在这里插入图片描述

### 如何修改 YOLOv5 模型训练时使用的图片数量 在使用 YOLOv5 进行自定义数据集训练的过程中,可以通过调整配置文件中的参数来控制用于训练的图片数量。以下是具体方法: #### 1. 调整 `data.yaml` 文件 YOLOv5 的数据集配置通常存储在一个名为 `data.yaml` 的文件中。此文件指定了训练集和验证集的数据路径以及类别信息。 如果希望减少或增加训练过程中所使用的图片数量,可以手动筛选并重新组织训练集文件夹的内容。例如,假设原始训练集中有大量图片,而只想从中选取一部分,则可以直接删除不需要的图片及其对应的标注文件(通常是 `.txt` 格式的标签文件),或者创建一个新的子集文件夹[^1]。 ```yaml # data.yaml 示例结构 train: ../datasets/custom/images/train/ # 训练路径 val: ../datasets/custom/images/val/ # 验证集路径 nc: 2 # 类别数 names: ['class1', 'class2'] # 类别名称列表 ``` 通过更改上述 `train` 字段指向的新子集路径即可实现对训练图片数量的间接控制。 --- #### 2. 修改批量大小 (Batch Size) 虽然这不会直接影响总的图片数量,但设置较小的批次大小可能会让每次迭代处理更少的样本。批次数目由以下公式决定: \[ \text{总步数} = \frac{\text{训练集总数}}{\text{每轮次 batch size 数量}} \] 因此降低 Batch Size 可以使单次 epoch 中涉及的实际图片数目变少。不过需要注意的是过低的 Batch Size 值可能会影响收敛效果[^3]。 --- #### 3. 设置最大 Epochs 和 Steps 参数 当调用 `train.py` 开始训练过程前,还可以设定一些额外的关键字参数比如 epochs 或者 steps 来进一步约束整个学习周期内的计算范围。这些选项允许开发者明确告知框架应该运行多少个完整的 pass-through 整体 dataset 上面去完成最终目标模型构建工作[^2]。 对于限制实际参运算的具体张数来说,主要依赖于 step 定义方式——即每一个 mini-batch 更新操作视为一步(step),所以理论上只要合理规划好每个 epcoh 内部包含几步就相当于间接实现了总量上的把控功能啦! --- #### 4. 使用命令行参数覆盖默认行为 最后一种简单粗暴的办法就是在启动脚本的时候直接利用 CLI(Command Line Interface)形式传入新的 hyper-parameter values ,从而达到快速切换不同实验条件的目的 。例如下面这条典型的 python script 执行语句展示了如何指定 custom datasets location 同时还附带了一些其它重要 flags : ```bash python train.py --img 640 --batch 16 --epochs 50 \ --data path/to/data.yaml \ --cfg yolov5s.yaml \ --weights '' \ --name my_experiment_name ``` 其中某些 flag 就是用来帮助我们灵活定制 session settings 的工具之一哦~像这里的 "--epoch" 就能轻松改变整体循环遍历次数进而影响到总体消耗资源情况咯!当然还有更多类似的开关等着大家探索发现呢😊 --- ### 总结 综上所述,要修改 YOLOv5 模型训练期间采用的图像数量,可以从以下几个方面入手:一是编辑 `data.yaml` 文件里的路径字段;二是适当调节 batch sizes 大小数值关系;三是借助 max_epochs /steps 等高级特性做精细化管理;四是善加运用 command-line arguments 实现即时动态调整需求场景下的最佳实践方案[^1].
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值