当前位置: 首页 > news >正文

深度学习02-数据集格式转换

背景:

通常搜集完数据图片后,我们会用labelimg进行图片标注,比较高版本的labelimg支持的标注格式有三种,PascalVOC、YOLO、CreateML,标注的时候可以根据自己的算法模型数据集需求选择相应的格式,当然,也可以三种方式同时标注,不过会耗时间一些。有时候我们仅仅标注了一种格式转,而实际算法建模的时候可能需要对相应的格式进行转换。

xml转json:

默认选用PascalVOC方式的话,标注的数据集格式为XML,实例如下(2.xml):

<annotation><folder>Desktop</folder><filename>ng2.png</filename><path>C:\Users\Xiao\Desktop\ng2.png</path><source><database>Unknown</database></source><size><width>1892</width><height>851</height><depth>3</depth></size><segmented>0</segmented><object><name>1</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>60</xmin><ymin>381</ymin><xmax>354</xmax><ymax>583</ymax></bndbox></object>
</annotation>

 将该文档转换为json格式并保存的代码如下:

import xml.etree.ElementTree as ET
import jsondef xml_to_json(xml_file, json_file):tree = ET.parse(xml_file)root = tree.getroot()data = []for obj in root.findall('object'):obj_data = {}obj_data['name'] = obj.find('name').textobj_data['bbox'] = {'xmin': int(obj.find('bndbox/xmin').text),'ymin': int(obj.find('bndbox/ymin').text),'xmax': int(obj.find('bndbox/xmax').text),'ymax': int(obj.find('bndbox/ymax').text)}data.append(obj_data)json_data = {'filename': root.find('filename').text,'size': {'width': int(root.find('size/width').text),'height': int(root.find('size/height').text),'depth': int(root.find('size/depth').text)},'objects': data}with open(json_file, 'w') as f:json.dump(json_data, f, indent=4)# Example usage
xml_file = r'C:\Users\Xiao\Desktop\tools\2.xml'
json_file = r'C:\Users\Xiao\Desktop\tools\2.json'
xml_to_json(xml_file, json_file)
print('数据转换完成!')

实际使用的时候需要适当修改一下文档路径才可以。

转换完之后的json内容如下(2.json):

{"filename": "ng2.png","size": {"width": 1892,"height": 851,"depth": 3},"objects": [{"name": "1","bbox": {"xmin": 60,"ymin": 381,"xmax": 354,"ymax": 583}}]
}

相关文章:

深度学习02-数据集格式转换

背景&#xff1a; 通常搜集完数据图片后&#xff0c;我们会用labelimg进行图片标注&#xff0c;比较高版本的labelimg支持的标注格式有三种&#xff0c;PascalVOC、YOLO、CreateML&#xff0c;标注的时候可以根据自己的算法模型数据集需求选择相应的格式&#xff0c;当然&…...

【c++|opencv】一、基础操作---1.图像读取

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 有关c操作opencv记录 1. 正文 1.1 图像读取、显示、保存 // 读取、显示、保存图像#include <opencv2/opencv.hpp> #include <iostream>us…...

【2023.10.30练习】C语言-循环右移字符

计算机能力挑战初赛2020.19题 题目描述&#xff1a; 现要对一个由字符a-z和A-Z组成的字符串进行解密&#xff0c;已知加密规则是&#xff1a; 字符串中所有字符分别在大写或小写的字母表中被循环左移5位(fGh-->aBc)&#xff0c; 输入&#xff1a;一个加密过的字符串&#…...

C++ 自引用指针this(整理)

使用例子&#xff1a; #include <iostream> #include <Windows.h> using namespace std; class A { public:A(int x1){x x1;}void disp(){cout<<"this"<<this<<" when x"<<this->x<<endl;} private:int x;…...

pyzed.sl 突然 ImportError: DLL load failed while importing sl: 找不到指定的程序。 的解决

问题描述 >>> import pyzed.sl Traceback (most recent call last):File "<stdin>", line 1, in <module> ImportError: DLL load failed while importing sl: 找不到指定的程序。解决 1 按网上说的&#xff0c;将bin文件夹下所有dll复制到py…...

STM32 Cube配置RS485 Modbus

STM32CUBUMX配置RS485 modbus STM32&#xff08;从机&#xff09;亲测可用 STM32开发&#xff08;六&#xff09;STM32F103 通信 —— RS485 Modbus通信编程详解...

global,nonlocal

1.global 在局部&#xff0c;引入全局变量&#xff0c;使得局部变量可以修改全局变量 a 10 # a为全局变量def func():global a #把外面的全局变量引入到局部a 20 #创建局部变量&#xff0c;修改全局变量func() print(a) #20 2.nonlocal 在局部&#xff0c;引入外层的…...

