labelme标注格式的数据集转COCO格式脚本

2024-05-31 21:52

本文主要是介绍labelme标注格式的数据集转COCO格式脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. MyEncoder 类
   - 这是一个自定义的 JSON 编码器类,用于处理 NumPy 数据类型。
   - 当将 NumPy 数组或其他 NumPy 数据类型转换为 JSON 格式时,默认的 JSON 编码器无法正确处理。这个自定义的编码器可以解决这个问题。

2. labelme2coco 类
   - 这是执行从 Labelme JSON 格式到 COCO JSON 格式转换的主要类。

  __init__
     - 初始化类实例,传入 Labelme JSON 文件列表和保存 COCO JSON 文件的路径。

    - **data_transfer**:
     - 处理每个 Labelme JSON 文件,提取图像信息、类别信息和标注信息。

   - **image、categorie、annotation**:
     - 分别从 Labelme JSON 文件中提取图像信息、类别信息和标注信息。

   - **getcatid**:
     - 根据标签获取类别 ID。

   - **getbbox、mask2box**:
     - 计算给定点集或掩码的边界框。

   - **polygons_to_mask**:
     - 将多边形转换为掩码。

   - **data2coco**:
     - 将提取的信息组合成 COCO 格式的字典。

   - **save_json**:
     - 将 COCO 格式的字典保存为 JSON 文件。

3. **主代码块**:
   - 从 `D:\\desktop\\2023\\Pigseg\\images` 目录下获取 Labelme JSON 文件列表。
   - 调用 `labelme2coco` 类,将 Labelme JSON 文件转换为 COCO JSON 格式,并保存到 `D:\\desktop\\2023\\Pigseg\\train.json` 路径下。

,这个脚本的主要功能是将 Labelme 标注格式的 JSON 文件转换为 COCO 标注格式的 JSON 文件,以便在 COCO 数据集框架下使用这些标注数据。这种转换对于将Labelme 创建的标注应用于 COCO 数据集相关的计算机视觉任务非常有帮助。
 

如果要分为训练集train、验证集val,按一定的比例如7:3,

我数据集中是一张图片对应一个json文件,则把70%的json文件和图片放到一个文件夹train,把剩下的30%的json文件放到val.下面的脚本文件需要放置对应的路径,记得分别修改路径和对应的train.json和val.json.

脚本运行后则会生成train.json和val.json两个文件夹,这两个文件夹中对应的就是整合的每张图片的大的json文件,之后就可以到coco格式的模型上进行训练,还需要修改部分函数如coco.py,num_classes.py等。

如果数据集图片是png,则修改一下脚本中的相应位置即可。

# coding=gbk
import argparse
import json
import matplotlib.pyplot as plt
import skimage.io as io
import cv2
import labelme.utils as utils
import numpy as np
import glob
import PIL.Image
import os# import PIL#

这篇关于labelme标注格式的数据集转COCO格式脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019136

相关文章

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I