使用 Roboflow 生成数据集并在 Colab 上用 YOLOv8 进行分割训练的完整教程

788 阅读6分钟

以下是一篇适合yolov8 使用示例,涵盖了从 Roboflow 生成数据集,到在 Colab 使用 YOLOv8 进行分割(segment)任务的完整流程。文章按照实际操作步骤进行了组织,方便直接了解 使用yolo和阅读。


使用 Roboflow 生成数据集并在 Colab 上用 YOLOv8 进行分割训练的完整教程

本文将带你从数据集准备到模型训练、验证及推理的完整流程。适合对目标分割(Instance Segmentation)任务感兴趣,且想快速上手 YOLOv8 的读者。


一、前言

在计算机视觉的各类任务中,目标分割(Instance Segmentation)目标检测(Object Detection) 有着极为广泛的应用场景。Roboflow 作为一个可视化的数据集管理与标注平台,不仅提供了方便的在线标注、数据增强,还能一键导出多种模型格式,包括 YOLOv8、COCO、VOC 等。

在本文中,我们将演示如何:

  1. 使用 Roboflow 对图片进行标注和增强,并导出 YOLOv8 格式的分割数据集
  2. 将导出的压缩包上传到 Google Colab 环境中
  3. 使用 ultralytics 提供的 YOLOv8 分割模型进行训练
  4. 对训练好的模型进行验证和推理

最终,你会获取到一个能够进行目标分割的 best.pt 权重文件。


二、使用 Roboflow 生成 YOLOv8 分割数据集

  1. 在 Roboflow 创建项目

    • 登录 Roboflow(需要注册账号)。
    • 创建一个新的项目(选择目标分割/Instance Segmentation)。
    • 将你的图片上传并进行标注(若已标注,可直接导入标注 JSON/COCO 等文件)。
  2. 数据增强(可选)

    • 在 Roboflow 中,你可以轻松配置数据增强,如随机裁剪、旋转、色彩抖动等。
    • 配置完成后,Roboflow 会自动生成新的数据版本。
  3. 导出 YOLOv8 分割格式

    • 在 Roboflow 项目界面,点击 Export 按钮。
    • 选择模型类型:Ultralytics YOLOv8 (Instance Segmentation)
    • 下载生成的压缩包(一般名字类似 xxx.vx.yolov8.zip),比如本文示例中的 Tenis.v3i.yolov8.zip

三、在 Google Colab 准备训练环境

3.1 新建 Colab 笔记本,切换 GPU

  1. 打开 Google Colab,新建一个 Notebook。
  2. 在菜单栏依次点击:Runtime -> Change runtime type -> Hardware accelerator -> 选择 GPU

3.2 安装 YOLOv8(ultralytics)

在第一个单元格执行以下命令:

!pip install ultralytics

安装完成后,还可以简单检查 PyTorch 版本及 GPU 状态:

import torch
print("PyTorch version:", torch.__version__)
!nvidia-smi

可选:若需要从 Google Drive 读写文件,可执行以下操作:

from google.colab import drive
drive.mount('/content/drive')

这样就可以在 /content/drive/MyDrive/ 路径访问自己的云端硬盘。


四、上传和解压数据集

假设你已经在本地将 Roboflow 导出的压缩包 Tenis.v3i.yolov8.zip 准备好。

  1. 上传到 Colab

    • 在 Colab 左侧的文件面板 (Files),点击“上传”,将 Tenis.v3i.yolov8.zip 上传到当前 Colab 工作目录(默认 /content)。
  2. 解压

    !unzip -q /content/Tenis.v3i.yolov8.zip -d /content/TenisDataset
    

    解压后即可在 /content/TenisDataset 文件夹下看到 trainvalid(或 val)及 data.yaml 等文件。

  3. 查看文件结构

    !ls /content/TenisDataset
    

    通常会看到 data.yamltrain, valid, test 等文件夹。


五、检查并修改 data.yaml

