数据标注开源框架 Label Studio

数据标注开源框架 Label Studio

Label Studio 是一个开源的、灵活的数据标注平台,旨在帮助开发者和数据科学家轻松创建高质量的训练数据集。它支持多种类型的数据(如文本、图像、音频、视频等)以及复杂的标注任务(如分类、命名实体识别、边界框标注、语义分割等)。通过直观的用户界面和强大的 API 集成,Label Studio 为构建和训练机器学习模型提供了坚实的基础。

安装/启动

# 进入虚拟环境
conda activate label_studio# 安装
pip install label-studio# 启动,默认8080端口
label-studio start# 后台启动
nohup label-studio start &# 指定端口启动
label-studio start --port 9001

访问:http://localhost:8080

第一次访问,填写Email地址和登录密码创建登录账号,访问登录页

创建项目

点击右上角的Create按钮,弹出框上有三个Tab页面,代表创建项目的三个步骤。

  • 第一步,填写项目名称;

  • 第二步,数据导入。支持txt,csv等常见格式;

  • 第三步,设置标签。为了简化设置,你可以选择一个模板。Label Studio自带的模板支持的范围很广,常见的大类就有计算机视觉、自然语言处理、语音处理等,每个大类下面又分很多小类,例如自然语言处理大类下面有文本分类、关系抽取、机器翻译和文本摘要等。

选择了一个模板以后,可以根据自己的需求设置标签。两种方式设置标签:

  • Visual 可视化方式
  • Code 代码方式

可视化方式如下图,需要配置标注的文本字段的名称,如图中的 $reviewreview这个名称是步骤二中上传的文档里的其中一个字段的名称。

再看下图中的 Add choices 。此配置是数据标注的选项,默认有三个选项:正向、中性和负向。

以上两个配置好以后,就可以在右侧的 UI preview中看到标注人员的预览界面。给你一段文字和三个选项,你只需要用鼠标点击其中某一个或多个选项即可,也可以使用选项右上角的快捷键1、2、3。

代码方式采用 XML 格式,语法非常简单,本文不做重点介绍。

创建好以后的项目列表如下图

点击列表中某一项任务,如下图

集成机器学习后端

Label Studio ML 后端是一个SDK,可以包装您的机器学习代码并将其转换为Web服务器。Web服务器可以连接到正在运行的 Label Studio 实例以自动执行标签任务。Label Studio 提供了一个代码示例库,用户可以拿来使用或者自己扩展。

Label Studio 的机器学习( ML )后端,可以提供以下几个功能:

  • 预标注:在标注师人工标注之前,ML可提前预测标签作为参考;
  • 交互式标注:每标注完一个标签,就能更新完善ML模型,使模型更精准实时;
  • 模型评估和微调:标注师可以审查模型的准确性,对模型进行纠正。

MLLabel Studio 的交互流程是:

  • 用户打开任务
  • Label Studio发送请求给 ML后端
  • ML 后端对请求的数据进行预测
  • 预测结果返回给 Label Studio 并显示在 UI

启动后端

# 安装
git clone https://github.com/HumanSignal/label-studio-ml-backend.git
cd label-studio-ml-backend/
pip install -e .# 启动示例中的机器学习后端,sklearn_text_classifier 是利用线性回归算法对文本进行分类的示例
cd /opt/label_studio/label-studio-ml-backend/label_studio_ml/examples/sklearn_text_classifier
label-studio-ml start ../sklearn_text_classifier# 启动指定主机和端口
label-studio-ml start ../sklearn_text_classifier -p 9091 --host 0.0.0.0# 验证后端是否启动成功
curl http://localhost:9090/

label-studio-ml start 启动命令在哪个路径下执行,模型文件 model.pkl 就会在哪个路径下更新,所以一定要在算法的后端目录下执行启动命令。

例如,如果在 examples 目录下执行 label-studio-ml start sklearn_text_classifier ,则 model.pkl 会保存在 examples目录下。

添加到 Label Studio

点击项目列表右上角的 Settings按钮

选择 Model选项卡,点击 Connect Model按钮

将后端服务的地址填进去,点击 Validate and Save 按钮。其中, Interactivate preannotations配置如果打开,表示允许以交互方式向机器学习的后端服务发送请求。

打开了Interactivate preannotations开关,会在任务界面的下面出现一个 Auto-Annotation的开关。

