Project Icon

label-studio-converter

多格式标注数据转换工具 Label Studio Converter

Label Studio Converter是一款开源的标注数据转换工具,可将Label Studio的标注结果转换为JSON、CSV、CoNLL 2003、COCO、Pascal VOC XML等多种机器学习格式。此外,它还支持将YOLO格式的预标注数据导入Label Studio。通过命令行和Python API接口,Label Studio Converter简化了数据格式转换流程,有效连接了数据标注和模型训练环节。

警告

该存储库已归档并合并到Label Studio SDK中: https://github.com/HumanSignal/label-studio-sdk/tree/master/src/label_studio_sdk/converter

Label Studio 转换器

网站文档Twitter加入Slack社区

目录

简介

Label Studio格式转换器帮助您将标签编码为您喜欢的机器学习库的格式。

示例

JSON

从命令行运行:

pip install -U label-studio-converter
python label-studio-converter export -i exported_tasks.json -c examples/sentiment_analysis/config.xml -o output_dir -f CSV

从Python运行:

from label_studio_converter import Converter

c = Converter('examples/sentiment_analysis/config.xml')
c.convert_to_json('examples/sentiment_analysis/completions/', 'tmp/output.json')

获取输出文件:tmp/output.json

[
  {
    "reviewText": "好的外壳,极高的性价比。",
    "sentiment": "正面"
  },
  {
    "reviewText": "真是浪费时间和金钱!",
    "sentiment": "负面"
  },
  {
    "reviewText": "鹅颈需要稍微调整一下",
    "sentiment": "中性"
  }
]

用例:任何任务

CSV

从命令行运行:

python label_studio_converter/cli.py --input examples/sentiment_analysis/completions/ --config examples/sentiment_analysis/config.xml --output output_dir --format CSV --csv-separator $'\t'

从Python运行:

from label_studio_converter import Converter

c = Converter('examples/sentiment_analysis/config.xml')
c.convert_to_csv('examples/sentiment_analysis/completions/', 'output_dir', sep='\t', header=True)

获取输出文件 tmp/output.tsv

reviewText	sentiment
好的外壳,极高的性价比。	正面
真是浪费时间和金钱!	负面
鹅颈需要稍微调整一下	中性

用例:任何任务

CoNLL 2003

从命令行运行:

python label_studio_converter/cli.py --input examples/named_entity/completions/ --config examples/named_entity/config.xml --output tmp/output.conll --format CONLL2003

从Python运行:

from label_studio_converter import Converter

c = Converter('examples/named_entity/config.xml')
c.convert_to_conll2003('examples/named_entity/completions/', 'tmp/output.conll')

获取输出文件 tmp/output.conll

-DOCSTART- -X- O
整周 -X- _ O
巴伊亚 -X- _ B-Location
可可 -X- _ O
产区 -X- _ O
都在 -X- _ O
下雨, -X- _ O
...

用例:文本标注

COCO

从命令行运行:

python label_studio_converter/cli.py --input examples/image_bbox/completions/ --config examples/image_bbox/config.xml --output tmp/output.json --format COCO --image-dir tmp/images

从Python运行:

from label_studio_converter import Converter

c = Converter('examples/image_bbox/config.xml')
c.convert_to_coco('examples/image_bbox/completions/', 'tmp/output.conll', output_image_dir='tmp/images')

输出图像可以在 tmp/images 中找到

获取输出文件 tmp/output.json

{
  "images": [
    {
      "width": 800,
      "height": 501,
      "id": 0,
      "file_name": "tmp/images/62a623a0d3cef27a51d3689865e7b08a"
    }
  ],
  "categories": [
    {
      "id": 0,
      "name": "行星"
    },
    {
      "id": 1,
      "name": "登月者"
    }
  ],
  "annotations": [
    {
      "id": 0,
      "image_id": 0,
      "category_id": 0,
      "segmentation": [],
      "bbox": [
        299,
        6,
        377,
        260
      ],
      "ignore": 0,
      "iscrowd": 0,
      "area": 98020
    },
    {
      "id": 1,
      "image_id": 0,
      "category_id": 1,
      "segmentation": [],
      "bbox": [
        288,
        300,
        132,
        90
      ],
      "ignore": 0,
      "iscrowd": 0,
      "area": 11880
    }
  ],
  "info": {
    "year": 2019,
    "version": "1.0",
    "contributor": "Label Studio"
  }
}

用例:图像目标检测

Pascal VOC XML

从命令行运行:

python label_studio_converter/cli.py --input examples/image_bbox/completions/ --config examples/image_bbox/config.xml --output tmp/voc-annotations --format VOC --image-dir tmp/images

从Python运行:

from label_studio_converter import Converter

c = Converter('examples/image_bbox/config.xml')
c.convert_to_voc('examples/image_bbox/completions/', 'tmp/output.conll', output_image_dir='tmp/images')

输出图像可以在 tmp/images 中找到

