试用开源标注平台 Label Studio

数据标注是人工智能背后的女人。—— 我说的

初探

在 reddit 上看到一个人提了一个问题:What is your favourite (free) labelling tool?,你最喜欢的(免费)标注工具是什么。由于我一直关注标注工具,而且没找到好用、漂亮的标注工具(甚至一度计划自己做一个),也认为这块很重要,所以就点进去看了下。收获不少,帖子楼主提到的 Prodigy,我点进去看了看,确实很漂亮,但是收费,来看下价格:

在这里插入图片描述
罢了。

贫穷让我看到了 Label Studiodoccanobrat,brat 我之前就知道,只是没那么美观。剩下两个都很不错,开源也美观,这次我们来看看前者。
在这里插入图片描述
以命名实体识别任务的数据标注为例,先来看下使用 Label Studio 进行标注的效果:
在这里插入图片描述
查看任务进度:
在这里插入图片描述
后端使用的是 flask,前端使用的是 React。

OK,如果你还满意的话可以继续往下看安装、导入数据等部分了。接下来我会以标注 NER 数据为例,介绍如何使用 Label Studio。标注类别有人名、地名、公司名、产品和时间,标注数据放在 sentences.txt 中,内容如下:

狼牙山,我站在你面前,显得多么矮小呀!
1976年9月间,我与《福建文艺》编辑部的几位同事,专程到上杭县举办改稿学习班。
罗湾村为修建一座庙宇,从筹集资金、征集土地,到竣工持续近10年。
20日凌晨1时许,博物馆附设的“艺术咖啡”酒吧招待员克罗科洛与监控室的3名女看守联系,没有得到回答。
可口可乐公司的发言人辩称,饮料市场本来就是竞争高度激烈的地方,百事可乐应该直接到市场去竞争,而不是在法庭上争斗。

安装和启动

主要有三种方式 :

  • pip:pip install label-studio,建议使用 conda 等虚拟环境
  • docker:docker pull heartexlabs/label-studio,docker 镜像版本可能会滞后
  • 源码:
    git clone https://github.com/heartexlabs/label-studio.git
    cd label-studio
    python setup.py develop
    

建议使用 pip 方式安装。

假设我们计划将标注相关文件放在 ner_labeling 文件夹中,你不用事先创建。安装好后使用如下命令启动:

label-studio start ner_labeling --init

这会初始化这个项目并默认在 8200 端口启动服务,生成一些默认文件和文件夹:

ner_labeling/
├── completions  # 存放标注好的数据,json 文件,每一个标注完成的任务都放在一个以其 ID 命名的 json 文件中
├── config.json  # 项目设置,例如服务端口
├── config.xml   # 标签(label)设置
└── tasks.json   # 所有导入的任务,key 为任务 ID,value 为任务数据

然后你就可以在 http://{your-server-ip}:8200 访问了。

设置标签

第一步就是要设置标签,具体包括标签名称、颜色等。可以在网页上直接修改并直观看到效果:
在这里插入图片描述
如图修改标签名称和颜色,满意后点击左下角的 Save 按钮,保存设置到 config.xml 中。

注意官方并不建议直接修改项目中的文件,建议使用网页或者命令修改。

导入任务

接着点击左上角图标回到主页面,进行第二步导入任务,可以导入 json、csv、tsv 和 txt 等文件格式。对于本文的例子来说,我们使用 txt 文件最为方便,一行是一个句子,直接将文件拖入上传框中即可,完成后会显示导入任务数和耗费时间:

单个 txt 文件大小不超过 1M,如果超过 1M,可以使用 split 命令分割。

在这里插入图片描述
关闭后点击右上方导航栏的 Tasks,可看到导入的任务数和任务存放地址,就是那个 tasks.json,任务 ID 默认从 0 开始计数,生成的 tasks.json 如下:

