[PYTHON] Convertir les données au format json en txt (en utilisant yolo)

Je veux convertir les données au format json en données au format txt afin d'utiliser yolo.

Ce que j'ai fait

Le code pour convertir json en txt était sur le net, mais je ne savais pas comment l'utiliser, alors j'ai décidé de le créer moi-même. (Je l'ai peut-être vu parce que j'ai coupé et collé une partie de divers codes)

Code ci-dessous

import json
import glob

data_path = glob.glob("train_json/*.json")
img_data_path = glob.glob("train_img/*.jpg ")
cate_list = ["Car","Pedestrian","Truck","Signal","Signs","Bicycle","Motorbike","Bus","Svehicle","Train"]
box_list  = ["x1","x2","y1","y2"]
input_shape = [640,640]
img_output = "train_img_data"

with open("voc_classes.txt","w") as f:
    f.write('\n'.join(cate_list))

list_file = open("2007_train.txt","w")

def class_encord(class_name):
    cate_id = {"Car":0,"Pedestrian":1,"Truck":2,"Signal":3,"Signs":4,"Bicycle":5,"Motorbike":6,"Bus":7,"SVehicle":8,"Train":9}
    return cate_id[class_name]

def img_box_resize(img_path,input_shape,label_box):
    img = Image.open(img_path)
    iw , ih = img.size
    w, h = input_shape
    scale = min(w/iw,h/ih)
    nw = int(scale*iw)
    nh = int(scale*ih)
    dx = (w-nw)//2
    dy = (h-nh)//2
    img_data = 0 
    image = img.resize((nw,nh),Image.BICUBIC)
    new_image = Image.new("RGB", (w,h), (128,128,128))
    new_image.paste(image, (dx, dy))    
    bax_lx = label_box[0]
    box_ly = label_box[1]
    box_rx = label_box[2]
    box_ry = label_box[3]
    
    new_box_lx = int(box_lx*scale) + int(dx)
    new_box_ly = int(box_ly*scale) + int(dy)
    new_box_rx = int(box_rx*scale) - int(dx)
    new_box_ry = int(box_ry*scale) - int(dy)
    box_list = []
    box_list.append(new_box_lx)
    box_list.append(new_box_ly)
    box_list.append(new_box_rx)
    box_list.append(new_box_ry)
    return new_image , box_list

def convert(data_file,list_file,input_img_path,output_img_path):
    with open(data_file) as j_f:
        load_json = json.load(j_f)
        datas = load_json["labels"]  
        for data in datas:
            box = data["box2d"]
            json_box = []  
            new_img , box_list = img_box_resize(img_path,input_shape,box)
            for i in range(4):
                json_box.append(box_list[i])
            category = data["category"]
            category_num = class_encord(category)
            list_file.write(" "+",".join([str(a) for a in json_box])+","+str(category_num))
            new_img.save(output_img_path+"/"+input_img_path)
            

for data_file in data_path:
    for img_path in img_data_path:
        data = data_file
        list_file.write(output_img_path+"/"+input_img_path)
        convert(data_file,list_file,img_path,img_output)
        list_file.write("\n")

list_file.close()

Veuillez changer en fonction de l'environnement dans lequel les variables ci-dessus sont utilisées. Elles seront converties en fonction de la taille de input_shape.

Devrait fonctionner: sweat_smile: (j'ai travaillé avec ça)

Recommended Posts

Convertir les données au format json en txt (en utilisant yolo)
Convertir les données au format XML en données au format txt (yolov3)
Convertir des données Excel en JSON avec python
[Introduction à Python] Comment gérer les données au format JSON
Je convertis les données AWS JSON en CSV comme ceci
Convertir / renvoyer des objets de classe au format JSON en Python
Comment convertir des fichiers Json au format CSV ou au format EXCEL
Convertir le fichier XML au format Pascal VOC en fichier json au format COCO
Convertir l'objet Statut Tweepy en JSON
Exporter les données DB au format json
Analyser les données au format CSV à l'aide de SQL
Conversion de pdf en txt 2 [pyocr]
Fusionner les données au format JSON avec Ansible
Convertir le graphique matplotlib au format de fichier emf
Convertir un document XML stocké dans une base de données XML (BaseX) au format CSV (en utilisant Python)
Convertir (compresser) une chaîne de caractères JSON formatée en JSON 1 ligne
[MNIST] Convertir les données en PNG pour les keras
Convertir les données de la grille en données contenant des lignes (?) À l'aide de pandas
Convertissez des données FX 1 minute en données 5 minutes avec Python
Convertir un PDF joint en courrier électronique au format texte
Convertir un tableau (struct) en json avec golang
Convertir les données csv, tsv en une matrice avec MovieLens en utilisant python comme exemple
Convertissez l'historique d'utilisation de Suica mobile au format PDF au format pandas Data Frame avec tabula-py
[Tensorflowjs_converter] Comment convertir le modèle Tensorflow au format Tensorflow.js
Convertissez les données avec la forme (nombre de données, 1) en (nombre de données,) avec numpy.
Quoi qu'il en soit, je veux vérifier facilement les données JSON
Convertir la voix en texte à l'aide du SDK Azure Speech
100 langage de traitement knock-20 (à l'aide de pandas): lecture de données JSON
Convertir STL en maillage Voxel à l'aide de Python VTK
Comment rechercher des données HTML à l'aide de Beautiful Soup
Convertir les packages binaires pour Windows au format roue
Convertir une chaîne au format de liste caractère par caractère avec python
Convertir en HSV
100 langage traitement knock-92 (utilisant Gensim): application aux données d'analogie
Comment récupérer des données de courses de chevaux à l'aide de pandas read_html
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Convertir les articles Qiita au format de publication Jekyll pour la sauvegarde
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Écrire des données dans KINTONE à l'aide du module de requêtes Python
Agréger les données d'événement dans un format un seul utilisateur sur une ligne à l'aide de pandas
Convertir le fichier de ressources de traduction (.po) au format XLIFF (.xlf)
[Livre technique] Introduction à l'analyse de données avec Python -1 Chapitre Introduction-
Convertir les données de maillage exportées de SpriteUV2 dans un format pouvant être importé par Spine