Labelme标注的json文件转yolo训练的txt文件

在目标检测任务中,数据标注是模型训练的关键环节。常用的标注工具有Labelimg和 Labelme,它们均能够以直观的方式对图像中的目标进行标注,并生成包含标注信息的TXT文件或者 JSON 文件。然而,YOLO模型使用的是特定格式的 .txt 文件作为训练数据。因此,在使用 Labelme 进行标注后,如何将 JSON 文件转换为 YOLO 训练所需的 .txt 文件格式,成为了数据准备过程中的重要步骤。

本篇文章将详细介绍如何将 Labelme 生成的 JSON 文件转换为适用于 YOLO 训练的 .txt 文件,并通过 Python 代码示例,帮助你高效完成数据集的格式转换。

思路为,json文件中需要提取的关键信息为类别和坐标,可在shapes标签中通过提取label和points的值并进行分析得到,再将坐标值进行归一化,将全部信息按照每行文本输出到txt文件中,得到的即为yolo格式的txt文件。

需要注意labelme标注的json文件可以有矩形框和多边形框以及其它一些种类的形状,这里我们需要处理矩形“rectangle”和多边形“polygon”两种类型的标签,分别提取后经分析即可。

代码如下,输入输出均为文件夹,都是针对文件夹进行批量格式转换的。

# 作者:CSDN-笑脸惹桃花 https://blog.csdn.net/qq_67105081?type=blogimport json
import osdef json2yolo(json_path, output_dir, category_list):with open(json_path, 'r') as f:labelme_data = json.load(f)  # 读取JSON数据image_width = labelme_data.get('imageWidth', 1)  # 避免为0的情况image_height = labelme_data.get('imageHeight', 1)l = []# 遍历所有的标注形状for shape in labelme_data['shapes']:label = shape['label']if label not in category_list:print(f"Skipping shape with label '{label}' not in category list.")continuecategory = category_list.index(label)points = shape['points']if shape['shape_type'] == 'rectangle':(x1, y1), (x2, y2) = pointselif shape['shape_type'] == 'polygon':x1, y1 = min(point[0] for point in points), min(point[1] for point in points)  x2, y2 = max(point[0] for point in points), max(point[1] for point in points)  else:continue# 计算YOLO格式所需的中心点和宽高x_center = max(0, (x1 + x2) / 2.0 / image_width)y_center = max(0, (y1 + y2) / 2.0 / image_height)width = max(0, (x2 - x1) / image_width)height = max(0, (y2 - y1) / image_height)l.append(f"{category} {x_center} {y_center} {width} {height}")# 输出txt文件output_file = os.path.join(output_dir, os.path.splitext(os.path.basename(json_path))[0] + '.txt')with open(output_file, 'w') as f:f.write('\n'.join(l))def process_folder(json_folder, output_folder, category_list):if not os.path.exists(output_folder):os.makedirs(output_folder)for filename in os.listdir(json_folder):if filename.endswith('.json'):json_path = os.path.join(json_folder, filename)json2yolo(json_path, output_folder, category_list)print("Conversion completed!")# 定义类别列表
category_list = ["hat", "nohat"]  #修改为自己需要转化的列表# 输入文件夹和输出文件夹
json_folder = r' '  # 修改为输入json文件夹路径
output_txt_folder = r' '  # 修改为输出txt文件夹路径# 处理文件夹中的所有json文件
process_folder(json_folder, output_txt_folder, category_list)

使用时修改category_list列表中的类别和输入输出文件夹的路径即可,有疑问可以评论区交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第517题超级洗衣机