{
    "0": {
        "id": 0,
        "data": {
            "text": "狼牙山,我站在你面前,显得多么矮小呀!"
        }
    },
    "1": {
        "id": 1,
        "data": {
            "text": "1976年9月间,我与《福建文艺》编辑部的几位同事,专程到上杭县举办改稿学习班。"
        }
    },
    "2": {
        "id": 2,
        "data": {
            "text": "罗湾村为修建一座庙宇,从筹集资金、征集土地,到竣工持续近10年。"
        }
    },
    "3": {
        "id": 3,
        "data": {
            "text": "20日凌晨1时许,博物馆附设的“艺术咖啡”酒吧招待员克罗科洛与监控室的3名女看守联系,没有得到回答。"
        }
    },
    "4": {
        "id": 4,
        "data": {
            "text": "可口可乐公司的发言人辩称,饮料市场本来就是竞争高度激烈的地方,百事可乐应该直接到市场去竞争,而不是在法庭上争斗。"
        }
    }
}

开始标注

导入数据后就可以开始标注了,点击导航栏的 TasksStart Labeling 或者直接点击导航栏的 Labeling 即可开始标注:
在这里插入图片描述

每次点击 Submit 就会保存标注好的数据到 completions 文件夹中,同时也可以在 Tasks 中查看已完成的任务及完成时间:
在这里插入图片描述

导出数据

导出数据这块是 Label Studio 的一个缺点,官方目前支持的是 JSON、CSV、TSV、CoNLL 2003、COCO 和 Pascal VOC XML,其中 CoNLL 2003 是 ner 数据格式的一种,但是经过我测试导出这种格式并不成功,导出的文件是空的。

但是我们可以先导出为 JSON 文件,然后编写一个脚本转换成我们需要的格式,例如 BIEOS。

优缺点

经过我粗浅的使用,发现一些优缺点:

优点:

  • 界面相对美观
  • 部署方便
  • 配置方便,有多种内置模板
  • 导入数据方便
  • 可以明晰了解任务的完成度及每条任务的完成时间
  • 支持图像、文本和音频等多种数据格式和多种任务数据的标注

缺点:

  • 速度较慢,尤其是保存标注结果并进行下一条标注时
  • 没有账号体系,但是有一个 multisession mode,暂未深入研究

Reference

END

### 使用Label Studio进行线标注 #### 安装与配置 为了使用 Label Studio 进行线标注,首先需要完成软件的安装。作为一款开源数据标注工具,Label Studio 支持多种类型的标注任务,包括但不限于图像、音频以及文本等。 对于初次使用者来说,在本地环境中设置好 Python 的虚拟环境是非常重要的一步。通过创建并激活一个新的虚拟环境可以有效避免不同项目之间的依赖冲突问题[^1]。 ```bash python -m venv label_studio_env source label_studio_env/bin/activate # Linux 或 macOS 下激活 label_studio_env\Scripts\activate # Windows 下激活 ``` 接着利用 `pip` 工具来安装最新版本的 Label Studio: ```bash pip install label-studio ``` 启动服务端之后即可访问 Web 界面开始创建工作流。 #### 配置标注界面 进入 Label Studio 后台管理系统后,点击左侧菜单栏中的 "Import Data" 来导入待处理的数据集文件。支持上传图片、视频片段等多种格式的内容供后续操作使用。 针对特定应用场景下的需求设计合适的标签模板至关重要。当涉及到绘制线条的任务时,则需定义相应的几何形状组件——即 “Line Tool”。此工具允许用户在目标对象上画出连续或不连续的折线段以标记特征边界位置。 具体做法是在编辑器内选择“Lines”,然后指定每条边的颜色样式以及其他属性参数以便于区分不同的类别实例。此外还可以自定义快捷键提高工作效率。 #### 开始线标注工作 一旦完成了上述准备工作就可以正式开启标注流程了。每次加载新样本之前记得保存当前进度以免丢失已完成的工作成果。在线模式下只需按照屏幕指示依次单击起始点和结束点形成一条完整的连接路径直至覆盖整个感兴趣区域为止。 如果遇到复杂结构或者多分支情况也不必担心,因为 Line Tool 提供了灵活调整节点的功能使得即使面对再棘手的情形也能轻松应对。而且所有修改都会实时反映到预览窗口当中方便即时查看效果。 最后导出已标注好的 JSON 文件或者其他兼容格式用于训练机器学习模型或其他用途。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

secsilm

来一根火腿?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值