日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Yolo训练自己的数据集,将json格式转换成txt文件格式

發布時間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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文件格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。