Interactivate preannotations 开关的作用是使 Label Studio 在标注过程中实时与 ML 后端进行交互,系统会动态地请求模型生成标注建议,并立即将这些建议展示给标注人员

点击 Validate and Save 按钮后,如果验证通过,会出现如下界面, Connected状态表示 Label Studio 和机器学习后端服务连接成功。

Start model training on annotation submission ****这个开关的意思是它可以让你实现一个主动学习(Active Learning)循环,即每当有新的标注提交时,系统会自动触发模型训练。即在任务界面点了 SubmitUpdate 按钮之后, Label Studio 会调用 ML 接口请求对模型进行训练,以达到对模型微调的效果。

预标注

选择 Annotation 选项卡, 打开预标注( Prelabeling )开关,表示在项目创建伊始,就会预先调用后端服务进行预测,并将预测保存。当然这只是预测操作,最终的标注结果还是要标注师点击 Submit按钮保存标注结果。

编写自己的后端

Label Studio ML 后端是一个SDK,可用于包装机器学习模型代码并将其转换为Web服务器。

首先创建自己的空 ML 后端

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
  • Dockerfile、**docker-compose.yml.dockerignore**用于使用Docker运行ML后端
  • model.py 是主文件,可以在其中实现自己的训练和推理逻辑
  • **_wsgi.py**是一个帮助文件,用于使用Docker运行ML后端,不需要修改它
  • requirements.txt 是放置Python依赖的地方
  • **requirements_base.txtrequirements_test.txt**是基本的依赖项,不需要修改它
  • **test_API.py**是放置模型测试的地方

覆盖**model.py**文件中的 predict 方法,实现自己的预测推理逻辑

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

覆盖**model.py文件中的fit**方法,实现自己的训练逻辑

def fit(self, event, data, **kwargs):"""Train the model on the labeled data."""old_model = self.get('old_model')# write your logic to update the modelself.set('new_model', new_model)

参考

  • Label Studio 官网

Label Studio Documentation — Quick start guide for Label Studio

  • 教程:使用 Label Studio 的 machine learning backend 进行辅助标注和训练

教程:使用 Label Studio 的 machine learning backend 进行辅助标注和训练 | OpenBayes 贝式计算

  • A.2【数据标注】:基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等

A.2【数据标注】:基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等_label studio关系抽取标注已有实体-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/68080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s简介,k8s环境搭建

目录 K8s简介环境搭建和准备工作修改主机名(所有节点)配置静态IP(所有节点)关闭防火墙和seLinux,清除iptables规则(所有节点)关闭交换分区(所有节点)修改/etc/hosts文件&…

单片机内存管理剖析

一、概述 在单片机系统中,内存资源通常是有限的,因此高效的内存管理至关重要。合理地分配和使用内存可以提高系统的性能和稳定性,避免内存泄漏和碎片化问题。单片机的内存主要包括程序存储器(如 Flash)和数据存储器&a…

1. 握手问题python解法——2024年省赛蓝桥杯真题

原题传送门:1.握手问题 - 蓝桥云课 问题描述 小蓝组织了一场算法交流会议,总共有 50人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人,…

15.7k!DISM++一款快捷的系统优化工具

软件介绍 链接 软件介绍 dism是一款由初雨团队开发的win系统优化工具,可当作是微软系统命令行工具dism的GUI版本。可用作系统垃圾清除、启动项管理、程序卸载、驱动管理、系统优化等 该工具个人感觉最重要的就是系统优化选项,它将一些实用、无用或者没…

idea修改模块名导致程序编译出错

本文简单描述分别用Idea菜单、pom.xml文件管理项目模块module 踩过的坑: 通过idea菜单创建模块,并用idea菜单修改模块名,结构程序编译报错,出错的代码莫名奇妙。双击maven弹窗clean时,还是报错。因为模块是新建的&am…

微服务学习-Nacos 注册中心实战

1. 注册中心的设计思路 1.1. 微服务为什么会用到注册中心? 服务与服务之间调用需要有服务发现功能;例如订单服务调用库存服务,库存服务如果有多个,订单服务到底调用那个库存服务呢(负载均衡器)&#xff0…

vim如何设置自动缩进

:set autoindent 设置自动缩进 :set noautoindent 取消自动缩进 (vim如何使设置自动缩进永久生效:vim如何使相关设置永久生效-CSDN博客)