题目: 题解: func findMinMoves(machines []int) (ans int) {tot : 0for _, v : range machines {tot v}n : len(machines)if tot%n > 0 {return -1}avg : tot / nsum : 0for _, num : range machines {num - avgsum numans max(ans, max(abs(sum…

《重庆理工大学学报(自然科学)》

《重庆理工大学学报(自然科学)》设有车辆工程、智能技术、机械材料、电子电气等栏目,一直密切关注、追踪、展示学界最新研究动态和成果,刊文质量和学术影响力不断提升,对推动我国科技事业发展、促进学术交流、培养科技…

简单了解unordered_set和unordered_map底层

目录 1.哈希表(开散列)实现 1.1 介绍模板参数 1.2 代码实现 2.迭代器 3.HASH转整形的类 4.unordered_map简单实现 5.unordered_map简单实现 6.验证 1.哈希表(开散列)实现 1.1 介绍模板参数 //K:关键码 //T:保存数据,unordered_map是一…

[NSSCTF 2nd]php签到 详细题解

知识点: linux文件后缀名绕过 表单文件上传 pathinfo 函数 file_put_contents()函数 命令执行 代码审计: <?phpfunction waf($filename){$black_list array("ph", "htaccess", "ini");$ext pathinfo($filename, PATHINFO_EXTENSION…

《CUDA编程》11.CUDA流

本章将介绍CUDA流 CUDA程序的并行层次主要有两个&#xff1a;一个是核函数内部的并行&#xff0c;一个是核函数外部的并行&#xff0c;核函数外部的并行主要指&#xff1a; 核函数计算与数据传输之间的并行主机计算与数据传输之间的并行不同数据传输之间的并行核函数计算与主机…

操作系统期末|考研复习知识点汇总 - 持续更新

本文将根据个人学习进度对b站王道408课程以及题目考察的知识点进行整合&#xff0c;视频中详细的导图将会直接复用&#xff0c;并且将会对一些重点知识进行扩展以及一些思维导图的补充&#xff0c;(目前第三章内容正在整理中……由于第三章内容繁多且都是重点&#xff0c;习题量…

.NET Core WebApi第3讲:第一个WebApi项目、WebApi开发三种模型

一、.NEt Core 1、运行模板项目 1&#xff09;仍然有controllers&#xff0c;说明WebApi是基于MVC模式的&#xff0c;只是对比之下这里没有MVC中的views。 因为WebApi只会向前台发送数据&#xff0c;不会向前台发送HTML页面。 2、验证模板项目的api 1&#xff09;法1&#xf…

微服务之间调用,OpenFeign传递用户(RequestInterceptor接口)

场景&#xff1a;微服务之黑马商城项目-登录拦截器在网关完成用户的校验&#xff0c;并将用户信息&#xff08;用户id&#xff09;存入请求头&#xff0c;假设将购物车里面的商品进行结算就会生成订单并清空购物车&#xff0c;这里涉及到了交易服务模块远程调用购物车模块&…

单细胞数据分析(一):10X数据生成seurat数据对象

文章目录 介绍加载R包数据链接导入数据过滤细胞:移除双重细胞合并所有seurat数据对象输出结果系统信息介绍 在单细胞基因组学研究中,Seurat是一个流行的R包,用于单细胞基因表达数据的分析和探索。以下是如何从10X基因注释数据生成Seurat数据对象,并对该数据进行过滤的步骤…

RHCE的学习(8)

动态网站 lnmp&#xff08;LAMP&#xff09; 解析index.php界面 &#xff08;1&#xff09;预配&#xff0c;确保服务能够被访问 systemctl stop firewalld setenforce 0 &#xff08;2&#xff09;安装nginx服务 mount /dev/sr0 /mnt cat /etc/yum.repos.d/base.repo dnf …

NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控系统建设方案

一、方案背景 智慧小区构成了“平安城市”建设的基石。随着社会的进步&#xff0c;社区安全问题逐渐成为公众关注的热点。诸如高空抛物、乱丢垃圾、破坏车辆、入室盗窃等不文明行为和违法行为频繁出现。目前&#xff0c;许多小区的物业管理和安全防护系统仍然较为简单和陈旧&a…

UML总结

零&#xff1a;学习链接 UML_哔哩哔哩_bilibili 一&#xff1a;UML概述 二&#xff1a;类图 类图&#xff08;Class Diagram&#xff09;是统一建模语言&#xff08;UML&#xff09;中一种重要的图形表示&#xff0c;用于描述系统中的类及其之间的关系。它是面向对象设计中常…

软件已死,数据永生?

大数据产业创新服务媒体 ——聚焦数据 改变商业 你有没有注意到&#xff0c;你的生活正在被数据所支配&#xff1f; 我们看似在掌控自己的每一次点击、每一次搜索、每一个消费选择&#xff0c;但实际上&#xff0c;背后隐藏着庞大的数据网络。每一个点赞、每一次搜索&#xff…

Java非对称加密:RSA 数据加密与解密、数字签名与验签

Java常用的加密与解密系列文章: 《Java编码方式:Base64 编码与解码》 《Java消息摘要:MD5 验证数据完整性、密码的加密》 《Java消息摘要:SHA 验证数据完整性、密码的加密》 《Java对称加密:DES、3DES 数据加密标准》 《Java对称加密:AES 高级加密标准》 《Java非对称加密…

Hopfield网络

Hopfield网络是由John Hopfield在1982年提出的一种递归神经网络&#xff0c;它在模式识别和记忆存储方面有着重要的应用。这种网络模型基于能量函数&#xff0c;通过迭代更新神经元的状态&#xff0c;最终达到能量的稳定状态&#xff0c;即网络的吸引子状态。以下是Hopfield网络…

java质数的判断 C语言指针变量的使用

1. public static void main(String[] args) {Scanner scnew Scanner(System.in);System.out.println("请输入一个值");int num sc.nextInt();boolean flagtrue;for (int i2;i<num;i){if (num%i0){flagfalse;break;}}if (flag){System.out.println(num"是一…

FreeIPCC:呼叫中心客服系统是什么

呼叫中心客服系统是什么 作者&#xff1a;开源呼叫中心系统 FreeIPCC 呼叫中心客服系统是现代企业与客户沟通的重要桥梁&#xff0c;它集成了电话、互联网和移动通信技术&#xff0c;为企业提供了一个集中处理客户咨询、投诉、订单处理等服务的平台。以下是对呼叫中心客服系统…

深度学习:权重参数相关知识(深度学习入门:基于Python的理论与实现 (斋藤康毅)))

在神经网络的学习中&#xff0c;权重的初始值特别重要&#xff0c;经常关系到神经网络的学习能否成功。 第一点&#xff0c;权重初始值不能设置为0&#xff0c;严格说权重初始值不能设为同样的值&#xff0c;是因为在误差反向传播法中&#xff0c;所有权重值都会进行相同的更新…

数据库设计与范式及其应用

数据库设计是数据库管理系统&#xff08;DBMS&#xff09;中的核心环节&#xff0c;良好的数据库设计不仅可以提高数据存取的效率&#xff0c;还能增强数据的可维护性和一致性。范式&#xff08;Normalization&#xff09;是一种设计原则&#xff0c;用于减少数据冗余和提高数据…

云联网对等连接--实现内网互通

云联网 今天给大家介绍一款产品&#xff0c;腾讯云的云联网。 云联网&#xff1a;为您提供云上私有网络间&#xff08;VPC&#xff09;、VPC 与本地数据中心间&#xff08;IDC&#xff09;内网互联的服务&#xff0c;具备全网多点互联、路由自学习、链路选优及故障快速收敛等…