3分钟上手Labelme命令行工具:draw_json与export_json高效标注教程

3分钟上手Labelme命令行工具:draw_json与export_json高效标注教程

【免费下载链接】labelme Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation). 【免费下载链接】labelme 项目地址: https://gitcode.com/gh_mirrors/la/labelme

Labelme作为一款开源图像标注工具(Image Polygonal Annotation with Python),提供了图形界面与命令行两种操作方式。本文聚焦其命令行核心功能draw_jsonexport_json,通过实际案例演示如何在3分钟内完成标注文件的可视化与导出,解决标注效率低、格式转换复杂的痛点。

命令行工具定位与优势

Labelme命令行工具位于labelme/cli/目录下,包含draw_json.pyexport_json.py两个核心脚本。相比图形界面,命令行工具具有以下优势:

  • 支持批量处理标注文件
  • 可集成到自动化标注流水线
  • 低资源环境下高效运行
  • 提供标准化输出格式

draw_json:标注结果可视化工具

功能解析

draw_json.py用于将JSON标注文件可视化,生成原始图像与标注叠加图的对比视图。核心实现逻辑包括:

  1. 解析JSON标注文件获取图像数据与形状信息
  2. 将多边形标注转换为标签掩码(Label Mask)
  3. 使用imgviz库生成带标签名称的可视化图像
  4. 通过Matplotlib展示对比结果

基础使用方法

labelme_draw_json examples/tutorial/apc2016_obj3.json

上述命令会读取examples/tutorial/apc2016_obj3.json标注文件,生成如下可视化效果:

高级参数说明

参数作用默认值
json_file输入JSON标注文件路径无(必填)

export_json:标注数据导出工具

功能解析

export_json.py将JSON标注文件导出为标准数据集格式,包括原始图像、标签掩码、可视化标注图和标签名称文件。导出文件结构如下:

apc2016_obj3/
├── img.png           # 原始图像
├── label.png         # 标签掩码
├── label_names.txt   # 标签名称列表
└── label_viz.png     # 标注可视化图

基础使用方法

labelme_export_json examples/tutorial/apc2016_obj3.json -o output_dir

导出结果解析

导出的标签掩码可通过examples/tutorial/load_label_png.py验证:

python examples/tutorial/load_label_png.py

执行后输出标签与ID的对应关系:

label: label_name
0: _background_
1: shelf
2: highland_6539_self_stick_notes
3: mead_index_cards
4: kong_air_dog_squeakair_tennis_ball

实战案例:从标注到导出的完整流程

准备工作

  1. 安装Labelme:pip install labelme
  2. 获取示例标注文件:examples/tutorial/apc2016_obj3.json

步骤1:可视化标注结果

labelme_draw_json examples/tutorial/apc2016_obj3.json

执行命令后将显示双窗口对比视图,左侧为原始图像,右侧为叠加了多边形标注和标签名称的可视化结果。

步骤2:导出标注数据

labelme_export_json examples/tutorial/apc2016_obj3.json -o examples/tutorial/apc2016_obj3

导出成功后,在examples/tutorial/apc2016_obj3/目录下生成四个文件,其中label_viz.png为标注可视化结果:

标注可视化结果

步骤3:验证导出结果

运行examples/tutorial/load_label_png.py验证导出的标签掩码与名称是否匹配:

python examples/tutorial/load_label_png.py

批量处理与自动化集成

对于包含多个标注文件的数据集,可通过Shell脚本实现批量处理:

for json_file in examples/instance_segmentation/data_annotated/*.json; do
    labelme_export_json $json_file -o ${json_file%.json}
done

上述脚本会将examples/instance_segmentation/data_annotated/目录下所有JSON文件导出为独立的数据集文件夹。

常见问题与解决方案

中文标签显示乱码

修改draw_json.py第37行,指定支持中文的字体:

lbl_viz = imgviz.label2rgb(
    lbl,
    imgviz.asgray(img),
    label_names=label_names,
    font_size=30,
    loc="rb",
    font_path="/usr/share/fonts/truetype/wqy/wqy-microhei.ttc"
)

导出目录已存在

export_json.py第28-29行处理目录存在情况,默认直接使用现有目录,建议批量处理时添加-f参数强制覆盖(需修改源码实现)。

总结与扩展应用

通过本文学习,您已掌握Labelme命令行工具的核心用法。建议进一步探索:

Labelme命令行工具为AI训练数据准备提供了高效解决方案,配合其Python API可实现更复杂的标注自动化需求。完整项目文档参见README.md

【免费下载链接】labelme Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation). 【免费下载链接】labelme 项目地址: https://gitcode.com/gh_mirrors/la/labelme

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值