景联文科技加入AIIA联盟数据标注分委会

2025年1月16日,中国人工智能产业发展联盟(简称AIIA)数据委员会数据标注分委会(以下简称“分委会”)正式成立。景联文科技成为第一批AIIA联盟数据标注分委会委员单位。 数据标注分委会的成立旨在搭建数据标注领域产学研…

ELK环境搭建

文章目录 1.ElasticSearch安装1.安装的版本选择1.SpringBoot版本:2.4.2 找到依赖的spring-data-elasticsearch的版本2.spring-data-elasticsearch版本:4.1.3 找到依赖的elasticsearch版本3.elasticsearch版本:7.9.3 2.安装1.官方文档2.下载压…

Ubuntu20.04 运行 PL-VIO

文章目录 运行后不知为何没有线特征 运行后不知为何没有线特征

C#与AI的共同发展

C#与人工智能(AI)的共同发展反映了编程语言随着技术进步而演变,以适应新的挑战和需要。自2000年微软推出C#以来,这门语言经历了多次迭代,不仅成为了.NET平台的主要编程语言之一,还逐渐成为构建各种类型应用程序的强大工具。随着时…

什么情况该换手机?先看后买不踩坑

现在的智能手机发展的非常快,很多刚出来的1000多元的手机性能已经可以流畅玩游戏、刷视频了,而且基本上也能使用3-5年的时。如果真要把手机用到实在不能用了,可能真的会影响生活体验,还有可能因为电池鼓包等问题发生危险&#xff…

centos操作系统上以service形式运行blackbox_exporter监控网页端口

文章目录 前言一、blackbox_exporter是什么二、使用步骤1.获取二进制文件2.准备部署脚本3.执行命令,进行部署4.prometheus中增加需要监控页面的job信息 三、查看部署结果四、配置到grafana中总结 前言 记录一下centos操作系统上以简单的service形式运行blackbox_ex…

使用github提交Pull Request的完整流程

文章目录 1.Fork仓库2. git clone 仓库在本地3.对项目进行修改开发4.上传项目到远程仓库操作补充1. git add .2. git commit -m "提交信息"3. git pull4. git push总结完整工作流程示例 5.将更新的项目pull Request给原来的仓库主人 当多人进行项目的开发的时候&…

python编写Socket程序

文章目录 编写非阻塞的TCP连接程序编写UDP的socket程序创建连接发送数据 多线程管理udp 编写非阻塞的TCP连接程序 下面代码使用了select模块来管理多个 socket 连接,server_socket.setblocking(0)将服务器 socket 设置为非阻塞模式 ,在接收数据时&#…

PHP礼品兑换系统小程序

🎁 礼品兑换系统:革新企业礼品管理,专属神器来袭! 💻 一款专为追求高效与个性化的现代企业量身打造的礼品兑换系统,它基于强大的ThinkPHP框架与前沿的Uniapp技术栈深度融合,不仅完美适配礼品卡…

mapbox加载geojson,鼠标移入改变颜色,设置样式以及vue中的使用

全国地图json数据下载地址 目录 html加载全部代码 方式一:使用html方式加载geojson 1. 初始化地图 2. 加载geojson数据 设置geojson图层样式,设置type加载数据类型 设置线条 鼠标移入改变颜色,设置图层属性,此处是fill-extru…

Langchain+讯飞星火大模型Spark Max调用

1、安装langchain #安装langchain环境 pip install langchain0.3.3 openai -i https://mirrors.aliyun.com/pypi/simple #灵积模型服务 pip install dashscope -i https://mirrors.aliyun.com/pypi/simple #安装第三方集成,就是各种大语言模型 pip install langchain-comm…

【kong gateway】5分钟快速上手kong gateway

kong gateway的请求响应示意图 安装 下载对应的docker 镜像 可以直接使用docker pull命令拉取,也可以从以下地址下载:kong gateway 3.9.0.0 docker 镜像 https://download.csdn.net/download/zhangshenglu1/90307400, postgres-13.tar http…

高效查找:二分查找算法解析

1.二分查找简介 二分查找算法(Binary Search)是一种高效的查找算法,适用于有序数组或序列。它的基本思想是通过逐步缩小查找范围,将查找区间一分为二,直到找到目标值或确定目标值不存在。 算法原理:在数组…