HTML5教程

HTML5读书笔记 jack 2023.10.24 来源&#xff1a;HTML5 Canvas | 菜鸟教程 常识&#xff1a; HTML5 是下一代 HTML 标准。 HTML , HTML 4.01的上一个版本诞生于 1999 年 <!DOCTYPE html>用于声明下面代码是H5; 浏览器支持 你可以让一些较早的浏览器&#xff08;不支…...

vulnhub momentum 靶机复盘

环境配置 到学校了 原来的桥接配置要改 这里记录几个点备忘 1.virtualbox 桥接 未指定 重新安装驱动VBoxNetLwf.inf 2.配置完靶机启动失败 手动安装VBoxNetLwf.inf 不要用virtualbox自带的netlwfinstall 3.配置完nmap扫不到 rw init/bin/bash 进去看看网卡配置 信息收集…...

c++和java实现策略模式的差异

一、C和java的差异 实例化方式 c的对象有两种实例化方式&#xff0c;一种是局部变量中直接实例化。一种是new出来的。 MyClass myclass; //第一种方式 MyClass* myclassPtrnew MyClass(); //第二种方式java的对象构建&#xff0c;没有第一种方式&#xff0c;java的对象都…...

vim

简介 vim是一款多模式的文本编辑器&#xff0c;vim里面还有很多子命令&#xff0c;来进行代码的编写操作 常用模式图 命令模式 光标移动 shif $ 光标定义到当前行的最右侧结尾 shift ^ 光标定义到当前行的最左侧开头 shift g 光标定位到文本最末尾…...

AcWing93. 递归实现组合型枚举:输出从1~n中随机选出的m个整数

题目 从 1∼ n n n 这 n n n 个整数中随机选出 m m m 个&#xff0c;输出所有可能的选择方案。 输入格式 两个整数 n , m , n,m, n,m, 在同一行用空格隔开。 输出格式 按照从小到大的顺序输出所有方案&#xff0c;每行 1 个。 首先&#xff0c;同一行内的数升序排列&a…...

Java修仙传之Flink篇

大道三千:最近我修Flink 目前个人理解&#xff1a; 处理有界&#xff0c;无界流的工具 FLINK&#xff1a; FLINK定义&#xff1a; Flink特点 Flink分层API 流的定义 有界数据流&#xff08;批处理&#xff09;&#xff1a; 有界流&#xff1a;数据结束了&#xff0c;程序也…...

网络新闻发稿为何经久不衰?

有的老板可能看不到新闻营销的直接回报&#xff0c;一直不乐意在此方面投入&#xff0c;但是却看到竞争对手一直在搞新闻营销&#xff0c;也就安排个PR做做新闻公关。小马识途营销顾问观察&#xff0c;自互联网诞生以来&#xff0c;新闻营销一直是网络营销工作中的一个重点。 如…...

Java SimpleDateFormat 中英文时间格式化转换

SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化&#xff08;日期 -> 文本&#xff09;、解析&#xff08;文本 -> 日期&#xff09;和规范化。 SimpleDateFormat使得可以选择任何用户定义的日期-时间格式的模式。但是&…...

机器学习-基本知识

 任务类型 ◼ 有监督学习(Supervised Learning) 每个训练样本x有人为标注的目标t&#xff0c;学习的目标是发现x到t的映射&#xff0c;如分类、回归。 ◼ 无监督学习(Unsupervised Learning) 学习样本没有人为标注&#xff0c;学习的目的是发现数据x本身的分布规律&#xf…...

Xilinx 7 系列 1.8V LVDS 和 2.5V LVDS 信号之间的 LVDS 兼容性

如果通过LVDS进行接口&#xff0c;可以按照以程图中的步骤操作&#xff0c;以确保满足正确使用LVDS的所有要求。 40191 - 7 系列 - 1.8V LVDS 和 2.5V LVDS 信号之间的 LVDS 兼容性 与LVDS兼容驱动器和接收器连接时&#xff0c;7系列LVDS和LVDS_25输入和输出应该不存在兼容性问…...

R语言在生态环境领域中的实践技术应用

R语言作为新兴的统计软件&#xff0c;以开源、自由、免费等特点风靡全球。生态环境领域研究内容广泛&#xff0c;数据常多样而复杂。利用R语言进行多元统计分析&#xff0c;从复杂的现象中发现规律、探索机制正是R的优势。为此&#xff0c;以鱼类、昆虫、水文、地形等多样化的生…...

ChineseChess.2023.10.31.01

中国象棋残局模拟器&#xff1a;黑双卒压禁区 中国象棋残局模拟器ChineseChess.2023.10.31.01...

数据库扩展语句和约束方式以及用户管理

