0. 前言

由于最近个人兴趣原因,需要调研下数据标注平台。看了这些平台:

从丰富性与二次开发角度对比,最终决定使用Label Studio进行一次实践,也趁此机会了解下关于数据标注与AI智能标注的相关知识。

1. label-studio简介

labelStudio
Label Studio的仓库地址(https://github.com/HumanSignal/label-studio )所述,Label Studio是一个使用Python+TypeScript多模态数据标注平台,开源协议为Apache-2.0,非常适合二次开发或商用。
Label Studio也支持多种部署方式,如需快速体验,推荐使用docker一键部署:

docker run -it -p 8080:8080 -v $(pwd)/mydata:/label-studio/data heartexlabs/label-studio:latest

之后访问对应的web服务,如:http://192.168.1.101:8080
label-studio-web

2. 功能体验

label-studio支持系统内置的模板和自定义模板标注。
label-studio-admin

2.1 图像标注

上传数据集,并设置标签;
image-tag
我上面设置的是标注名为head,在上传的数据集中自己拖拽出一个head的矩形区域即可。

2.2 视频/音频标注

音视频标注也是类似的,加载了资源文件后,根据任务的类型框出对应需要标注的区域。
video-tag

2.3 文本标注

text-tag
提前设置好文本标签,就可以对导入的文本进行标注了。

2.4 数据的导入/导出

数据支持本地上传,与外部数据源导入。与之前笔者调研的RAGFlow类似的,LabelStudio也分为开源社区版企业版企业版的LabelStudio具有更强大的功能。
source-list
现导出支持的数据格式有:

  • ASR_MANIFEST
  • Brush labels to NumPy and PNG
  • COCO
  • CoNLL2003
  • CSV
  • JSON
  • JSON_MIN
  • Pascal VOC XML
  • spaCy
  • TSV
  • YOLO

如果遇到暂不支持的数据格式,LabelStudio官方也提供了对应的源码以方便我们进行扩展开发。详见:label_studio_sdk-converter

3.AI智能标注-ML Backend

LabelStudio中也支持使用ML Backend集成机器学习框架来实现数据集的预标注自动标注,从而提高数据标注的效率。
MLBACKEND
整合了ML Backend之后的数据标注任务流程图如上所示。

3.1 ML Backend部署

Label Studio中的ML backend是一个WEB服务,在这个服务中定义了一些关于机器学习(machine learn)的流程和代码。通过让ML BackendLabel Studio连接后,从而实现自动化的标注。
LabelStudio官方也提供了一些关于ML Backend的示例,地址为:https://github.com/HumanSignal/label-studio-ml-backend?tab=readme-ov-file#models ,通过对这些示例的修改,可快速实现一个符合自己场景的AI标注工作流。
在这里插入图片描述
这里以SAM模型为例,演示一下:

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

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

docker-compose.yml中的内容如下:

version: "3.8"

services:
  segment_anything_model:
    container_name: segment_anything_model
    image: heartexlabs/label-studio-ml-backend:sam-master
    init: true
    build:
      context: .
      shm_size: '4gb'
      args:
        TEST_ENV: ${TEST_ENV}
    deploy:
      resources:
        limits:
            memory: 8G
        reservations:
            memory: 4G
# Add this to pass through 1 GPU 
#            devices:
#              - driver: nvidia
#                count: 1
#                capabilities: [gpu]
    environment:
      # specify these parameters if you want to use basic auth for the model server
      - BASIC_AUTH_USER=
      - BASIC_AUTH_PASS=
      # Change this to your model name: MobileSAM or SAM
      - SAM_CHOICE=MobileSAM
      - LOG_LEVEL=DEBUG
      # Enable this to use the GPU
      # - NVIDIA_VISIBLE_DEVICES=all
      # specify the number of workers and threads for the model server
      - WORKERS=1
      - THREADS=8
      # specify the model directory (likely you don't need to change this)
      - MODEL_DIR=/data/models

      # Specify the Label Studio URL and API key to access
      # uploaded, local storage and cloud storage files.
      # Do not use 'localhost' as it does not work within Docker containers.
      # Use prefix 'http://' or 'https://' for the URL always.
      # Determine the actual IP using 'ifconfig' (Linux/Mac) or 'ipconfig' (Windows).
      - LABEL_STUDIO_HOST=
      - LABEL_STUDIO_ACCESS_TOKEN=

    ports:
      - 9090:9090
    volumes:
      - "./data/server:/data"

docker-compose.yml的目录下执行命令,启动ML Backend

docker-compose up

start-mlbackend
运行后,它会占用9090端口。

curl localhost:9090
{"model_class":"SamMLBackend","status":"UP"}

3.2 ML Backend整合

在前面完成了LabelStudioML Backend的部署,并都已启动成功。接下来就可以进行对接测试了。
LabelStudio中打开某个项目,找到设置中的Model,在Connect Model中填入相关的ML Backend的信息。
connect-model
保存之后,再次进入到数据标注界面
Label-Studio-ML
这时选择task之后,再点击Retrieve Predictions就可以对任务进行预标注了。

更多关于ML Backend可参考:https://labelstud.io/guide/ml_create ,笔者在这里不再详细展开。

另外,我们还可以使用LabelStudioML Backend完成数据集的训练集成,从而实现数据集的一条龙服务。笔者这里暂不详细展开,后面有机会再持续补充。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