微信扫码
添加专属顾问
我要投稿
LabelStudio智能标注功能,让机器学习模型自主预测标签,提高标注效率。 核心内容: 1. LabelStudio智能标注(预标注)功能介绍 2. 智能标注流程及模型服务接入LabelStudio的步骤 3. 自定义模型服务的创建与部署指南
LabelStudio 中使用智能标注(预标注)的大致流程如下:
1)准备模型部署
2)模型服务接入 LabelStudio
3)配置标注模板时特殊处理
4)开始智能标注
ps:这里说的预标注/自动标签/智能标注都是指:让 ML/AI 模型自主预测标签,然后人工进行审查。
智能标注流程:
1)用户打开任务
2)Label Studio 将请求发送到 ML 后端
3)ML 后端执行预测并返回结果
4)预测被加载到 LabelStudio UI 中展示
要是有模型进行智能标注,自然得先部署一个模型服务才行。
需要注意的是:对接到 Label Studio 的模型服务需要满足一定规范才行。
可以通过 Label Studio ML backend SDK[1] 将我们自己的模型服务转换为一个 Web 服务,然后将该 Web 服务连接到 LabelStudio 以实现智能标注。
是有内置 example 模型服务
实现自己的模型服务
本次演示,直接使用内置的 yolo 服务做为 Backend。
官方文档:Write your own ML backend[2]
1)clone 并安装 repo
2)初始化项目
3)实现自己的预测逻辑
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.
先 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"}
至此,模型服务启动成功。
创建 PreLabel 项目用于测试智能标注。
在 Project Setting 中 Model 栏目中添加上一步中启动的模型
ps:LabelStudio 和模型服务在同一个集群,这里直接使用 ClusterIP 对接。
保存即可
上传待标记数据
使用不同的 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>
效果如下
选中 Task 点击 Retrieve Predictions 触发任务
过一会就会生成预测结果,查看
模型预测结果为 0.95 概率是 Cat,然后选择结果也是 Cat,并且框出了范围。
我们需要做的就是检查作业了:
从而极大的减少工作量。
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+中大型企业
2025-04-30
Qwen能吞下整本扫描版PDF,直接转Word了,这波操作太赞了!
2025-04-28
3D 小白亲测:用 Trae + Blender MCP 从零开始 AI 建模(附踩坑指南)
2025-04-27
行业落地分享:作业帮问答检索系统实践
2025-04-27
大模型赋能CAD图纸智能识别与集成实战指南
2025-04-25
英伟达推出 Describe Anything 3B AI 模型了
2025-04-24
OpenAI 图像生成 API 开放!开发者也能“一键出图”了
2025-04-24
OpenAI终于放出图像生成模型 API ,Midjourney危!
2025-04-24
多模态RAG:解读检索、重排、精炼三大关键技术
2024-09-12
2024-06-14
2024-06-17
2024-08-06
2024-08-30
2024-05-30
2024-11-28
2024-10-07
2024-10-16
2024-04-21
2025-04-08
2025-04-05
2025-03-30
2025-03-26
2025-03-05
2025-03-02
2025-01-08
2024-12-13