跳转到内容

Label Studio — 文本图像音视频时序通吃的标注王者

是什么

Label Studio 是一套开源数据标注平台,2019 年由 Heartex(现 HumanSignal)在 GitHub 开源,核心仓库 HumanSignal/label-studio 已超 25k star。它的招牌能力是一份后端、N 种数据类型——文本分类、命名实体、目标检测、图像分割、音频转写、视频帧标注、时间序列、HTML/PDF——都用同一个界面、同一份 API、同一份导出格式来做。

日常类比:

  • 别的标注工具像专卖店——做 NER 的不能标图,标图的不能标语音;
  • Label Studio 像超市——一个门面把不同标注任务塞进同一套结账系统,配置切换”今天卖什么”用一份 XML 模板搞定。

它不是新发明任何标注算法,而是把”前端 UI + 任务调度 + 标注存储 + 导出格式”打包成一个可自托管、可扩展的 Django + React 应用。

为什么重要

不了解 Label Studio,下面几件事就讲不通:

  • 为什么 2020 年后开源 ML 项目讨论”数据标注”几乎默认指它——CVAT 偏视觉、doccano 偏文本,跨模态只有它和少数商业产品
  • 为什么 mlflow / wandb / dvc 都把 Label Studio 列为推荐数据源——它的导出 JSON 直接喂训练管道
  • 为什么”Human-in-the-loop”机器学习能做成产品——它把”模型预标 → 人工校正 → 回流训练”做成一键 ML Backend 协议
  • 为什么自托管标注工具突然能挑战 Scale AI / Labelbox 这种商业服务——同一套数据合规和安全能力开源了

核心要点

Label Studio 的设计可以拆成 四块

  1. Labeling Config(标注配置)= 一段 XML 不是写代码定义任务,而是写一段类 HTML 的标签:<Image> + <RectangleLabels> 就是目标检测,<Text> + <Labels> 就是 NER。模板可视化拖出来再改细节。

  2. Project / Task / Annotation 三层数据模型 Project 是一类标注任务的集合,Task 是一条待标数据,Annotation 是一次标注结果。一条 Task 可有多个 Annotation(多人标)+ 多个 Prediction(模型预标)。

  3. ML Backend 协议 单独的 HTTP 服务,约定 predict / fit 两个端点。Label Studio 把任务推给它做预标,把人工校正回传做增量训练。模型用什么框架完全自由。

  4. Storage 抽象 本地磁盘、S3、GCS、Azure Blob、Redis 都能挂成”任务来源/结果去向”。导出 JSON / COCO / YOLO / CONLL2003 / Pascal VOC 等十几种格式直接给下游训练用。

跨模态的秘密就在第 1 点:XML 模板把 UI 组件标准化,加一种新数据类型只是加一组组件,不重写整个产品。

实践案例

案例 1:写一段 XML 就是一个 NER 标注任务

<View>
<Labels name="label" toName="text">
<Label value="Person" background="red"/>
<Label value="Organization" background="blue"/>
<Label value="Location" background="green"/>
</Labels>
<Text name="text" value="$text"/>
</View>

把它贴进 Project 配置,前端立刻渲染成”选词 → 选标签”界面。$text 来自每条 Task 的 data.text 字段。改成 <Image> + <RectangleLabels> 就成了目标检测——同一个后端没动一行代码。

案例 2:接 ML Backend 让模型预标

from label_studio_ml.model import LabelStudioMLBase
class MyNER(LabelStudioMLBase):
def predict(self, tasks, **kwargs):
return [{
"result": [{
"from_name": "label",
"to_name": "text",
"type": "labels",
"value": {"start": 0, "end": 5, "labels": ["Person"]}
}]
} for _ in tasks]
def fit(self, annotations, **kwargs):
# 拿人工校正过的标注做增量训练
pass

跑成 HTTP 服务挂到项目里,标注员打开就看见预标好的框,只需点确认或微调,效率常常翻倍。

案例 3:导出 COCO 格式喂检测模型训练

