ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Label Studio 集成 SAM2(Segment Anything 2)图像分割 ML Backend 实战指南

2026/9/11 23:00:06 拓冰建站 浏览量
Label Studio 集成 SAM2(Segment Anything 2)图像分割 ML Backend 实战指南 Label Studio 集成 SAM2Segment Anything 2图像分割 ML Backend 实战指南【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studioSegment Anything 2SAM 2是 Meta 于 2024 年 7 月发布的图像分割模型相较初代 Segment Anything ModelSAM它在图像与视频上的对象分割能力都有显著提升。本指南以 Label Studio 开源仓库的官方 ML 教程 segment_anything_2_image.md 为核心讲解如何把 SAM 2 通过 ML Backend 接入 Label Studio实现基于关键点与矩形框提示的交互式图像标注输出 Brush 掩码。读完本文你将掌握SAM 2 ML Backend 的源码安装与启动流程、与之配套的标签配置Labeling Configuration写法、docker-compose.yml中各项环境参数的含义以及如何在 Label Studio 项目中连接模型并开始标注。1. 背景为什么用 SAM 2 做图像标注Label Studio 通过 ML Backend 机制把外部机器学习模型包装成 Web 服务与标注平台联动从而实现预标注Pre-annotation让模型自动产出标签标注员只需复核交互式标注Interactive labeling标注员给出提示如点、框模型实时返回预测辅助人工标注模型评估与微调标注结果反哺模型形成数据闭环。SAM 2 特别适合“交互式标注”场景标注员在图像上点一个关键点或画一个矩形框作为提示promptSAM 2 立即生成对应的前景分割掩码以 Brush 区域形式呈现从而把“逐像素手工描边”简化为“点一下 / 框一下”。本仓库中的教程明确说明截至 2024-08-01SAM 2 仅在 GPU 上运行。与仓库内另一篇 segment_anything_model.md面向初代 SAM / MobileSAM / ONNX SAM不同本篇专讲 SAM 2 的图像场景视频跟踪场景可参考 segment_anything_2_video.md。2. 准备工作Before you begin在开始之前需要满足以下前置条件安装 Label Studio ML Backend SDK该 SDK 负责把你的模型代码包装成标准 Web 服务。安装方式见官方 Quickstartlabel-studio-ml-backend仓库 README。准备示例代码本教程基于 ML Backend 仓库中的segment_anything_2_image示例目录后续所有命令都围绕该目录展开。GPU 环境SAM 2 当前仅支持 GPUcudaCPU 支持仍在规划中请提前确认运行环境具备可用 NVIDIA GPU 及驱动。3. 交互式标注原理与标签配置3.1 模型输入输出约定SAM 2 ML Backend 当前以Interactive mode交互式标注运行输入与输出的对应关系是方向控制标签Control Tag作用用户输入KeyPointLabels点击关键点作为提示指定目标位置用户输入RectangleLabels画矩形框作为提示圈定目标范围模型输出BrushLabels以刷子区域掩码形式返回分割结果这意味着你的标注配置中必须同时包含这三种控制标签模型才能正确收到提示并返回预测。这与 Label Studio 前端编辑器中的smart属性机制相对应在 KeyPointLabels.jsx 及底层 KeyPoint.js 的实现中smart参数用于“Show smart tool for interactive pre-annotations”为交互式预标注启用智能工具本教程配置里正是通过给KeyPointLabels和RectangleLabels加上smarttrue来启用该能力。3.2 完整的标签配置示例教程给出了可直接粘贴到 Label Studio “Labeling Interface / Labeling Setup” 中的配置View Style .main { font-family: Arial, sans-serif; background-color: #f5f5f5; margin: 0; padding: 20px; } .container { display: flex; justify-content: space-between; margin-bottom: 20px; } .column { flex: 1; padding: 10px; background-color: #fff; border-radius: 5px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); text-align: center; } .column .title { margin: 0; color: #333; } .column .label { margin-top: 10px; padding: 10px; background-color: #f9f9f9; border-radius: 3px; } .image-container { width: 100%; height: 300px; background-color: #ddd; border-radius: 5px; } /Style View classNamemain View classNamecontainer View classNamecolumn View classNametitleChoose Label/View View classNamelabel BrushLabels nametag toNameimage Label valuedefect background#FFA39E//BrushLabels /View /View View classNamecolumn View classNametitleUse Keypoint/View View classNamelabel KeyPointLabels nametag2 toNameimage smarttrue Label valuedefect background#250dd3//KeyPointLabels /View /View View classNamecolumn View classNametitleUse Rectangle/View View classNamelabel RectangleLabels nametag3 toNameimage smarttrue Label valuedefect background#FFC069//RectangleLabels /View /View /View View classNameimage-container Image nameimage value$image zoomtrue zoomControltrue/ /View /View /View配置要点说明三个控制标签的toName均指向图像对象image即 Image 标签nameimage数据字段为$imageKeyPointLabels与RectangleLabels必须设置smarttrue否则不会进入交互式提示模式BrushLabels承接模型输出的掩码区域其Label的value示例中为defect应与关键点、矩形框中的标签保持一致保证类别语义对齐外层View与Style仅用于页面布局美化非功能必需可自由调整。4. 从源码启动 SAM 2 ML Backend4.1 安装依赖教程推荐非 Docker 的源码运行方式完整步骤如下git clone https://github.com/HumanSignal/label-studio-ml-backend.git cd label-studio-ml-backend pip install -e . cd label_studio_ml/examples/segment_anything_2_image pip install -r requirements.txt其中pip install -e .以可编辑模式安装 ML Backend SDKrequirements.txt则安装 SAM 2 运行所需的 Python 依赖。4.2 下载模型权重与安装 SAM 2把 Meta 官方的segment-anything-2仓库 克隆到 root 目录即label-studio-ml-backend根目录下按照 Meta 官方 README 的 Installation 说明安装segment-anything-2包务必按官方指引下载 checkpoint 权重文件教程默认使用sam2_hiera_large.pt对应配置sam2_hiera_l.yaml详见第 5 节。4.3 启动 ML Backend回到label-studio-ml-backend根目录用 SDK 提供的命令启动服务默认端口为9090cd ../ label-studio-ml start ./segment_anything_2_image启动后可验证服务状态返回{status:UP}即正常。4.4 在 Label Studio 中连接模型打开你的 Label Studio 项目进入Settings - Machine Learning - Add Model在 URL 字段填入http://localhost:9090保存即可。更详细的连接与交互式预标注说明可参考 ML 集成指南 的 “Connect the model to Label Studio” 与 “Interactive pre-annotations” 章节。注意如果 Label Studio 运行在 Docker 容器中localhost指向的是容器自身而不是宿主机。此时应改用http://host.docker.internal:9090或宿主机内网 IP 来连接 ML Backend详见 ML 集成指南。5. Docker 方式与配置参数5.1 Docker Compose 启动coming soon教程标注该方式为“coming soon”计划中其流程为docker-compose up启动后验证$ curl http://localhost:9090/ {status:UP}然后同样在 Label Studio 项目Settings - Machine Learning - Add Model中指定http://localhost:9090。5.2 环境变量配置所有参数在运行容器前通过docker-compose.yml设置。教程列出的通用参数如下参数说明默认值 / 备注DEVICE模型运行设备目前仅支持cudacpu即将支持MODEL_CONFIGSAM2 模型配置文件sam2_hiera_l.yamlMODEL_CHECKPOINTSAM2 模型权重文件sam2_hiera_large.ptBASIC_AUTH_USER模型服务 Basic Auth 用户名可选用于保护服务BASIC_AUTH_PASS模型服务 Basic Auth 密码可选与用户名配对LOG_LEVEL模型服务日志级别按需设置如INFO/DEBUGWORKERS模型服务 worker 进程数影响并发处理能力THREADS模型服务线程数影响并发处理能力说明与建议MODEL_CONFIG与MODEL_CHECKPOINT必须配对使用两者共同决定了加载哪个 SAM 2 网络结构与权重若显存有限可将MODEL_CHECKPOINT换成较小的 SAM 2 checkpoint如sam2_hiera_base_plus.pt等并同步修改MODEL_CONFIG为对应配置BASIC_AUTH_USER/BASIC_AUTH_PASS对应 Label Studio 连接模型时的Basic Authentication选项WORKERS/THREADS应根据 GPU 显存与任务量调整避免 OOM。6. 自定义与扩展CustomizationML Backend 的设计允许在./segment_anything_2_image目录内添加自己的模型与逻辑从而实现定制化修改提示处理逻辑例如组合多个关键点 一个矩形框作为输入扩展为更复杂的交互策略替换/微调 SAM 2 模型更换MODEL_CONFIG/MODEL_CHECKPOINT指向自训练权重接入后处理对模型输出的BrushLabels掩码做清洗、过滤或合并。从仓库源码结构看ML 集成指南 与 ML 模块实现ML Backend 的核心是label-studio-ml start dir把目录包装成 Web 服务后端通过 Label Studio 的交互式预标注接口接收标注上下文context调用模型的interactive_annotating逻辑返回预测结果对应 api.py 与 api_connector.py 中的交互式预测链路。因此自定义时只需保持目录结构与接口约定即可无缝接入。7. 常见问题与注意事项GPU 是硬前提SAM 2 当前仅支持cuda设备CPU 运行会失败确认nvidia-smi可见 GPU 且 PyTorch CUDA 版本匹配。必须开启交互式预标注连接模型时确保启用Interactive preannotations否则标注员给出的关键点/矩形框提示不会触发模型预测。标签类别要一致BrushLabels、KeyPointLabels、RectangleLabels中的Label value...应保持一致避免预测结果与手工标注类别错位。Docker 容器互联Label Studio 与 ML Backend 都跑在 Docker 时使用host.docker.internal或宿主机 IP不要使用localhost。首次运行较慢模型首次加载权重与构建图像 embedding 需要时间属正常现象。8. 小结本文围绕 segment_anything_2_image.md 完整还原了 SAM 2 接入 Label Studio 的路径理解交互式标注的输入输出约定 → 配置三标签KeyPointLabelsRectangleLabelsBrushLabels的标注界面 → 源码安装依赖并启动 ML Backend → 在项目中连接模型 → 按需调整docker-compose.yml参数。配合 Label Studio 的 ML Backend 机制与前端编辑器的smart交互能力SAM 2 能显著提升图像分割标注效率。视频对象跟踪场景可进一步参考 segment_anything_2_video.md初代 SAM 方案可参考 segment_anything_model.md。【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考