Ultralytics YOLO26 实例分割与目标跟踪实战基于 InstanceSegmentation Solution 的像素级多目标识别与追踪指南【免费下载链接】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与目标跟踪Object Tracking的组合是视频智能分析的核心能力它能以像素级精度圈定每个独立对象并跨帧维持其身份一致性。本指南以 docs/en/guides/instance-segmentation-and-tracking.md 为骨架结合 Ultralytics 仓库中的InstanceSegmentationSolution 源码、配置与测试系统讲解如何在 Python 与 CLI 下加载 YOLO26 分割模型实现逐实例着色 跨帧追踪的视频分析管线并完整说明所有可调参数、输出结构及应用选型要点。读完你将可以直接复现一个可运行、可保存、可指定类别与追踪器的一站式实例分割追踪程序。什么是实例分割实例分割Instance Segmentation是一种计算机视觉任务它要求在像素级别识别并勾勒出图像中的每个独立对象。与只按类别划分像素的语义分割Semantic Segmentation不同实例分割会为每一个对象实例给出唯一标签和精确轮廓——同一张图中两辆相邻的车、两个并肩的行人都会被当成彼此独立的实例分别处理。这种精细化空间理解能力使实例分割成为许多需要精确感知场景的应用的技术基础例如医学影像勾画肿瘤、器官或细胞结构边界自动驾驶区分道路上的每一个行人、车辆、路牌工业自动化与安防识别并统计零部件、人员、物料。Ultralytics YOLO26 提供了强大的实例分割能力其-seg系列模型如yolo26n-seg.pt在保持 YOLO 系模型一贯推理速度的同时能够输出精确的目标边界。在 Ultralytics 仓库中这一能力被封装为可直接调用的solutions高级接口用户只需一个-seg模型权重文件即可开箱使用相关模型定义可参考 ultralytics/nn/tasks.py 中的分割任务装配逻辑。在 Ultralytics 的解决方案生态中实例分割追踪通常有两种可视化形态按类别着色Class Objects同一类别的对象共用一种颜色用于清晰的类别区分与直观展示按轨迹着色Object Tracks每条追踪轨迹拥有独立颜色便于在视频帧之间快速辨认同一个对象走到哪里了。实例分割 vs 目标检测 vs 语义分割任务输出能否区分同类的不同个体粒度目标检测Detection边界框 类别 置信度是每框一个框级语义分割Semantic Segmentation每个像素一个类别否像素级实例分割Instance Segmentation每个对象一个掩码 类别是逐掩码唯一像素级实例分割 追踪掩码 类别 跨帧 Track ID是且跨帧保持一致像素级 时序InstanceSegmentation Solution 的源码实现在 Ultralytics 仓库中本指南使用的核心类是 ultralytics/solutions/instance_segmentation.py 中定义的InstanceSegmentation。它继承自 ultralytics/solutions/solutions.py 中的BaseSolution与ObjectCounter、Heatmap、SpeedEstimator等 Solution 共享同一套基础设施统一从 ultralytics/solutions/init.py 对外导出。从源码可以清楚看到它的工作链路模型默认值__init__中kwargs[model] kwargs.get(model, yolo26n-seg.pt)——不传模型时自动回退到yolo26n-seg.pt见 instance_segmentation.py。底层追踪BaseSolution.extract_tracks实际调用self.model.track(sourceim0, persistTrue, classesself.classes, verboseFalse, ...)意味着 Solution 内部默认就走检测 追踪路径为每个实例分配 Track ID见 solutions.py。掩码提取process方法中通过getattr(self.tracks, masks, None)拿到每个实例的分割掩码。绘制当掩码存在时利用Results.plot(..., color_modeinstance)把每个实例渲染为独立颜色并与边界框、类别、置信度标签叠加当无掩码例如误用了非-seg模型时会打印告警并直接返回原图见 instance_segmentation.py。返回结构SolutionResults主要包含plot_im已标注帧与total_tracks当前帧追踪实例总数。仓库测试 tests/test_solutions.py 中也覆盖了无掩码这一边界情形传入一张全零帧并断言results.plot_im is not None保证异常输入下管线不会崩溃。配置参数如何解析InstanceSegmentation的所有可选参数最终汇入 ultralytics/solutions/config.py 的SolutionConfig数据类。BaseSolution.__init__通过SolutionConfig().update(**kwargs)将关键字参数与默认值合并update对未知键会直接抛出ValueError因此传入参数名必须严格拼写正确。model.track额外使用的参数iou、conf、device、max_det、quantize、tracker、imgsz由BaseSolution统一收拢进self.track_add_args见 solutions.py在后续每帧的model.track调用中生效。CLI 命令映射命令行使用yolo solutions isegment即进入本 Solution其映射关系定义在 ultralytics/cfg/init.pyisegment: InstanceSegmentation。CLI 场景下若未指定sourceBaseSolution会自动下载官方演示视频作为默认输入源见 solutions.py。test_cli.py中的参数化测试 tests/test_cli.py 也把isegment纳入常规 CLI 冒烟测试集合。快速开始Segment and Track with YOLO26InstanceSegmentationSolution 会对视频的每一帧运行 YOLO26 分割模型逐对象绘制掩码并对每个实例单独着色方便你在整个视频中持续跟踪某个对象。使用前请确保已安装 Ultralytics 及opencv-python若需在无图形环境如服务器、容器中运行务必自行关闭show或以 CLI 传入showFalse。CLI 用法# 使用 Ultralytics YOLO26 进行实例分割默认展示输出窗口 yolo solutions isegment showTrue # 指定本地视频源 yolo solutions isegment sourcepath/to/video.mp4 # 只分割特定类别例如只关注类别 0person与类别 5bus yolo solutions isegment classes[0, 5]CLI 方式下常用的补充参数示例# 使用 nano 级分割模型 关闭画面、降低置信度阈值、切换到 CPU yolo solutions isegment sourcepath/to/video.mp4 modelyolo26n-seg.pt \ showFalse conf0.2 devicecpuPython 用法import cv2 from ultralytics import solutions cap cv2.VideoCapture(path/to/video.mp4) assert cap.isOpened(), Error reading video file # 视频写入器读取源视频的宽、高、帧率并保持一致 w, h, fps (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) video_writer cv2.VideoWriter(isegment_output.avi, cv2.VideoWriter_fourcc(*mp4v), fps, (w, h)) # 初始化实例分割对象 isegment solutions.InstanceSegmentation( showTrue, # 是否实时弹出窗口展示输出 modelyolo26n-seg.pt, # 使用 YOLO26 分割模型也可换成 yolo26s-seg/yolo26m-seg 等 # classes[0, 2], # 可选仅分割指定类别如只处理 person 与 car ) # 逐帧处理视频 while cap.isOpened(): success, im0 cap.read() if not success: print(Video frame is empty or video processing has been successfully completed.) break results isegment(im0) # 送入一帧返回 SolutionResults # print(results) # 可打印 total_tracks、speed 等结构化输出 video_writer.write(results.plot_im) # 写入已标注帧含掩码/标签/追踪结果 cap.release() video_writer.release() cv2.destroyAllWindows() # 关闭所有展示窗口要点提示results.plot_im是叠加了每个实例掩码、类别名、置信度以及追踪 ID 标注的成品帧直接交给VideoWriter即可落盘results.total_tracks表示当前帧中正在追踪的实例数量可用于在线统计或触发后续业务逻辑视频源不仅支持本地 mp4也可替换为摄像头索引如0或 RTSP 流地址仅对传入 OpenCVVideoCapture的源有效。InstanceSegmentation 参数详解本 Solution 的公开参数由三部分组成分别来自 docs/macros/solutions-args.md、docs/macros/solutions-track-args.md 与 docs/macros/visualization-args.md 三份宏定义文件其默认值与SolutionConfig保持一致。通用参数ArgumentTypeDefaultDescriptionmodelstrNone指向一个 Ultralytics YOLO 模型文件的路径。对InstanceSegmentation而言应使用-seg分割模型未指定时默认加载yolo26n-seg.pt。line_widthint2Solution 绘制的框线、掩码轮廓与文本线条的粗细。verboseboolTrue开启后每帧处理完毕会打印输入尺寸、类别计数与处理耗时追踪调用本身始终是静默的。line_width在代码中直接决定掩码与标注的绘制观感verbose会驱动 solutions.py 中基于Counter(self.clss)的逐帧日志输出。追踪参数可复用track参数ArgumentTypeDefaultDescriptiontrackerstrbotsort.yaml指定追踪算法。内置选项botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml对应配置文件位于 ultralytics/cfg/trackers/ 目录。conffloat0.25检测置信度阈值值越低能追踪到越多对象但可能引入误检。ioufloat0.7交并比IoU阈值用于过滤重叠检测框。classeslistNone按类别索引过滤结果。例如classes[0, 2, 3]只追踪指定的类。devicestrNone推理设备如cpu、cuda:0或0用于在 CPU、指定 GPU 或其它计算设备间切换。除上表外BaseSolution内部还会把max_det单帧最大检测数默认300、quantize推理精度如16表示 FP16替代已废弃的half与imgsz推理输入尺寸默认640透传给追踪调用。实际需要时也可显式传入这些参数例如在低显存设备上把max_det调小或调整imgsz以换取吞吐。可视化参数ArgumentTypeDefaultDescriptionshowboolFalse为True时在窗口中实时展示标注结果便于开发调试期即时反馈。Python 中默认为False。show_confboolTrue在标签旁展示每个检测的置信度可直观体现模型把握程度。show_labelsboolTrue在可视化输出中展示每个检测的类别标签。show_boxesboolTrue在检测对象周围绘制边界框便于视觉定位。上述三个show_*开关在 instance_segmentation.py 中初始化并在results.plot(...)时作为conf、labels、boxes参数传入。将三者全部设为False即可得到只画掩码、不带任何标注文字与边框的纯净输出。常见参数组合示例from ultralytics import solutions isegment solutions.InstanceSegmentation( modelyolo26m-seg.pt, # 换用更大更强的分割模型 classes[0, 2], # 只处理 person 与 car conf0.3, # 提高置信度阈值减少误检 iou0.5, # 更严格的去重叠 trackerbytetrack.yaml, # 使用 ByteTrack 追踪器 showFalse, # 关闭窗口服务器场景 show_labelsTrue, # 保留类别标签 show_confFalse, # 不展示置信度 line_width3, # 加粗绘制线条 )提示model、classes、conf、iou、tracker等参数都可通过命令行keyvalue的形式传给yolo solutions isegment无需修改任何代码即可快速换参试验。多源输入与输出复用InstanceSegmentation底层使用 OpenCV 处理帧因此你可以将上一节示例中的视频源替换为USB / 内置摄像头cv2.VideoCapture(0)RTSP / HLS 网络流cv2.VideoCapture(rtsp://user:passip:554/stream)图片序列循环读取目录帧或直接对单张图片调用一次isegment(im0)。每帧调用返回的SolutionResults定义见 solutions.py除plot_im、total_tracks外还包含speed字段区分track与solution两段耗时可供性能监控或延迟统计使用str(results)会以keyvalue形式打印所有非空字段方便接入日志系统。应用场景结合像素级轮廓与跨帧 ID 追踪YOLO26 实例分割追踪方案在以下行业已有明确落点垃圾分类与回收在垃圾处理设施中用于识别并分拣不同材质——塑料、纸板、金属及其它可回收物。模型能够以较高精度分割各类废弃物使自动化分拣系统更高效地运转减少人工介入。自动驾驶在自动驾驶场景中实例分割帮助在像素层面识别并持续追踪行人、车辆、交通标志等道路要素。对环境的精确理解直接服务于导航与安全决策而 YOLO 系模型实时性较好适合这类强时效应用。医学影像实例分割可在医学扫描图中圈出肿瘤、器官或细胞结构。YOLO26 对对象边界的精细勾画能力使其对辅助诊断与治疗规划具有参考价值。施工现场监控在工地场景中对重型机械、工人与物料进行实例级追踪可用于监控设备位置、探测人员进入危险区域的行为同时辅助优化施工流程与资源调度。常见问题FAQ如何用 Ultralytics YOLO26 做实例分割初始化一个-seg版本的 YOLO26 模型然后逐帧送入视频即可。简化示例如下import cv2 from ultralytics import solutions cap cv2.VideoCapture(path/to/video.mp4) assert cap.isOpened(), Error reading video file # 视频写入器 w, h, fps (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) video_writer cv2.VideoWriter(instance-segmentation.avi, cv2.VideoWriter_fourcc(*mp4v), fps, (w, h)) # 初始化 InstanceSegmentation isegment solutions.InstanceSegmentation( showTrue, # 实时展示输出 modelyolo26n-seg.pt, # YOLO26 分割模型 ) # 处理视频 while cap.isOpened(): success, im0 cap.read() if not success: print(Video frame is empty or processing is complete.) break results isegment(im0) # 得到含掩码与追踪信息的标注帧 video_writer.write(results.plot_im) # 写出结果 cap.release() video_writer.release() cv2.destroyAllWindows()更多关于分割任务本身数据集组织、训练与推理细节的内容可阅读 YOLO 分割任务指南。实例分割与目标追踪有什么区别实例分割负责在单帧图像内识别并勾画每个独立对象为每个对象赋予唯一的标签与掩码目标追踪则在此基础上为对象在视频帧之间分配一致的 ID从而持续跟踪同一对象。两者在 YOLO26 方案中天然结合——InstanceSegmentation内部先走model.track拿到含 Track ID 的检测再叠加像素掩码绘制因此可以同时获得精确的边界信息和随时间连续的对象运动轨迹。为什么选择 YOLO26 而不是 Mask R-CNN / Faster R-CNN依据官方指南的说明Ultralytics YOLO26 相比 Mask R-CNN、Faster R-CNN 等方案在易用性与实时性上更具优势YOLO 系列采用单阶段检测整图一次前向即可同时得到检测与分割结果推理吞吐更高同时与 Ultralytics 的模型管理、数据集与训练流水线无缝衔接。需要强调的是具体是否更快更准取决于硬件、输入尺寸与评测数据实际选型时应结合自身基准测试判断。文档同时提到其与 Ultralytics 平台的集成能力便于用户统一管理模型、数据集与训练任务。Ultralytics 提供了哪些适合训练实例分割模型的数据集官方提供了若干带像素级标注的分割数据集包括 COCO-Seg、用于快速验证的小型子集 COCO8-Seg、面向包裹分拣的 Package-Seg 以及裂缝检测的 Crack-Seg。若要做更垂直的定制任务也可按照 Ultralytics 数据集格式自行构建自定义数据集。完整的数据集说明与用法参见 Ultralytics 数据集文档。关键文件速查以下为本文涉及的核心源码与配置位置便于深入阅读用途文件Solution 实现类ultralytics/solutions/instance_segmentation.py基类与结果对象ultralytics/solutions/solutions.py统一配置容器ultralytics/solutions/config.pySolutions 导出清单ultralytics/solutions/init.pyCLIisegment映射ultralytics/cfg/init.py追踪器配置文件ultralytics/cfg/trackers/参数宏定义docs/macros/solutions-args.md、docs/macros/solutions-track-args.md、docs/macros/visualization-args.md单元测试含无掩码边界场景tests/test_solutions.pyCLI 冒烟测试tests/test_cli.py结语通过ultralytics.solutions.InstanceSegmentation你可以在十余行代码内完成YOLO26 分割推理 → 逐实例掩码渲染 → 跨帧追踪的完整闭环并通过model、classes、tracker、conf、iou及各类可视化开关覆盖从快速演示到生产部署的不同需求。理解其背后BaseSolutionSolutionConfigmodel.track的实现结构将帮助你在ObjectCounter、Heatmap、SpeedEstimator等同族 Solution 之间举一反三灵活搭建更复杂的视频理解应用。【免费下载链接】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),仅供参考