财神机器人

番摊机器人,顶尖机器人,数聊机器人,粮草机器人

粮草机器人 Ultralytics YOLOv26 中训练自定义数据集非常简便

在 Ultralytics YOLOv26 中训练自定义数据集非常简便,框架自动处理了预训练权重的迁移和层结构的适配。以下是完整的操作指南:


1. 准备数据集


YOLOv26 支持标准的 YOLO 格式数据集。你需要构建如下目录结构:


text

dataset/

├── images/

│   ├── train/      # 训练集图片

│   └── val/        # 验证集图片

├── labels/

│   ├── train/      # 训练集标签 (.txt)

│   └── val/        # 验证集标签 (.txt)

└── data.yaml       # 数据集配置文件



标签格式说明:‌

每个图片对应一个 .txt 文件,每行代表一个目标,格式为:

class_id x_center y_center width height


所有数值均为归一化值(0-1之间)。

class_id 从 0 开始索引。

2. 创建数据配置文件 (data.yaml)


在项目根目录下创建一个 YAML 文件(例如 custom.yaml),内容如下:


yaml

# 数据集路径 (可以是绝对路径或相对于此yaml文件的路径)

path: ./dataset  # 数据集根目录

train: images/train  # 训练集图片相对路径

val: images/val      # 验证集图片相对路径


# 类别数量

nc: 5  # 替换为你实际的类别数量


# 类别名称列表

names:

  0: cat

  1: dog

  2: bird

  3: car

  4: person


3. 开始训练


YOLOv26 会自动加载预训练权重(如 yolo26n.pt),并根据你的类别数量自动调整检测头(Detection Head)的形状,无需手动修改模型结构或编写迁移学习代码。


使用 Python 代码训练

python

from ultralytics import YOLO


# 加载预训练模型 (支持 n, s, m, l, x 等不同规模)

model = YOLO("yolo26n.pt")


# 开始训练

results = model.train(

    data="custom.yaml",  # 指向你的数据配置文件

    epochs=100,          # 训练轮数

    imgsz=640,           # 输入图像尺寸

    batch=16,            # 批次大小

    device=0             # 使用GPU设备ID,cpu则设为'cpu'

)


使用命令行 (CLI) 训练

bash

yolo detect train data=custom.yaml model=yolo26n.pt epochs=100 imgsz=640 batch=16


4. 关键机制说明

自动权重迁移‌:当你加载预训练模型(如 yolo26n.pt)并调用 .train() 时,Ultralytics 会执行“形状感知权重转移”(Shape-aware weight transfer)。

Backbone 和 Neck‌:完全保留预训练权重,因为它们提取的通用视觉特征与类别数量无关。

Detection Head‌:分类输出层(如 cv3)会根据你设置的类别数量(nc)重新初始化。例如,从 COCO 的 80 类迁移到你的 5 类时,只有最后一层会被重置,其余部分继续利用预训练知识。

无需手动干预‌:不需要手动冻结层、修改网络架构或编写自定义的迁移学习逻辑。

5. 训练后验证与预测


训练完成后,模型权重默认保存在 runs/detect/train/weights/best.pt。


python

# 加载最佳模型进行验证

model = YOLO("runs/detect/train/weights/best.pt")

metrics = model.val()  # 在验证集上评估性能


# 对新图片进行预测

results = model.predict("path/to/image.jpg", save=True)


常见问题建议

显存不足‌:如果报错 OOM (Out Of Memory),请减小 batch 大小(如改为 8 或 4),或减小 imgsz。

数据增强‌:YOLOv26 默认启用了多种数据增强(如 Mosaic, Mixup 等)。如果数据集较小,这些增强有助于防止过拟合;如果训练初期损失不下降,可检查数据标注是否正确。

预训练模型选择‌:

yolo26n.pt: 最快,精度最低,适合边缘设备。

yolo26s.pt / m.pt: 平衡速度与精度,推荐首选。

yolo26l.pt / x.pt: 精度最高,速度较慢,适合高性能服务器。


Powered By Z-BlogPHP 1.7.3

财神机器人,顶尖机器人,数聊机器人,粮草机器人