警告
该存储库已归档并合并到Label Studio SDK中: https://github.com/HumanSignal/label-studio-sdk/tree/master/src/label_studio_sdk/converter
Label Studio 转换器
目录
简介
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:设置本地存储
- 创建一个新项目。
- 进入项目设置并选择云存储。
- 点击添加源存储并从存储类型选项中选择本地文件。
- 将绝对本地路径设置为
/yolo/datasets/one/images
或Windows上的c:\yolo\datasets\one\images
。 - 点击
添加存储
。
有关本地存储的更多详细信息,请查看文档。
步骤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:
- 进入您的Label Studio项目。
- 从数据管理器中,点击导入。
- 选择
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
贡献
我们非常欢迎您帮助创建其他模型的转换器。请随时创建拉取请求。
许可证
本软件根据Apache 2.0许可证授权 © Heartex。2020