Terminal window
curl -X GET 'http://localhost:8080/api/projects/1/export?exportType=COCO' \
-H 'Authorization: Token <YOUR_TOKEN>' \
-o coco.json

直接拿到带 images / annotations / categories 的标准 COCO,下游训练管道一行不改。CONLL / YOLO / Pascal VOC / JSON-MIN 同样一键导出。

踩过的坑

  1. Community 版没有任务分配 / 审核流:开源版默认”谁先点谁标”,多人协作要靠外部约定或上 Enterprise 版。早期团队常以为开源就够,后来撞到质量管理才发现。

  2. 大文件不要直传:超过 250MB 的视频 / 音频建议放 S3 + 引用 URL,直接上传容易把 SQLite 默认元数据库撑爆。生产环境直接换 postgresql

  3. XML 模板的 nametoName 要对齐:组件之间靠这两个属性串起来,写错前端不报错,只是点不动——新人最常踩。

  4. ML Backend 协议是约定不是 SDK:返回的 JSON 字段必须严格匹配 XML 配置,少一个 from_name 全部预标失效。官方 SDK label-studio-ml 帮忙但仍要看源码对字段。

  5. Storage 同步是单向触发:S3 桶里新加文件不会自动出现在任务列表,要手动点 Sync 或定时调 API。误以为”挂了就实时”会丢任务。

适用 vs 不适用

适用

  • 跨模态混合标注:一个项目里既有图也有文也有音频
  • 需要人工 + 模型协作:用 ML Backend 把成本压下来
  • 自托管合规需求:数据不能出公司边界,开源版加 postgresql + minio 自建
  • 中小团队 < 50 人标注协作:Community 版功能够用

不适用

  • 需要严格审核流 / 多级 review / SLA:上 Enterprise 或 supabase 自建权限
  • 实时协同标注一份数据(多人同时改一帧):Label Studio 是”一人一 Annotation”模型,不是 CRDT
  • 极轻量”几百条数据快速标”:自己写一个表单页更快,省去部署
  • 视频每秒 60 帧密集物体追踪:专业视觉工具如 CVAT 在视频帧导航上更顺手

历史小故事(可跳过)

  • 2019 年:Heartex 团队(Michael Malyuk 等)把内部用的标注工具开源,最初只有文本和图像两种模板。
  • 2020-2021 年:1.0 发布,XML 模板系统成型,音频 / 视频 / 时间序列陆续进来;GitHub star 数破万。
  • 2022 年:公司更名 HumanSignal,Enterprise 版加入审核流 / SSO / 审计;开源版保持核心标注能力。
  • 2023-2025 年:跟 mlflow / wandb / dvc / Hugging Face 集成持续完善,成为 LLM 微调”指令数据 + 偏好数据”标注的常用前端。

学到什么

  1. 配置即 UI:用 XML 把”加新标注类型”压成”加一组组件”——这是同一个产品撑住跨模态的根本。
  2. 协议优先 SDK:ML Backend 约定两个 HTTP 端点就行,不绑死框架——这让 PyTorch / TensorFlow / 任何模型都能接。
  3. 导出格式即生态门票:默认支持 COCO / YOLO / CONLL 而不是自创一种,让下游训练管道零改动接入。
  4. 开源 + Enterprise 分层很务实:核心能力开源吸引社区,企业治理收费养团队——是 grafana / supabase 同款打法。

延伸阅读

关联

  • postgresql —— 生产部署默认元数据库,替代默认 SQLite
  • minio —— 自托管 S3 兼容存储,挂任务源 / 导出去向
  • mlflow —— 训练实验跟踪,Label Studio 导出的数据是它的常见输入
  • wandb —— 类似定位的实验跟踪平台,常和 Label Studio 搭配
  • dvc —— 数据版本控制,Label Studio 导出物可纳入 DVC 管道
  • django —— Label Studio 后端框架
  • react —— Label Studio 前端框架
  • supabase —— 当需要更强权限和实时协同时的对照选择