相应的标注可以在 tmp/voc-annotations/*.xml 中找到:

<?xml version="1.0" encoding="utf-8"?>
<annotation>
<folder>tmp/images</folder>
<filename>62a623a0d3cef27a51d3689865e7b08a</filename>
<source>
<database>我的数据库</database>
<annotation>COCO2017</annotation>
<image>flickr</image>
<flickrid>NULL</flickrid>
</source>
<owner>
<flickrid>NULL</flickrid>
<name>Label Studio</name>
</owner>
<size>
<width>800</width>
<height>501</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>行星</name>
<pose>未指定</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>299</xmin>
<ymin>6</ymin>
<xmax>676</xmax>
<ymax>266</ymax>
</bndbox>
</object>
<object>
<name>登月者</name>
<pose>未指定</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>288</xmin>
<ymin>300</ymin>
<xmax>420</xmax>
<ymax>390</ymax>
</bndbox>
</object>
</annotation>

用例:图像目标检测


YOLO到Label Studio转换器

YOLO目录结构

首先检查YOLO文件夹的结构,请注意根目录是 /yolo/datasets/one

/yolo/datasets/one
  images
   - 1.jpg
   - 2.jpg
   - ...
  labels
   - 1.txt
   - 2.txt

  classes.txt

classes.txt示例

飞机
汽车

使用方法

label-studio-converter import yolo -i /yolo/datasets/one -o ls-tasks.json --image-root-url "/data/local-files/?d=one/images"

其中 ?d= 后的URL路径是相对于您在 LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT 中设置的路径。

本地存储注意事项

  • 对于Label Studio的运行,设置 LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets (不是 /yolo/datasets/one,而是 /yolo/datasets) 非常重要。
  • 在项目设置中添加新的本地存储,并将绝对本地路径设置为 /yolo/datasets/one/images(Windows系统为 c:\yolo\datasets\one\images)。

云存储注意事项

  • 使用 --image-root-url 为任务URL创建正确的前缀,例如 --image-root-url s3://my-bucket/yolo/datasets/one
  • 在项目设置中添加新的云存储,并设置相应的存储桶和前缀。

帮助命令

label-studio-converter import yolo -h

用法: label-studio-converter import yolo [-h] -i INPUT [-o OUTPUT]
                                          [--to-name TO_NAME]
                                          [--from-name FROM_NAME]
                                          [--out-type OUT_TYPE]
                                          [--image-root-url IMAGE_ROOT_URL]
                                          [--image-ext IMAGE_EXT]

可选参数:
  -h, --help            显示此帮助信息并退出
  -i INPUT, --input INPUT
                        YOLO目录,其中包含images、labels、notes.json
  -o OUTPUT, --output OUTPUT
                        输出Label Studio JSON任务的文件
  --to-name TO_NAME     来自Label Studio标注配置的对象名称
  --from-name FROM_NAME
                        来自Label Studio标注配置的控制标签名称
  --out-type OUT_TYPE   标注类型 - "annotations"或"predictions"
  --image-root-url IMAGE_ROOT_URL
                        图像将要托管的根URL路径,例如:
                        http://example.com/images 或 s3://my-bucket
  --image-ext IMAGE_EXT
                        要搜索的图像扩展名:.jpg, .png

教程:使用本地存储将YOLO预标注图像导入Label Studio

本教程将指导您如何将含有YOLO标注的文件夹导入Label Studio以进行进一步标注。 我们将介绍如何设置环境、将YOLO标注转换为Label Studio格式,以及将它们导入您的项目。

前提条件

  • 本地安装Label Studio
  • YOLO标注的图像和相应的.txt标签文件位于/yolo/datasets/one目录中
  • 安装label-studio-converter(可通过pip install label-studio-converter安装)

步骤1:设置环境并运行Label Studio

在启动Label Studio之前,设置以下环境变量以启用本地存储文件服务:

Unix系统:

export LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true
export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets
label-studio

Windows系统:

set LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true
set LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=C:\\yolo\\datasets
label-studio

/yolo/datasets替换为您实际的YOLO数据集目录路径。

步骤2:设置本地存储

  1. 创建一个新项目。
  2. 进入项目设置并选择云存储
  3. 点击添加源存储并从存储类型选项中选择本地文件
  4. 绝对本地路径设置为/yolo/datasets/one/images或Windows上的c:\yolo\datasets\one\images
  5. 点击添加存储

有关本地存储的更多详细信息,请查看文档

步骤3:验证图像访问

在导入从YOLO转换的标注之前,验证您是否可以通过Label Studio访问本地存储中的图像。打开新的浏览器标签并输入以下URL:

http://localhost:8080/data/local-files/?d=one/images/<your_image>.jpg

one/images/<your_image>.jpg替换为您的一张图像的路径。图像应该在浏览器的新标签页中显示。 如果无法打开图像,则本地存储配置不正确。最可能的原因是在本地存储设置中指定的路径LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT有误。

注意:?d=后的URL路径应相对于LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets, 这意味着实际路径将是/yolo/datasets/one/images/<your_image>.jpg,并且这个图像应该存在于您的硬盘上。

步骤4:转换YOLO标注

使用label-studio-converter将YOLO标注转换为Label Studio可理解的格式:

label-studio-converter import yolo -i /yolo/datasets/one -o output.json --image-root-url "/data/local-files/?d=one/images"

步骤5:导入转换后的标注

现在将output.json文件导入Label Studio:

  1. 进入您的Label Studio项目。
  2. 从数据管理器中,点击导入
  3. 选择output.json文件并导入。

步骤6:验证标注

导入后,您应该能在Label Studio中看到带有预标注边界框的图像。验证标注是否正确,并进行必要的调整。

故障排除

如果遇到路径或图像访问问题,请确保:

  • LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT设置正确。
  • 转换命令中的--image-root-url与相对路径匹配:
`本地存储设置中的绝对本地路径` - `LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT` = `--image_root_url的路径`

例如:

/yolo/datasets/one/images - /yolo/datasets/ = one/images
  • Label Studio中的本地存储设置正确,绝对本地路径指向您的图像(/yolo/datasets/one/images
  • 有关更多详细信息,请参阅导入预标注数据设置云存储的文档。

贡献

我们非常欢迎您帮助创建其他模型的转换器。请随时创建拉取请求。

许可证

本软件根据Apache 2.0许可证授权 © Heartex。2020

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号