Roboflow 导出的数据集通常包含一个默认的 data.yaml 文件,负责告诉 YOLOv8:

  • 训练集与验证集图片路径
  • 类别(names)与数量(nc

示例 data.yaml 内容可能如下(仅演示):

train: ../train/images
val: ../valid/images
test: ../test/images

nc: 1
names: ['tennis_ball']

这里 .. 表示与 data.yaml 同级目录的上一级。如果解压后的结构与你的目录结构一致,一般无需修改。如果需要使用绝对路径,可手动编辑或使用 sed 命令,比如:

!sed -i 's#../train/images#/content/TenisDataset/train/images#g' /content/TenisDataset/data.yaml
!sed -i 's#../valid/images#/content/TenisDataset/valid/images#g' /content/TenisDataset/data.yaml
!sed -i 's#../test/images#/content/TenisDataset/test/images#g' /content/TenisDataset/data.yaml

然后再次查看:

!cat /content/TenisDataset/data.yaml

确认 trainval 路径正确,ncnames 等信息无误。


六、使用 YOLOv8(分割模式)进行训练

YOLOv8 支持命令行和 Python 接口方式,下面分别演示。

6.1 命令行方式

在 Colab 单元格中执行:

!yolo segment train \
    model=yolov8n-seg.pt \
    data=/content/TenisDataset/data.yaml \
    epochs=50 \
    imgsz=640 \
    project=/content/runs_segment \
    name=tennis_seg_experiment
  • model=yolov8n-seg.pt:选择小型分割预训练模型。如果显存足够,可用 yolov8m-seg.ptyolov8s-seg.pt
  • data=...:指定刚才的 data.yaml 路径。
  • epochs=50:可根据时间和硬件资源自由调整。
  • imgsz=640:图片缩放尺寸,640 常见且兼顾精度和速度。
  • projectname:训练结果的保存目录和实验名称。

完成后,会在 /content/runs_segment/tennis_seg_experiment/weights/ 下生成 best.pt(表现最好的权重)和 last.pt(最后一次训练的权重)。

6.2 Python API 方式

若想使用 ultralytics 提供的 Python API:

from ultralytics import YOLO

# 加载预训练的nano级分割权重
model = YOLO('yolov8n-seg.pt')

# 开始训练
model.train(
    data='/content/TenisDataset/data.yaml',
    epochs=50,
    imgsz=640,
    project='/content/runs_segment',
    name='tennis_seg_experiment'
)

训练结束后,输出目录与命令行保持一致。


七、验证和推理

7.1 在验证集上评估

  • 命令行

    !yolo segment val \
        model=/content/runs_segment/tennis_seg_experiment/weights/best.pt \
        data=/content/TenisDataset/data.yaml
    
  • Python

    from ultralytics import YOLO
    model = YOLO('/content/runs_segment/tennis_seg_experiment/weights/best.pt')
    metrics = model.val()
    print(metrics)
    

你会看到 mAP、Recall、Precision 等关键指标,用于衡量模型分割性能。

7.2 推理预测

可以选择对单张图片或整个文件夹做推理,看看可视化的分割结果。

  • 命令行

    !yolo segment predict \
        model=/content/runs_segment/tennis_seg_experiment/weights/best.pt \
        source=/content/TenisDataset/test/images \
        conf=0.25 \
        save=True
    

    推理后,生成的结果保存在 runs/segment/predict/ 目录(根据实际日志的提示查看)。

  • Python

    from ultralytics import YOLO
    model = YOLO('/content/runs_segment/tennis_seg_experiment/weights/best.pt')
    results = model.predict(source='/content/TenisDataset/test/images', conf=0.25, save=True)
    

在 Colab 左侧文件管理器里,可以下载推理结果查看可视化效果。


八、总结

通过本文的演示流程,我们从 Roboflow 标注并导出了 YOLOv8 分割格式的数据集,然后在 Colab 中:

  1. 准备训练环境(安装 ultralytics、设置 GPU)。
  2. 解压并检查 data.yaml
  3. 运行 YOLOv8(命令行或 Python API)进行训练。
  4. 使用验证集和推理来衡量模型性能及查看分割可视化效果。

至此,你已经拥有了一个分割任务的完整项目流程,以及一个可以进行推理使用的 best.pt 模型文件。希望本教程能帮助你快速上手 YOLOv8 的实例分割任务,并在后续的实验中不断改进和扩展!

下一步

  • 你可以尝试修改不同大小的 YOLOv8 分割权重(nano/s/m/l/x)对比性能。
  • 通过增大训练轮数、增加数据增强或调整学习率等超参,进一步提升分割精度。
  • 将你的最佳权重部署到推理服务或本地应用中,实现实时或离线的目标分割。

祝学习和研究顺利,期待你在更多场景中应用 YOLOv8 分割模型!


关于作者
本文作者关注计算机视觉、深度学习前沿技术,热衷于分享 AI 技术落地经验。如果你喜欢本文,欢迎点赞、评论或关注作者。