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/
⚠️ 关键规则:
images和labels这两个文件夹的名字千万不能改动。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.0到1.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
)

浙公网安备 33010602011771号