[PYTHON] Konvertieren Sie Daten im JSON-Format in txt (mit yolo)

Ich möchte Daten im JSON-Format in Daten im TXT-Format konvertieren, um Yolo zu verwenden.

Was ich getan habe

Der Code zum Konvertieren von json in txt war im Internet, aber ich wusste nicht, wie ich ihn verwenden sollte, also habe ich beschlossen, ihn selbst zu erstellen. (Ich habe es vielleicht gesehen, weil ich einen Teil verschiedener Codes ausgeschnitten und eingefügt habe.)

Code unten

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()

Bitte ändern Sie entsprechend der Umgebung, in der die oben genannten Variablen verwendet werden. Sie werden entsprechend der Größe von input_shape konvertiert.

Sollte funktionieren: heat_smile: (Ich habe damit gearbeitet)

Recommended Posts

Konvertieren Sie Daten im JSON-Format in txt (mit yolo)
Konvertieren Sie Daten im XML-Format in Daten im TXT-Format (yolov3)
Konvertieren Sie Excel-Daten mit Python in JSON
[Einführung in Python] Umgang mit Daten im JSON-Format
Ich konvertiere AWS JSON-Daten wie folgt in CSV
Konvertieren / Zurückgeben von Klassenobjekten in das JSON-Format in Python
So konvertieren Sie Json-Dateien in das CSV- oder EXCEL-Format
Konvertieren Sie die XML-Datei im Pascal-VOC-Format in die JSON-Datei im COCO-Format
Konvertieren Sie das Tweepy Status-Objekt in JSON
Exportieren Sie DB-Daten im JSON-Format
Analysieren Sie Daten im CSV-Format mit SQL
Konvertierung von pdf nach txt 2 [pyocr]
Führen Sie Daten im JSON-Format mit Ansible zusammen
Konvertieren Sie das Matplotlib-Diagramm in das EMF-Dateiformat
In der XML-Datenbank (BaseX) gespeichertes XML-Dokument in das CSV-Format konvertieren (mit Python)
Konvertieren (komprimieren) formatierte JSON-Zeichenfolge in einzeiliges JSON
[MNIST] Konvertiert Daten für Keras in PNG
Konvertieren Sie Rasterdaten mithilfe von Pandas in zeilenhaltige (?) Daten
Konvertieren Sie an E-Mails angehängte PDF-Dateien in das Textformat
Konvertieren Sie ein Array (struct) mit golang in json
Konvertieren Sie CSV- und TsV-Daten in eine Matrix mit Python als Beispiel für MovieLens
Konvertieren Sie das PDF des mobilen Suica-Nutzungsverlaufs mit tabula-py in das Pandas-Datenrahmenformat
[Tensorflowjs_converter] So konvertieren Sie das Tensorflow-Modell in das Format Tensorflow.js
Konvertieren Sie Daten mit Form (Anzahl der Daten, 1) in (Anzahl der Daten,) mit numpy.
Wie auch immer, ich möchte JSON-Daten einfach überprüfen
Konvertieren Sie Sprache mit dem Azure Speech SDK in Text
100 Sprachverarbeitung Knock-20 (unter Verwendung von Pandas): Lesen von JSON-Daten
Konvertieren Sie STL mit Python VTK in ein Voxel-Netz
So suchen Sie HTML-Daten mit Beautiful Soup
Konvertieren Sie Binärpakete für Windows in das Radformat
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Zum HSV konvertieren
100 Sprachverarbeitung Knock-92 (mit Gensim): Anwendung auf Analogiedaten
Wie man Pferderenndaten mit pandas read_html kratzt
So konvertieren Sie horizontal gehaltene Daten mit Pandas in vertikal gehaltene Daten
Konvertieren Sie Qiita-Artikel zur Sicherung in das Jekyll-Post-Format
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
Schreiben Sie Daten mit dem Python-Anforderungsmodul in KINTONE
Aggregieren Sie Ereignisdaten mithilfe von Pandas in einem einzeiligen Ein-Benutzer-Format
Konvertieren Sie die Übersetzungsressourcendatei (.po) in das XLIFF-Format (.xlf).
[Technisches Buch] Einführung in die Datenanalyse mit Python -1 Kapitel Einführung-
Konvertieren Sie aus SpriteUV2 exportierte Netzdaten in ein Format, das von Spine importiert werden kann