数据库扩展语句和约束方式以及用户管理 create TABLE if not exists ky32 ( id int(4) zerofill primary key auto_increment, name varchar(10) not null, cradid int(18) not null unique key, hobby varchar (50) ); auto_increment&#xff1a;表示该字段可以自增长&…...

Python子解释器隔离全解密(从PyThreadState到_PyInterpreterState):20年源码级剖析,首次公开CPython内部隔离边界图谱

第一章&#xff1a;Python子解释器隔离的演进脉络与核心挑战Python长期以来依赖全局解释器锁&#xff08;GIL&#xff09;保障线程安全&#xff0c;但这也限制了真正的并行执行能力。为突破这一瓶颈&#xff0c;CPython自3.12起正式引入子解释器&#xff08;subinterpreters&am…...

OpenClaw自动化测试框架:百川2-13B驱动的CI/CD辅助方案

OpenClaw自动化测试框架&#xff1a;百川2-13B驱动的CI/CD辅助方案 1. 为什么选择OpenClaw做测试自动化 去年我在重构一个中型前端项目时&#xff0c;遇到了测试覆盖率不足的老问题。手动补测试用例不仅耗时&#xff0c;还经常遗漏边界条件。当我尝试用传统测试生成工具时&am…...

ROS2新手必看:用turtlesim小乌龟快速入门机器人仿真(附完整安装指南)

ROS2实战入门&#xff1a;从turtlesim小乌龟探索机器人仿真世界 引言&#xff1a;为什么选择turtlesim作为ROS2的起点&#xff1f; 在机器人操作系统(ROS)的学习道路上&#xff0c;很多开发者都会遇到一个共同的困境&#xff1a;理论概念抽象难懂&#xff0c;而直接上手复杂项…...

告别‘缺少DLL’:用EnigmaVB给Qt5.14程序封包的保姆级避坑指南

告别“缺少DLL”困境&#xff1a;EnigmaVBQt5.14封包全流程实战手册 当你用Qt Creator完成开发&#xff0c;满怀期待地将程序打包发给用户&#xff0c;却收到“缺少xxx.dll”的报错反馈时&#xff0c;这种挫败感开发者都深有体会。本文将以Qt5.14为例&#xff0c;结合EnigmaVB封…...

AI系统-7Pytorch数字识别实战及算子介绍

之前铺垫了神经网络的基础知识&#xff0c;这里使用编程工具Pytorch进行一个实战讲解。首先变成一个看得见、摸得着的程序和代码&#xff0c;然后再说后续怎么使用GPU/NPU硬件去优化。 本文主要参考ZOMI酱《AI系统》&#xff1a;https://chenzomi12.github.io/01Introduction/0…...

分布式电池管理系统:基于微控制器架构的智能电池保护与均衡解决方案

分布式电池管理系统&#xff1a;基于微控制器架构的智能电池保护与均衡解决方案 【免费下载链接】SmartBMS Open source Smart Battery Management System 项目地址: https://gitcode.com/gh_mirrors/smar/SmartBMS SmartBMS是一个开源的智能电池管理系统&#xff0c;专…...

极速上手:Puppeteer + 原生代理IP 突破无头检测(金融与突发新闻抓取 Cheat Sheet)

在金融量化分析、宏观经济数据追踪或突发新闻监控等场景中&#xff0c;数据价值随时间呈指数级衰减。高频并发抓取极易触发目标网站的反爬策略&#xff08;如 Cloudflare 盾、无头浏览器指纹识别&#xff09;以及严苛的 IP 封禁。 终极解法&#xff1a; 使用 puppeteer-extra-…...

Python实战:5分钟搞定小红书自动点赞脚本(附完整代码)

Python实战&#xff1a;5分钟实现小红书自动化互动工具开发指南 在当今内容爆炸的时代&#xff0c;社交媒体运营已成为个人品牌和商业推广的重要阵地。小红书作为国内领先的生活方式分享平台&#xff0c;其互动数据直接影响内容曝光和账号权重。对于开发者而言&#xff0c;掌握…...

Word空白页删不掉?【图文讲解】怎么删除word空白页?word批量删除空白页?5种方法教你彻底删除

&#xff08;1&#xff09;问题背景谁在编辑 Word 时没被顽固空白页气到抓狂&#xff1f;写论文、做报告、整理文案&#xff0c;明明内容已经结束&#xff0c;页面末尾偏偏多出一页空白&#xff0c;删也删不掉、退也退不去。打印时白白浪费纸张&#xff0c;上交文档显得格外不专…...

3步打造极速安全系统:AtlasOS开源优化方案全解析

3步打造极速安全系统&#xff1a;AtlasOS开源优化方案全解析 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atl…...