tmp

cat /proc/cpuinfo | grep "Model" || lscpu


YOLOv8 推荐使用标准的 YOLO 格式 数据集。它的核心逻辑是:图片(images)和标签(labels)要分文件夹存放,且同名文件一一对应。

下面是完整的数据集目录结构以及对应的 .yaml 配置文件格式:

1. 数据集目录结构

建议在你的项目根目录下,按照以下结构来组织图片和标签:

my_yolo_dataset/          # 数据集根目录
├── train/                # 训练集
│   ├── images/           # 存放训练集的图片 (jpg, jpeg, png)
│   │   ├── 0001.jpg
│   │   └── 0002.jpg
│   └── labels/           # 存放训练集的标签 (txt),文件名必须与图片完全一致
│       ├── 0001.txt
│       └── 0002.txt
├── val/                  # 验证集(用于训练过程中评估模型)
│   ├── images/
│   │   ├── 0101.jpg
│   │   └── 0102.jpg
│   └── labels/
│       ├── 0101.txt
│       └── 0102.txt
└── test/                 # 测试集(可选,仅用于最终评估,可不创建)
    ├── images/
    └── labels/

⚠️ 关键规则:
imageslabels 这两个文件夹的名字千万不能改动。YOLOv8 在加载图片后,会自动把路径中的 images 替换为 labels 来寻找对应的标签文件。如果改了名字,程序会报错找不到标签。


2. 标签文件(.txt)的内部格式

对于每张图片,对应的 .txt 文件中,每一行代表一个目标物体
格式为:类别ID 归一化后的中心点X 归一化后的中心点Y 归一化后的宽度W 归一化后的高度H

例如 0001.txt 的内容可能长这样:

0 0.485 0.352 0.120 0.215
1 0.712 0.540 0.085 0.150

  • 类别ID:从 0 开始计数(例如 0 代表猫,1 代表狗)。
  • 数值归一化:所有的坐标都必须是相对比例(范围在 0.01.0 之间),而不是像素值。
  • \(X_{center} = \frac{\text{目标中心点像素X}}{\text{图片总宽度}}\)
  • \(Y_{center} = \frac{\text{目标中心点像素Y}}{\text{图片总高度}}\)

3. .yaml 配置文件格式

my_yolo_dataset 文件夹同级(或任意方便的地方),创建一个名为 data.yaml 的文件,内容如下:

# 1. 数据集根目录的绝对路径(或者相对于你运行训练代码处的相对路径)
path: /home/orange/my_yolo_dataset  

# 2. 训练集、验证集和测试集相对于 path 的子路径
train: train/images  
val: val/images    
test: test/images  # 如果没有测试集,这一行可以直接删掉

# 3. 目标分类信息
names:
  0: cat
  1: dog
  2: car


4. 如何在代码中调用

准备好上述结构和文件后,你只需要在 Python 中把 data.yaml 的路径传给 train 函数即可:

from ultralytics import YOLO

# 加载模型
model = YOLO("yolov8n.pt")

# 开始训练
model.train(
    data="/path/to/data.yaml",  # 你的 yaml 文件路径
    epochs=100,                 # 训练轮数
    imgsz=640,                  # 输入图片大小
    device="cpu"                # 香橙派上如果没有配置 NPU/GPU,这里填 cpu
)

posted @ 2025-12-12 18:31  TimeLimit  阅读(104)  评论(2)    收藏  举报