Yolo训练自己的数据集,将json格式转换成txt文件格式
一、json to txt
解决的问题
1)文件夹目录下有json格式数据和jpg数据,读取json数据时会报错
解决方法:增加json文件后缀判断
for json_name in json_names:if json_name[-4:]=='json':
2)pandas数据用append增加行无效
解决方法:需要重新对pd进行赋值更新
label=label.append(new_label,ignore_index=True)
3)json数据坐标存在缺失,本应有四个值
报错:
x2 = float((i['points'][1][0])) / img_w
IndexError: list index out of range
解决方法:使用try-except捕捉错误
4)pandas索引存在重复
if i['label'] not in label:new_label=pd.DataFrame(columns=['label'], data=[i['label']])label=label.append(new_label,ignore_index=True)
解决方法:
if (label['label'] != i['label']).all():
5)存储label名称到txt文件时,为缩略的形式
txt_name = 'label.txt' # 生成txt文件你想存放的路径txt_file = open(txt_name, 'w')txt_file.write(str(label['label'])+ '\n')
解决方法:
label.to_csv('label.txt', sep='\t', index=True)
二、源代码
import json
import os
import pandas as pddef convert(img_size, box):# dw = 1. / (img_size[0])# dh = 1. / (img_size[1])# x = (box[0] + box[2]) / 2.0 - 1# y = (box[1] + box[3]) / 2.0 - 1# w = box[2] - box[0]# h = box[3] - box[1]# x = x * dw# w = w * dw# y = y * dh# h = h * dhx1 = box[0]y1 = box[1]x2 = box[2]y2 = box[3]return (x1, y1, x2, y2)def decode_json(json_floder_path, json_name,label):txt_name = r'C:\Users\Tycoon\Desktop\Taxi invoice\train/' + json_name[0:-5] + '.txt' # 生成txt文件你想存放的路径txt_file = open(txt_name, 'w')json_path = os.path.join(json_floder_path, json_name)data = json.load(open(json_path, 'r'))img_w = data['imageWidth']img_h = data['imageHeight']for i in data['shapes']:if i['shape_type'] == 'rectangle':if (label['label'] != i['label']).all():new_label=pd.DataFrame(columns=['label'], data=[i['label']])label=label.append(new_label,ignore_index=True)try:x1 = float((i['points'][0][0])) / img_wy1 = float((i['points'][0][1])) / img_hx2 = float((i['points'][1][0])) / img_wy2 = float((i['points'][1][1])) / img_hn = label[label['label']==i['label']].index[0]bb = (x1, y1, x2, y2)bbox = convert((img_w, img_h), bb)txt_file.write(str(n) + " " + " ".join([str(a) for a in bbox]) + '\n')except IndexError:print(json_name[0:-5]+'的'+i['label']+"标签坐标缺失")return labelif __name__ == "__main__":json_floder_path = r'C:\Users\Tycoon\Desktop\Taxi invoice\train_dataset\已标注训练集汇总' # json文件的路径json_names = os.listdir(json_floder_path)label= pd.DataFrame(columns = ['label'])for json_name in json_names:if json_name[-4:]=='json':print(json_name)label=decode_json(json_floder_path, json_name,label)label.to_csv('label.txt', sep='\t', index=True) # 生成txt文件你想存放的路径
三、结果
1)原来json格式
2)txt格式
3)label.txt
Yolo训练自己的数据集,将json格式转换成txt文件格式相关推荐
- 实现pdf图片格式转换成txt文档的方法
怎样才能将PDF转换成TXT文本? 遇到PDF与TXT转换的问题,我们该怎么办呢?之前尝试过手动用键盘打字,但是花费了很多的时间,完全不符合现代社会人的节奏,在这里,我主要讲解一种方法,就是关于如何从 ...
- python json格式转换_Python实现把json格式转换成文本或sql文件
python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql文件? 下面的例子是将json格式的数据准换成以#_#分割的文本数据,也可用于生成sql文件. [root@bogon ...
- JSON格式转换成XML格式
第一种方法: 需要使用命名空间System.Runtime.Serialization.Json 下面有JsonReaderWriterFactory XmlDictionaryReader read ...
- YOLO训练自己的数据集的一些心得
YOLO训练自己的数据集 YOLO-darknet训练自己的数据 [Darknet][yolo v2]训练自己数据集的一些心得----VOC格式 YOLO模型训练可视化训练过程中的中间参数 项目开源代 ...
- 用yolo训练自己的数据集(以车牌为例)
我看了网上很多yolo教程,可能是因为电脑环境和配置的不一样,所以我并没有完全通过网上教程成功训练自己的数据集,接下来我将我自己完全亲自测试并且最后成功训练数据集的教程记录如下: 训练自己的数据集有如 ...
- Yolov5-5.0源码分享以及环境配置——Yolov5训练及测试教程(超详细含数据集制作,格式转换,数据集划分)
yolov5-5.0百度网盘连接 链接: https://pan.baidu.com/s/1Hd2KKBixuEWRv3jcH6Bcsw 提取码: g6xf 复制这段内容后打开百度网盘手机App,操作 ...
- 如何利用python将NWPU VHR-10目标检测遥感数据集的格式转换成VOC目标检测数据集的格式
VOC目标检测数据集的格式 其中图片存放在JPEGImages文件夹中,标注是xml文件,存储在Annotations文件中 关于train集和val集的txt划分存放在ImageSets文件夹下面的 ...
- python格式和JSON格式转换
这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...
- BDD100K数据集简单解析以及格式转换成voc格式
https://blog.csdn.net/qq583083658/article/details/86493752 BDD100K数据集之数据集下载 https://blog.csdn.net/qq ...
- WPI交通信号灯数据集格式转换成VOC2007
WPI交通信号灯数据集格式转换成VOC2007 1.简述 初学交通信号灯目标检测时,总是苦于找不到合适的交通灯数据集.即使找到了数据集,也往往因为格式不同而无法直接使用.因为大部分目标检测代码都只支持 ...
最新文章
- RNN神经网络的输入输出维度的关系
- android信息中字符个数,在android中指定编辑文本中的字符数
- ストアドプロシージャ(存储过程)
- Shell(6)——if语句
- WEKA The workbench for machine learning
- Angular应用带参数的路由实现
- 【ACM】nyoj_305_表达式求值_201308081018
- 队列和消息队列_消息队列概述[幻灯片]
- leetcode—— 401. 二进制手表(使用到将数字转换为字符)
- spring aop使用
- from injection shell sql to_FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION
- beeline hiveserver2 start
- 计算机数学公式画爱心教程,几何画板如何绘制爱心?几何画板爱心函数教程
- 3轴陀螺仪传感器和3轴加速度传感器的工作原理
- Elasticsearch构建全文搜索系统
- java图片去掉水印
- Linux C++编译及 静态/动态 链接库 笔记
- 微信小程序从前端wxml页面数据获取,到JS页面数据对象字符化,传递给后台,前台再从后台获取数据并在wxml页面动态展示数据(前后台交互实现发表动态功能)
- 逍遥模拟器拷贝android根目录文件,逍遥安卓模拟器怎样将已安装的镜像文件转移到别的磁盘上...
- DFT的一些基本性质