支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


解放双手!LabelStudio 智能标注实战

发布日期:2025-04-16 22:51:03 浏览次数: 1654 作者:探索云原生
推荐语

LabelStudio智能标注功能,让机器学习模型自主预测标签,提高标注效率。

核心内容:
1. LabelStudio智能标注(预标注)功能介绍
2. 智能标注流程及模型服务接入LabelStudio的步骤
3. 自定义模型服务的创建与部署指南

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

LabelStudio 中使用智能标注(预标注)的大致流程如下:

  • 1)准备模型部署

  • 2)模型服务接入 LabelStudio

  • 3)配置标注模板时特殊处理

  • 4)开始智能标注

ps:这里说的预标注/自动标签/智能标注都是指:让 ML/AI 模型自主预测标签,然后人工进行审查。

智能标注流程:

  • 1)用户打开任务

  • 2)Label Studio 将请求发送到 ML 后端

  • 3)ML 后端执行预测并返回结果

  • 4)预测被加载到 LabelStudio UI 中展示

1. 准备模型服务

要是有模型进行智能标注,自然得先部署一个模型服务才行。

需要注意的是:对接到 Label Studio 的模型服务需要满足一定规范才行。

可以通过 Label Studio ML backend SDK[1] 将我们自己的模型服务转换为一个 Web 服务,然后将该 Web 服务连接到 LabelStudio 以实现智能标注。

  • 是有内置 example 模型服务

  • 实现自己的模型服务

本次演示,直接使用内置的 yolo 服务做为 Backend。

1.1 自定义模型服务

官方文档:Write your own ML backend[2]

  • 1)clone 并安装 repo

  • 2)初始化项目

  • 3)实现自己的预测逻辑

安装 repo

git clone https://github.com/HumanSignal/label-studio-ml-backend.git
cd label-studio-ml-backend/
pip install -e .

初始化项目

label-studio-ml create my_ml_backend

项目结构如下:

my_ml_backend/
├── Dockerfile
├── .dockerignore
├── docker-compose.yml
├── model.py
├── _wsgi.py
├── README.md
├── requirements-base.txt
├── requirements-test.txt
├── requirements.txt
└── test_api.py

只需要关注以下几个文件:

  • model.py:在该文件中实现自定义预测逻辑

  • test_api.py:测试文件

实现自定义预测逻辑

model.py 中有一个继承自 LabelStudioMLBase 的 class,该 class 实现了 Label Studio 通信所需的方法。我们可以重新其中的 predict 方法实现自己的预测逻辑。

def predict(self, tasks, context, **kwargs):
    """Make predictions for the tasks."""
    return predictions

这样我们就实现了自己的 ML Backend.

1.2 使用内置服务

这里我们使用 LabelStudio 提供的 Yolo 服务作为 Backend,直接使用即可。

构建镜像

先 clone 该项目

git clone https://github.com/HumanSignal/label-studio-ml-backend

然后使用 yolo example 构建镜像

cd label-studio-ml-backend
cd label_studio_ml/examples/yolo/

# 构建镜像
DOCKER_BUILDKIT=1 docker build -t humansignal/yolo:v0 -f Dockerfile .

启动服务

使用上一步构建镜像启动服务,完整 yaml 如下:

apiVersion: apps/v1
kind:Deployment
metadata:
name:yolo
labels:
    app:yolo
spec:
replicas:1
selector:
    matchLabels:
      app:yolo
template:
    metadata:
      labels:
        app:yolo
    spec:
      containers:
        -name:yolo
          image:humansignal/yolo:v0
          ports:
            -containerPort:9090
          env:
            -name:BASIC_AUTH_USER
              value:""
            -name:BASIC_AUTH_PASS
              value:""
            -name:LOG_LEVEL
              value:"DEBUG"
            -name:ANY
              value:"PARAMETER"
            -name:WORKERS
              value:"1"
            -name:THREADS
              value:"8"
            -name:MODEL_DIR
              value:"/data/models"
            -name:PYTHONPATH
              value:"/app"
            -name:LABEL_STUDIO_URL
              value:"http://host.docker.internal:8080"
            -name:LABEL_STUDIO_API_KEY
              value:""
            -name:ALLOW_CUSTOM_MODEL_PATH
              value:"true"
            -name:DEBUG_PLOT
              value:"false"
            -name:MODEL_SCORE_THRESHOLD
              value:"0.5"
            -name:MODEL_ROOT
              value:"/app/models"
          volumeMounts:
            -name:data-volume
              mountPath:/data
            -name:models-volume
              mountPath:/app/models
            -name:cache-volume
              mountPath:/app/cache_dir
      volumes:
        -name:data-volume
          emptyDir:{}
        -name:models-volume
          emptyDir:{}
        -name:cache-volume
          emptyDir:{}
