
使用 Ultralytics YOLO26 实现实例分割从模型选型、数据集训练到推理导出全指南【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics实例分割Instance Segmentation是计算机视觉中比目标检测更进一步的任务它不仅告诉你图像中哪里有物体还精确刻画每个物体的轮廓形状。本文以 docs/en/tasks/segment.md 为骨架结合当前仓库中 Ultralytics 的源码与配置系统讲解如何用YOLO26-seg系列模型完成实例分割的**训练Train、验证Val、预测Predict与导出Export**全流程并深入剖析分割模型的内部结构与结果对象格式帮助你从零开始落地一套可复用的 YOLO 分割工作流。什么是实例分割它与目标检测、语义分割有何区别实例分割在目标检测Object Detection的基础上更进一步目标检测用矩形框框出每个物体而实例分割模型输出一组掩码mask或轮廓contour勾勒出图像中每个独立对象的精确形状并同时给出每个对象的类别标签与置信度分数。当你的应用不仅需要知道物体在哪里还需要知道物体的精确形状时——例如医学影像病灶区域分析、自动驾驶中的车道与障碍物边界提取、工业质检中的缺陷轮廓测量——实例分割是比检测框更合适的输出形式。值得注意的是实例分割是对象级object-level的。同一张图片里的两辆车会被拆分为两个掩码、两个边界框、两个置信度分数。而**语义分割Semantic Segmentation**是像素级分类同样两辆车在语义分割输出里只是同一类 ID 的像素集合合并到一张与图像同尺寸的类别映射图class map中没有对象边界框、没有置信度也不产生默认的轮廓多边形列表。如果需要深入了解语义分割任务可对照阅读 语义分割任务指南。从仓库源码也能看出两者的分工YOLO 语义分割使用整图尺寸的类别图而实例分割在 检测结果Results对象 之上额外附加了Masks张量为每个实例保存独立的二值掩码与多边形。YOLO26-seg 分割模型家族与性能概览YOLO26 Segment 模型统一使用-seg后缀命名例如yolo26n-seg.pt。预训练权重基于 COCO 数据集配置80 类训练。模型首次使用时预训练权重会自动从 Ultralytics 最新 release 中下载。下表为各尺寸 YOLO26-seg 模型的性能参考数据来自 docs/macros/yolo-seg-perf.md模型尺寸 (pixels)mAPbox 50-95(e2e)mAPmask 50-95(e2e)CPU ONNX 速度 (ms)T4 TensorRT10 速度 (ms)参数 (M)FLOPs (B)YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.1YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.2YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.5YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0139.8YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8313.5上表指标的复现口径如下mAPval单模型、单尺度在 COCO val2017 上的结果可通过yolo val segment datacoco.yaml device0复现速度在 COCO val 图像上取平均CPU ONNX 与 T4 TensorRT10 两类硬件可通过yolo val segment datacoco.yaml batch1 device0|cpu复现Params / FLOPs为model.fuse()融合后的数值合并 Conv 与 BatchNorm 层对端到端模型还会移除辅助的 one-to-many 检测头。预训练 checkpoint 保留完整训练结构计数可能更高。从模型尺寸选择看n/s适合边缘设备与实时场景m/l/x适合追求精度的服务端推理。这些 checkpoint 可分割 COCO 的 80 个类别。若需要在不重新训练的前提下分割列表之外的类别可参考 YOLOE 模型指南——YOLOE 通过文本提示、视觉示例或内置词表方式动态指定类别。模型内部结构从 yolo26-seg.yaml 看分割架构YOLO26-seg 的网络结构定义在 yolo26-seg.yaml关键配置一目了然nc: 80 # 类别数COCO 为 80 end2end: True # 是否使用端到端模式省略 NMS 后处理 reg_max: 1 # DFL bins scales: # 复合缩放系数 [depth, width, max_channels] n: [0.50, 0.25, 1024] s: [0.50, 0.50, 1024] m: [0.50, 1.00, 512] l: [1.00, 1.00, 512] x: [1.00, 1.50, 512]模型注释明确说明该配置产出P3/8 - P5/32三个尺度的特征图。Backbone 部分依次堆叠Conv、C3k2、SPPF与C2PSA逐级降采样出 P3/8、P4/16、P5/32 特征yaml 中# 3-P3/8、# 5-P4/16、# 7-P5/32注释可对照Head 部分通过nn.Upsample上采样并与对应层Concat融合形成 FPN 式的多尺度金字塔最终交给分割专用检测头- [[16, 19, 22], 1, Segment26, [nc, 32, 256]] # Segment26(P3, P4, P5)Segment26头的构造参数[nc, 32, 256]含义为类别数、掩码原型mask proto通道数、以及中间特征宽度。这就是掩码系数mask coefficient预测 原型掩码mask proto线性组合这一经典 YOLO 分割解耦方案在 YOLO26 中的落点——预测阶段用少量原型掩码乘以每个实例的系数低成本重建出高分辨率掩码详见下文 Predictor 源码。训练Train在 COCO8-seg 上快速上手训练 YOLO26n-seg 最快捷的路径是在轻量数据集 COCO8-segCOCO train2017 前 8 张图的子集上验证全流程随后再替换为自己的数据集。Python 方式from ultralytics import YOLO # 三种加载模型的常见方式 model YOLO(yolo26n-seg.yaml) # 从 YAML 新建模型随机初始化 model YOLO(yolo26n-seg.pt) # 加载预训练模型训练推荐 model YOLO(yolo26n-seg.yaml).load(yolo26n-seg.pt) # 从 YAML 构建并迁移预训练权重 # 训练 results model.train(datacoco8-seg.yaml, epochs100, imgsz640)CLI 方式# 从 YAML 新建模型并从零开始训练 yolo segment train datacoco8-seg.yaml modelyolo26n-seg.yaml epochs100 imgsz640 # 从预训练 *.pt 权重开始训练推荐 yolo segment train datacoco8-seg.yaml modelyolo26n-seg.pt epochs100 imgsz640 # 从 YAML 构建模型迁移预训练权重并开始训练 yolo segment train datacoco8-seg.yaml modelyolo26n-seg.yaml pretrainedyolo26n-seg.pt epochs100 imgsz640训练参数如epochs、imgsz、batch、device、optimizer、lr0等的完整清单与默认值请参考 配置说明文档。train模式的完整行为参见 Train 模式指南。分割模型同样支持通过 Ultralytics Platform 进行云端训练详见 云端训练文档。数据集格式与转换分割任务的标签采用YOLO 分割格式即每个实例的标签行以类别 ID 归一化多边形顶点坐标构成具体规范见 分割数据集指南。若已有其他格式如 COCO 实例分割 JSON的数据可使用 Ultralytics 开源的 JSON2YOLO 工具进行转换。此外也可通过 Ultralytics Platform 的标注功能利用多边形工具和 SAM 智能标注创建分割掩码详见 数据标注文档。以仓库自带的 coco8-seg.yaml 为例其结构为根路径path: coco8-seg、train: images/train、val: images/val各 4 张图names列出 80 个 COCO 类别并内置自动下载地址。把data参数换成你自己的 dataset yaml 即可无缝迁移。训练器实现分割任务的训练由 SegmentationTrainer 驱动。它直接继承DetectionTraineryolo.detect.DetectionTrainer构造时强制写入overrides[task] segmentget_model()基于 nn/tasks.py 中的SegmentationModel构建网络并可选加载权重get_validator()则返回分割专用的SegmentationValidator。因此检测任务沉淀的分布式训练、回调、超参数调度等机制在分割任务上被原样复用——这就是你不需要额外学习一套训练接口的原因。验证Val读取 box 与 mask 双份指标训练完成的模型在验证时无需再次传参model会以模型属性形式记住训练时的data与超参数。Python 方式from ultralytics import YOLO model YOLO(yolo26n-seg.pt) # 加载官方模型 model YOLO(path/to/best.pt) # 加载自定义训练模型 metrics model.val() # 无需参数自动沿用训练配置 metrics.box.map # mAP50-95(B)检测框指标 metrics.box.map50 # mAP50(B) metrics.box.map75 # mAP75(B) metrics.box.maps # 每个类别的 mAP50-95(B) 列表 metrics.box.image_metrics # 检测框逐图像指标precision/recall/F1/TP/FP/FN metrics.seg.map # mAP50-95(M)分割掩码指标 metrics.seg.map50 # mAP50(M) metrics.seg.map75 # mAP75(M) metrics.seg.maps # 每个类别的 mAP50-95(M) 列表 metrics.seg.image_metrics # 掩码逐图像指标precision/recall/F1/TP/FP/FNCLI 方式yolo segment val modelyolo26n-seg.pt # 验证官方模型 yolo segment val modelpath/to/best.pt # 验证自定义模型验证器的实现细节分割验证由 SegmentationValidator 完成它继承DetectionValidator将指标对象设为SegmentMetrics()因而能同时报告Box 与 Mask 两套指标。值得关注的实现要点掩码重建精度选择init_metrics中根据save_json/save_txt选择ops.process_mask_native更精确、直接在原始分辨率处理否则默认使用ops.process_mask更快若开启save_json评估 COCO 指标还会自动检查faster-coco-eval1.6.7依赖掩码匹配_process_batch用mask_iou计算预测掩码与真实掩码的 IoU通过match_predictions判定正误得到tp_m正确预测矩阵——掩码指标并非直接复用框 IoUCOCO JSON 评估eval_json将预测掩码编码为 RLERun-Length Encoding并写入predictions.json再与instances_val2017.json对比输出bbox与segm两套 COCO 风格指标。预测Predict取回掩码、多边形与检测框加载训练好的分割模型即可对图像进行推理Python 方式from ultralytics import YOLO model YOLO(yolo26n-seg.pt) # 官方模型 model YOLO(path/to/best.pt) # 自定义模型 results model(path/to/image.jpg) # 对图像推理 # 逐张访问结果中的掩码 for result in results: xy result.masks.xy # 像素坐标下的掩码多边形列表 xyn result.masks.xyn # 归一化掩码多边形列表 masks result.masks.data # 二值掩码shape (N, H, W)dtype torch.uint8CLI 方式yolo segment predict modelyolo26n-seg.pt sourcepath/to/image.jpg # 官方模型 yolo segment predict modelpath/to/best.pt sourcepath/to/image.jpg # 自定义模型predict模式的完整说明见 Predict 模式指南。分割结果的构成Results 对象字段YOLO 实例分割对每张图像返回一个Results对象其中每个检测实例都持有自己的二值掩码、类别、置信度与边界框属性类型Shape说明result.masksMasks(N)实例掩码集合result.masks.datatorch.uint8(N,H,W)二值掩码取值0或1result.masks.xynp.float32list[(P,2)]像素坐标多边形轮廓result.masks.xynnp.float32list[(P,2)]归一化多边形轮廓result.boxesBoxes(N)实例的框/类别/置信度result.boxes.clstorch.float32(N,)类别 ID需转int后映射类别名Masks等张量包装类定义在 engine/results.py 中。各任务的完整Results字段清单可查看 Predict 结果字段章节。预测器的实现细节推理链路由 SegmentationPredictor 承担。在postprocess中它将模型的原始输出拆分为两部分先取出原型掩码张量 protopreds[0][1]shape 含(B, C, H, W)再交给检测父类的 NMS 流程得到每个实例的框、置信度与掩码系数。construct_result依据参数retina_masks决定掩码重建方式retina_masksTrue时调用ops.process_mask_native直接以原始图像尺寸重建掩码更精细默认调用ops.process_mask先在特征尺度重建再上采样更快。重建完成后还有一处过滤逻辑keep masks.amax((-2, -1)) 0丢弃掩码全为零的无效预测最后把框前 6 列、掩码与类别名一起封装为Results。理解这条链路有助于你在部署时针对retina_masks与 NMS 参数做精度/速度取舍。导出Export转换 ONNX、CoreML、TensorRT 等格式训练完成的模型可一键导出到 ONNX、CoreML、TensorRT 等多种推理格式Python 方式from ultralytics import YOLO model YOLO(yolo26n-seg.pt) # 官方模型 model YOLO(path/to/best.pt) # 自定义训练模型 model.export(formatonnx) # 导出 ONNXCLI 方式yolo export modelyolo26n-seg.pt formatonnx # 导出官方模型 yolo export modelpath/to/best.pt formatonnx # 导出自定义模型通过format参数可切换到任意受支持格式例如formatengineTensorRT、formatcoremlCoreML、formattflite等完整格式矩阵见 Export 模式指南。导出的模型可直接用于推理或验证例如yolo predict modelyolo26n-seg.onnx官方也会在导出完成后打印对应格式的调用示例。注意事项CoreML 内置 NMS 管线nmsTrue仅支持目标检测模型。当对分割模型执行 CoreML 导出时代码会给出警告并强制nmsFalse最终产出不含 NMS 的裸模型——这意味着使用该 CoreML 模型时需要在应用侧自行完成 NMS 后处理。常见问题FAQ如何在自定义数据集上训练 YOLO26 分割模型首先需将数据集整理为 YOLO 分割格式可先用 COCO8-seg 验证流程规范细节见 分割数据集指南其他格式可用 JSON2YOLO 工具转换。随后按以下方式训练from ultralytics import YOLO model YOLO(yolo26n-seg.pt) # 加载预训练分割模型 results model.train(datapath/to/your_dataset.yaml, epochs100, imgsz640)yolo segment train datapath/to/your_dataset.yaml modelyolo26n-seg.pt epochs100 imgsz640更多可调参数参见 配置说明文档。目标检测与实例分割在 YOLO26 中有何区别目标检测用矩形边界框定位物体实例分割在框之外还刻画每个物体的精确形状掩码或轮廓特别适合对形状敏感的医疗影像、自动驾驶、缺陷检测等场景。二者的工程实现对应关系也很直接检测任务的网络结构定义于 v8/v11/v26 检测 YAML而分割模型通过追加掩码分支与Segment26头见 yolo26-seg.yaml输出掩码模型参数与 FLOPs 相应增加。加载并验证预训练 YOLO 分割模型的方法from ultralytics import YOLO model YOLO(yolo26n-seg.pt) metrics model.val() print(Mean Average Precision for boxes:, metrics.box.map) print(Mean Average Precision for masks:, metrics.seg.map)yolo segment val modelyolo26n-seg.pt输出包含检测框与掩码两组 mAP 指标是评估模型分割能力的关键依据。如何把 YOLO 分割模型导出为 ONNXfrom ultralytics import YOLO model YOLO(yolo26n-seg.pt) model.export(formatonnx)yolo export modelyolo26n-seg.pt formatonnx各格式的导出差异与注意事项见 Export 模式指南。总结围绕 Ultralytics YOLO26 的segment任务本文从概念辨析出发依次覆盖了模型选型yolo26n-seg到yolo26x-seg、网络结构P3–P5 多尺度 Segment26头、数据准备YOLO 分割格式与 COCO8-seg 快速验证、训练/验证/预测/导出的完整代码与 CLI 命令并下钻到 train.py、val.py、predict.py 三个模块讲清了掩码 IoU 指标、原型掩码重建、RLE 编码等实现细节。希望这份指南能帮助你快速在自有数据上构建出稳定、可部署的实例分割应用。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考