Labelme与COCO格式转换:labelme2coco.py工具实战

Labelme与COCO格式转换:labelme2coco.py工具实战

【免费下载链接】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作为一款开源的图像标注工具,生成的JSON格式标注文件需要转换为COCO(Common Objects in Context)格式才能被主流目标检测框架直接使用。本文将详细介绍如何使用Labelme项目中的labelme2coco.py工具实现这一转换过程,帮助用户快速上手数据预处理工作。

工具概述与准备工作

labelme2coco.py是Labelme项目中专门用于格式转换的脚本,位于examples/instance_segmentation/labelme2coco.py路径下。该工具支持将Labelme生成的多边形标注转换为COCO数据集格式,保留实例分割所需的关键信息(如边界框、分割掩码、类别标签等)。

使用前需确保系统已安装以下依赖:

  • Python 3.6+
  • Labelme本体(通过pip install labelme安装)
  • pycocotools(用于COCO格式处理)
  • imgviz(用于可视化标注结果)

标注数据需遵循以下目录结构:

data_annotated/
├── 2011_000003.jpg
├── 2011_000003.json
├── 2011_000006.jpg
└── 2011_000006.json

其中.jpg为原始图像,.json为Labelme生成的标注文件。类别定义文件labels.txt需放在同一目录下,格式如下:

__ignore__
_background_
aeroplane
bicycle
person
...

核心转换流程解析

1. 命令行参数解析

工具通过argparse模块定义了三个必选参数:

  • input_dir: 存放Labelme标注文件的目录路径
  • output_dir: 输出COCO格式数据集的目录路径
  • --labels: 类别定义文件路径

典型调用命令如下:

python labelme2coco.py data_annotated/ data_dataset_coco --labels labels.txt

2. COCO格式初始化

脚本在第46-72行构建了COCO数据集的基本结构,包括信息头(info)、许可证(licenses)、图像列表(images)、标注列表(annotations)和类别列表(categories)五个核心部分。其中类别ID通过解析labels.txt文件生成,从0开始编号。

3. 图像与标注处理

对于每个标注文件,工具执行以下操作:

  1. 读取JSON文件并提取图像数据(第95行
  2. 保存图像到输出目录的JPEGImages子文件夹(第100-101行
  3. 将图像信息添加到COCO的images列表(第102-112行
  4. 解析多边形标注并转换为掩码(第121行
  5. 计算掩码面积和边界框(第162-163行
  6. 生成COCO格式标注条目(第165-175行

4. 可视化结果生成

若未指定--noviz参数,工具会在第177-196行生成标注可视化结果,保存到输出目录的Visualization子文件夹。示例如下:

标注可视化结果

输出文件结构

转换完成后,output_dir将生成标准COCO数据集结构:

data_dataset_coco/
├── annotations.json  # COCO标注文件
├── JPEGImages/       # 图像文件
└── Visualization/    # 标注可视化结果(可选)

其中annotations.json包含所有图像和标注信息,可直接用于Mask R-CNN、Faster R-CNN等模型的训练。

常见问题解决

1. 类别ID不匹配

确保labels.txt中的类别顺序与训练代码中的类别列表完全一致,避免出现类别ID映射错误。

2. 中文路径问题

工具暂不支持包含中文字符的文件路径,需确保输入输出目录及文件名均使用英文或数字。

3. 内存占用过高

处理大量高分辨率图像时,可通过--noviz参数禁用可视化生成,减少内存消耗。

扩展应用与源码扩展

批量处理脚本

可结合Labelme的video_annotation示例,实现视频帧序列的批量标注转换。

自定义格式扩展

如需添加自定义字段(如跟踪ID),可修改第165-175行的标注生成逻辑,添加额外键值对。

其他格式转换

Labelme项目还提供了VOC格式转换工具:

通过本文介绍的labelme2coco.py工具,用户可快速完成Labelme标注数据到COCO格式的转换,为后续模型训练奠定基础。工具源码的模块化设计也便于根据实际需求进行定制扩展,更多使用技巧可参考官方实例分割教程

【免费下载链接】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、付费专栏及课程。

余额充值