以下是一篇适合yolov8 使用示例,涵盖了从 Roboflow 生成数据集,到在 Colab 使用 YOLOv8 进行分割(segment)任务的完整流程。文章按照实际操作步骤进行了组织,方便直接了解 使用yolo和阅读。
使用 Roboflow 生成数据集并在 Colab 上用 YOLOv8 进行分割训练的完整教程
本文将带你从数据集准备到模型训练、验证及推理的完整流程。适合对目标分割(Instance Segmentation)任务感兴趣,且想快速上手 YOLOv8 的读者。
一、前言
在计算机视觉的各类任务中,目标分割(Instance Segmentation) 和 目标检测(Object Detection) 有着极为广泛的应用场景。Roboflow 作为一个可视化的数据集管理与标注平台,不仅提供了方便的在线标注、数据增强,还能一键导出多种模型格式,包括 YOLOv8、COCO、VOC 等。
在本文中,我们将演示如何:
- 使用 Roboflow 对图片进行标注和增强,并导出 YOLOv8 格式的分割数据集
- 将导出的压缩包上传到 Google Colab 环境中
- 使用 ultralytics 提供的 YOLOv8 分割模型进行训练
- 对训练好的模型进行验证和推理
最终,你会获取到一个能够进行目标分割的 best.pt 权重文件。
二、使用 Roboflow 生成 YOLOv8 分割数据集
-
在 Roboflow 创建项目
- 登录 Roboflow(需要注册账号)。
- 创建一个新的项目(选择目标分割/Instance Segmentation)。
- 将你的图片上传并进行标注(若已标注,可直接导入标注 JSON/COCO 等文件)。
-
数据增强(可选)
- 在 Roboflow 中,你可以轻松配置数据增强,如随机裁剪、旋转、色彩抖动等。
- 配置完成后,Roboflow 会自动生成新的数据版本。
-
导出 YOLOv8 分割格式
- 在 Roboflow 项目界面,点击
Export按钮。 - 选择模型类型:
Ultralytics YOLOv8 (Instance Segmentation)。 - 下载生成的压缩包(一般名字类似
xxx.vx.yolov8.zip),比如本文示例中的Tenis.v3i.yolov8.zip。
- 在 Roboflow 项目界面,点击
三、在 Google Colab 准备训练环境
3.1 新建 Colab 笔记本,切换 GPU
- 打开 Google Colab,新建一个 Notebook。
- 在菜单栏依次点击: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 准备好。
-
上传到 Colab
- 在 Colab 左侧的文件面板 (Files),点击“上传”,将
Tenis.v3i.yolov8.zip上传到当前 Colab 工作目录(默认/content)。
- 在 Colab 左侧的文件面板 (Files),点击“上传”,将
-
解压
!unzip -q /content/Tenis.v3i.yolov8.zip -d /content/TenisDataset解压后即可在
/content/TenisDataset文件夹下看到train、valid(或val)及data.yaml等文件。 -
查看文件结构
!ls /content/TenisDataset通常会看到
data.yaml、train,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
确认 train、val 路径正确,nc、names 等信息无误。
六、使用 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.pt或yolov8s-seg.pt。data=...:指定刚才的data.yaml路径。epochs=50:可根据时间和硬件资源自由调整。imgsz=640:图片缩放尺寸,640 常见且兼顾精度和速度。project和name:训练结果的保存目录和实验名称。
完成后,会在 /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 中:
- 准备训练环境(安装 ultralytics、设置 GPU)。
- 解压并检查
data.yaml。 - 运行 YOLOv8(命令行或 Python API)进行训练。
- 使用验证集和推理来衡量模型性能及查看分割可视化效果。
至此,你已经拥有了一个分割任务的完整项目流程,以及一个可以进行推理使用的 best.pt 模型文件。希望本教程能帮助你快速上手 YOLOv8 的实例分割任务,并在后续的实验中不断改进和扩展!
下一步:
- 你可以尝试修改不同大小的 YOLOv8 分割权重(nano/s/m/l/x)对比性能。
- 通过增大训练轮数、增加数据增强或调整学习率等超参,进一步提升分割精度。
- 将你的最佳权重部署到推理服务或本地应用中,实现实时或离线的目标分割。
祝学习和研究顺利,期待你在更多场景中应用 YOLOv8 分割模型!
关于作者:
本文作者关注计算机视觉、深度学习前沿技术,热衷于分享 AI 技术落地经验。如果你喜欢本文,欢迎点赞、评论或关注作者。
完