指南 3个标注团队操作手册:提升标注速度与质量

在Label Studio中使用SAM2进行图像标注

Segment Anything 2(简称SAM 2)是Meta于2024年7月发布的模型。作为原始Segment Anything模型的升级版,SAM 2为图像和视频提供了更出色的对象分割能力。本指南将向您展示如何通过label studio使用SAM 2实现更优质的图像标注。

点击下方图片,观看我们的机器学习布道师Micaela Kaplan讲解如何将SAM 2连接到您的Label Studio项目。 在连接模型之前,您需要按照以下说明搭建一个SAM2实例!

Connecting SAM2 Model to Label Studio for Image Annotation

开始之前

在开始之前,您必须安装Label Studio ML后端

本教程使用segment_anything_2_image示例

请注意,截至2024年8月1日,SAM2仅支持在GPU上运行。

标注配置

当前Label Studio SAM2机器学习后端的实现采用交互模式运行。用户引导输入包括:

  • KeypointLabels
  • RectangleLabels

然后SAM2输出BrushLabels作为结果。

这意味着所有三个控制标签都应体现在您的标注配置中:

<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 className="main">
  <View className="container">
    <View className="column">
      <View className="title">Choose Label</View>
      <View className="label">
        <BrushLabels name="tag" toName="image">
          
          
        <Label value="defect" background="#FFA39E"/></BrushLabels>
      </View>
    </View>
    <View className="column">
      <View className="title">Use Keypoint</View>
      <View className="label">
        <KeyPointLabels name="tag2" toName="image" smart="true">
          
          
        <Label value="defect" background="#250dd3"/></KeyPointLabels>
      </View>
    </View>
    <View className="column">
      <View className="title">Use Rectangle</View>
      <View className="label">
        <RectangleLabels name="tag3" toName="image" smart="true">
          
          
        <Label value="defect" background="#FFC069"/></RectangleLabels>
      </View>
    </View>
  </View>
  <View className="image-container">
    <Image name="image" value="$image" zoom="true" zoomControl="true"/>
  </View>
</View>
</View>

从源代码运行

  1. 要在不使用Docker的情况下运行ML后端,您需要克隆代码库并使用pip安装所有依赖项:
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
  1. segment-anything-2代码库下载到根目录。按照Meta官方文档安装SegmentAnything模型并下载检查点

  2. 然后你可以在默认端口 9090 上启动ML后端:

cd ../
label-studio-ml start ./segment_anything_2_image
  1. 将正在运行的ML后端服务器连接到Label Studio:进入项目Settings -> Machine Learning -> Add Model并指定http://localhost:9090作为URL。更多信息请参阅官方Label Studio文档

使用Docker运行(即将推出)

  1. 使用预构建镜像在http://localhost:9090上启动机器学习后端:
docker-compose up
  1. 验证后端是否正在运行
$ curl http://localhost:9090/
{"status":"UP"}
  1. 从同一主机上运行的Label Studio连接到后端:进入项目Settings -> Machine Learning -> Add Model并指定http://localhost:9090作为URL。

配置

在运行容器之前,可以在docker-compose.yml中设置参数。

以下通用参数可用:

  • DEVICE - 指定模型服务器运行的设备(目前仅支持cudacpu即将推出)
  • MODEL_CONFIG - SAM2模型配置文件(默认为sam2_hiera_l.yaml
  • MODEL_CHECKPOINT - SAM2模型检查点文件(默认为sam2_hiera_large.pt
  • BASIC_AUTH_USER - 指定模型服务器的基础认证用户
  • BASIC_AUTH_PASS - 指定模型服务器的基础认证密码
  • LOG_LEVEL - 设置模型服务器的日志级别
  • WORKERS - 指定模型服务器的工作进程数量
  • THREADS - 指定模型服务器的线程数

自定义

可以通过在./segment_anything_2目录中添加自定义模型和逻辑来定制ML后端。