---
apiVersion:v1
kind:Service
metadata:
name:yolo-service
spec:
type:NodePort# 根据需求可改为 LoadBalancer
selector:
    app:yolo
ports:
    -protocol:TCP
      port:9090
      targetPort:9090
      nodePort:30090# NodePort 范围建议 30000-32767

修改配置

启动前,需要修改部分配置,主要为环境变量,包括 LabelStudio 的信息 URL 和 API Key 需要修改为真实值,其他可以保持原状。

- name: LABEL_STUDIO_URL
  value: "http://172.20.150.246:30808"
- name: LABEL_STUDIO_API_KEY
  value: "887037f586e2021f345ed062c9d119d07afb8c89"

其中 API Key 获取方式如下:


启动

然后 apply 即可

kubectl apply -f yolo-ml.yaml

验证

查看运行情况

[root@label-studio-k8s ~]# kubectl get po
NAME                   READY   STATUS    RESTARTS   AGE
yolo-9b48946d4-pz75v   1/1     Running   0          9m30s
[root@label-studio-k8s ~]# kubectl get svc
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
yolo-service   NodePort    10.100.45.164   <none>        9090:30090/TCP   9m33s

验证

[root@label-studio-k8s ~]# curl http://10.100.45.164:9090/health
{"model_class":"YOLO","status":"UP"}

至此,模型服务启动成功。

2. 体验智能标注 

2.1 创建项目

创建 PreLabel 项目用于测试智能标注。

2.2 ML Backend 接入到 Label Studio

在 Project Setting 中 Model 栏目中添加上一步中启动的模型

ps:LabelStudio 和模型服务在同一个集群,这里直接使用 ClusterIP 对接。


保存即可

2.3 导入待标注文件

上传待标记数据

2.4 配置标注模版(重要)

使用不同的 ML Backend、不同的数据类型等等对于的标签都不相同,具体参考官方文档:Configure labeling interface[3]

这里使用图片问题识别 + yolo 模型,配置标注模板为以下格式

<View>
  <Image name="image" value="$image"/>
  <RectangleLabels name="label" toName="image" model_score_threshold="0.25">
    <Label value="Car" background="blue" predicted_values="jeep,cab,limousine,truck"/>
  </RectangleLabels>
</View>

其中的 values 选项可以调整,但是标签一定要使用 RectangleLabels

比如这里将 value 修改为 Cat、Dog 和 Other 三个

<View>
  <Image name="image" value="$image"/>
  <RectangleLabels name="animal_label" toName="image" model_score_threshold="0.25">
    <Label value="Cat" background="green" predicted_values="kitten,tabby,persian"/>
    <Label value="Dog" background="orange" predicted_values="puppy,retriever,husky"/>
    <Label value="Other" background="gray" predicted_values="bird,rabbit,unknown"/>
  </RectangleLabels>
</View>

效果如下


ls-label-config2.png

2.5 开始智能标注

选中 Task 点击 Retrieve Predictions 触发任务

ls-send-pre-label-req.png

过一会就会生成预测结果,查看

ls-label-result.png

模型预测结果为 0.95 概率是 Cat,然后选择结果也是 Cat,并且框出了范围。

我们需要做的就是检查作业了:

  • 如果模型标注正确,直接提交即可
  • 如果模型标注错误,手动修改并提交

从而极大的减少工作量。

3. 小结

LabelStudio 接入 ML Backend 即可实现智能标注,由模型服务先完成标注,然后人工检查,从而减少工作量。

大致流程如下:

  • 1)准备模型部署

  • 2)模型服务接入 LabelStudio

  • 3)配置标注模板时特殊处理

  • 4)开始智能标注

可以基于 Label Studio ML backend SDK[4] 实现自己的 ML Backend,从而实现自己的模型服务完成智能标注。

智能标注详细流程:

  • 1)用户打开任务

  • 2)Label Studio 将请求发送到 ML 后端

  • 3)ML 后端执行预测并返回结果

  • 4)预测被加载到 LabelStudio UI 中展示

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询