尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

YOLOv10 实例分割数据集完全指南:格式规范、YAML 配置与自动标注

YOLOv10 实例分割数据集完全指南:格式规范、YAML 配置与自动标注 YOLOv10 实例分割数据集完全指南格式规范、YAML 配置与自动标注【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10本文是 YOLOv10 项目中实例分割Instance Segmentation数据集体系的系统性技术指南围绕docs/en/datasets/segment/index.md的核心内容展开。你将掌握 Ultralytics YOLO 分割标注文件的逐行格式约定、数据集 YAML 的配置规范、COCO 标注到 YOLO 格式的转换方法以及基于检测模型 SAM 的自动标注流水线并了解仓库内置的多个分割数据集配置。一、实例分割数据集概述实例分割要求在检测出目标的同时输出每个目标实例的像素级掩码Mask因此其数据集标注格式比纯目标检测bounding box多出一组多边形轮廓点坐标。Ultralytics YOLO 系列包括本仓库的 YOLOv10对分割数据集采用统一的文本标注格式并配套一个 YAML 文件描述数据集路径与类别信息。本仓库在 ultralytics/cfg/datasets/ 目录下内置了多个分割数据集配置包括coco8-seg.yaml、carparts-seg.yaml、crack-seg.yaml、package-seg.yaml等它们都可以直接用于yolo segment train训练。二、Ultralytics YOLO 分割标注格式训练 YOLO 分割模型使用的标签格式遵循以下三条规则每张图像对应一个文本文件文本文件与图像文件同名扩展名为.txt。每行对应一个目标实例文本文件中每一行描述图像中的一个对象实例。每行包含目标完整信息行首为对象类别索引整数例如0表示 person1表示 car随后是该对象分割掩码的归一化轮廓坐标坐标值归一化到 01 之间。单行格式如下class-index x1 y1 x2 y2 ... xn yn其中class-index是对象的类别索引x1 y1 x2 y2 ... xn yn是对象分割掩码的多边形顶点坐标各数值以空格分隔。下面是一个包含两个对象一个 3 点分割和一个 5 点分割的单张图像的示例0 0.681 0.485 0.670 0.487 0.676 0.487 1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104使用该格式时需要注意两个要点每行的长度不必相等——不同对象的掩码多边形顶点数可以不同每个分割标签至少需要 3 个 xy 坐标点class-index x1 y1 x2 y2 x3 y3因为一个有效多边形至少需要三个顶点。源码层面的格式校验该格式约定在仓库的数据加载与校验逻辑中有所体现。例如 ultralytics/data/annotator.py 在写入自动标注结果时正是按照class_id 归一化多边形点序列的顺序逐行写入.txtultralytics/data/converter.py 在将 COCO 标注转换为 YOLO 格式时同样以(%g * len(line)).rstrip() \n的方式写出每行并对每个分割点按图像宽高做归一化处理/ np.array([w, h])。这些实现细节印证了格式规范的三个核心要素类别索引、归一化坐标、空格分隔。三、数据集 YAML 配置格式Ultralytics 框架使用 YAML 文件定义数据集与模型训练配置。以下是定义分割数据集的 YAML 示例# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path: ../datasets/coco8-seg # dataset root dir train: images/train # train images (relative to path) 4 images val: images/val # val images (relative to path) 4 images test: # test images (optional) # Classes (80 COCO classes) names: 0: person 1: bicycle 2: car # ... 77: teddy bear 78: hair drier 79: toothbrush各字段含义如下path数据集根目录。train、val、test中的路径均相对于该根目录。train/val训练集与验证集图像目录相对路径。二者支持三种指定方式目录路径如images/train、文本文件路径如train2017.txt文件内每行一个图像路径、路径列表如[path/to/imgs1, path/to/imgs2, ..]。test测试集可选。names类别名字典。字典顺序必须与 YOLO 标注文件中的类别索引顺序一致否则类别语义将错位。仓库内置的完整配置参考仓库实际维护的 ultralytics/cfg/datasets/coco8-seg.yaml 是上述示例的完整版本其注释约定如下path: ../datasets/coco8-seg # dataset root dir train: images/train # train images (relative to path) 4 images val: images/val # val images (relative to path) 4 images test: # test images (optional)COCO8-seg 是 COCO 数据集的 8 张图像子集train2017 前 8 张4 张训练、4 张验证常用于快速验证训练管线CI 检查与工作流验证。该 YAML 末尾还提供了可选的download字段指向数据集的自动下载地址——框架在本地未找到数据集时会尝试按该 URL 下载解压这也是所有内置数据集配置如 ultralytics/cfg/datasets/coco.yaml的通用做法。四、使用分割数据集训练模型配置好 YAML 后即可开始训练。以下代码与命令展示了如何在 Python 与 CLI 两种方式下启动分割模型训练 Pythonfrom ultralytics import YOLO # 加载模型 model YOLO(yolov8n-seg.pt) # 加载预训练模型推荐用于训练 # 训练模型 results model.train(datacoco128-seg.yaml, epochs100, imgsz640) CLI# 从预训练 *.pt 模型开始训练 yolo detect train datacoco128-seg.yaml modelyolov8n-seg.pt epochs100 imgsz640训练关键参数说明data指定数据集 YAML 路径model指定分割模型权重*-seg.pt后缀表示分割任务模型epochs为训练轮数imgsz为输入图像尺寸默认 640。若在 CLI 中使用yolo segment train则显式声明任务类型效果等价。五、内置分割数据集一览仓库为分割任务内置了多个可直接使用的数据集覆盖通用检测、快速验证与垂直行业场景。完整列表见 docs/en/datasets/segment/。数据集配置路径特点COCOultralytics/cfg/datasets/coco.yaml大规模目标检测、分割与描述数据集涵盖 200K 标注图像与 80 个类别COCO8-segultralytics/cfg/datasets/coco8-seg.yamlCOCO 的 8 张图像紧凑子集用于快速测试分割训练适合 CI 与工作流验证Carparts-segultralytics/cfg/datasets/carparts-seg.yaml汽车零部件分割专用数据集23 个类别含保险杠、车门、车灯、后视镜等适用于汽车行业应用Crack-segultralytics/cfg/datasets/crack-seg.yaml面向各类表面裂缝分割单类别crack适用于基础设施维护与质量控制Package-segultralytics/cfg/datasets/package-seg.yaml包装材料与形状分割单类别package适用于物流与仓储自动化添加自定义数据集如果希望用自己的数据训练分割模型只需保证其符合上文Ultralytics YOLO 格式规范将标注转换为该格式在 YAML 配置文件中指定路径、类别数量与类别名称即可。构建好的目录结构通常为datasets/ └── my-dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── my-dataset.yaml注意标签文本文件与图像文件需一一同名对应.jpg↔.txt。六、从 COCO 格式转换到 YOLO 格式COCO 是实例分割领域最流行的标注格式之一。Ultralytics 提供了convert_coco工具可将 COCO 格式或任何 COCO 格式的第三方数据集转换为 YOLO 格式from ultralytics.data.converter import convert_coco convert_coco(labels_dirpath/to/coco/annotations/, use_segmentsTrue)该函数的完整签名与参数定义位于 ultralytics/data/converter.py参数类型说明默认值labels_dirstr存放 COCO 标注 JSON 文件的目录../coco/annotations/save_dirstr转换结果的保存目录coco_converted/use_segmentsbool是否在输出中包含分割掩码Falseuse_keypointsbool是否在输出中包含关键点标注Falsecls91to80bool是否将 COCO 的 91 类 ID 映射为 80 类 IDTrue转换原理与实现细节从源码可以了解转换的完整逻辑ultralytics/data/converter.py创建目录结构在save_dir下建立labels/与images/子目录并按 JSON 文件名组织标签文件夹。类别映射通过cocoa91_to_coco80_class()将 COCO 标注中的 91 类category_id映射为训练常用的 80 类 IDcls91to80True时生效。坐标归一化COCO 的bbox为[左上角 x, 左上角 y, 宽, 高]转换时先将其转为中心点格式再分别除以图像宽高完成归一化分割多边形点同样按(x / w, y / h)归一化。多段分割合并对于 COCO 中由多段多边形组成的segmentation如被遮挡的物体通过merge_multi_segment合并为单一轮廓避免出现多个不连续分段。忽略 crowd 标注iscrowdTrue的标注成群目标会被跳过因其不适合作为实例掩码。写出文本标签每个目标按class x1 y1 x2 y2 ...的格式写入与图像同名的.txt文件。此外转换前务必确认目标数据集与模型任务兼容、遵循必要的格式约定——格式正确的数据集是训练出成功模型的前提。七、使用检测模型自动生成分割标注手工标注分割掩码成本高昂。Ultralytics 提供了自动标注Auto-Annotation能力使用预训练检测模型定位目标再配合SAM 分割模型生成掩码从而在没有人工标注的情况下快速构建分割数据集。auto_annotate 使用方式from ultralytics.data.annotator import auto_annotate auto_annotate(datapath/to/images, det_modelyolov8x.pt, sam_modelsam_b.pt)函数参数如下参数类型说明默认值datastr待标注图像的文件夹路径Nonedet_modelstr, optional预训练 YOLO 检测模型yolov8x.ptsam_modelstr, optional预训练 SAM 分割模型sam_b.ptdevicestr, optional运行模型的设备默认为空字符串自动选择 CPU 或 GPUoutput_dirstr or None, optional标注结果保存目录默认在data同级目录生成labels文件夹None源码中的流水线实现auto_annotate的实现位于 ultralytics/data/annotator.py其核心流程为分别加载检测模型YOLO(det_model)与分割模型SAM(sam_model)确定输出目录未指定output_dir时默认在数据目录的父目录下生成{data_stem}_auto_annotate_labels文件夹用检测模型对流式加载的图像做推理det_model(data, streamTrue, devicedevice)对每个检测到目标的图像将boxes.xyxy边界框作为提示prompt传入 SAM 模型生成对应掩码将类别索引与归一化掩码多边形坐标写入与图像同名的.txt文件跳过空掩码len(s) 0时continue。注意SAM 模型权重如sam_b.pt是独立的与 YOLO 检测权重不同可参考 docs/en/models/sam.md 了解 SAM 系列的更多细节。自动标注尤其适合拥有大规模图像集合的研究者与开发者它能将精力从繁琐的人工标注中解放出来聚焦于模型开发与评估本身。八、实践建议快速验证管线改动数据加载或训练代码后先用 COCO8-seg 这类小数据集跑通流程再切换到 COCO 等大规模数据集可大幅缩短调试周期。严格保持类别索引一致YAML 中names的顺序、标注文件行首的类别索引、模型输出层的类别数三者必须严格对应。坐标务必归一化YOLO 分割格式要求所有掩码坐标归一化到 [0, 1]从 COCO 转换或手动标注时归一化错误是训练失败的高频原因。善用自动标注 人工复核auto_annotate产出的标注建议抽样人工校验尤其是遮挡严重、目标过小的区域以保证下游训练数据质量。【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表