[PYTHON] Konvertieren Sie Daten im XML-Format in Daten im TXT-Format (yolov3)

Vorwort

Wenn ich versuche, ein Objekt mit Tensorflow mithilfe von Yolo zu erkennen, liegen die Daten häufig im XML-Format vor und können nicht auf Yolo angewendet werden. Dann machen wir es uns selbst.

Code tatsächlich erstellt und verwendet

import xml.etree.ElementTree as ET
import sys , os
import glob

cate_list = ["Car","Pedestrian","Truck","Signal","Signs","Bicycle","Motorbike","Bus","SVehicle","Train"]

with open("voc_classes.txt","w") as f:
    f.write('\n'.join(cate_list))
    
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 convert(data_file,list_file):
    in_file = open(data_file)
    tree = ET.parse(in_file)
    root = tree.getroot()
    for obj in root.iter("item"):
        cate = obj.find("category").text
        cate = cate.lstrip("\n").lstrip("   ")
        cate = cate.rstrip("    ").rstrip("\n")
        category_id = class_encord(cate)
        xmlbox = obj.find("box2d")
        data = [int(float(xmlbox.find("x1").text)),int(float(xmlbox.find("x2").text)),int(float(xmlbox.find("y1").text)),int(float(xmlbox.find("y2").text))]
        list_file.write(" " + ",".join([str(a) for a in data]) + "," + str(category_id))

data_file_list = glob.glob("Annotations/*.xml")

list_file = open("2007_train.txt","w")
for data_file in data_file_list:
    jpg_file = "train_" + data_file.rstrip(".xml") + ".jpg "
    list_file.write(jpg_file)
    convert(data_file,list_file)
    list_file.write("\n")
list_file.close()

Es ist nicht verallgemeinert, daher ist es sehr schwer zu sehen (; ^ ω ^) Ich werde die Parameter auflisten, die durch Ändern verwendet werden können

Code-Fluss

yolo verwendet txt für das Objekt, also geben Sie es aus.

cate_list = ["Car","Pedestrian","Truck","Signal","Signs","Bicycle","Motorbike","Bus","SVehicle","Train"]

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

Eine Funktion zum Codieren des Objektnamens und der ID.

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]

Eine Funktion, die XML-Daten in eine txt-Datei konvertiert. Was Sie tun, ist so einfach wie das Lesen mit tml.etree.ElementTree, das Abrufen und Schreiben aller Daten.

def convert(data_file,list_file):
    in_file = open(data_file)
    tree = ET.parse(in_file)
    root = tree.getroot()
    for obj in root.iter("item"):
        cate = obj.find("category").text
        cate = cate.lstrip("\n").lstrip("   ")
        cate = cate.rstrip("    ").rstrip("\n")
        category_id = class_encord(cate)
        xmlbox = obj.find("box2d")
        data = [int(float(xmlbox.find("x1").text)),int(float(xmlbox.find("x2").text)),int(float(xmlbox.find("y1").text)),int(float(xmlbox.find("y2").text))]
        list_file.write(" " + ",".join([str(a) for a in data]) + "," + str(category_id))

Alles was übrig bleibt ist es zu tun.

data_file_list = glob.glob("Annotations/*.xml")

list_file = open("2007_train.txt","w")
for data_file in data_file_list:
    jpg_file = "train_" + data_file.rstrip(".xml") + ".jpg "
    list_file.write(jpg_file)
    convert(data_file,list_file)
    list_file.write("\n")
list_file.close()

Objekterkennung ist interessant (^ ▽ ^) Datenorganisation ist schwierig.

Recommended Posts

Konvertieren Sie Daten im XML-Format in Daten im TXT-Format (yolov3)
Konvertieren Sie Daten im JSON-Format in txt (mit yolo)
Konvertieren Sie die XML-Datei im Pascal-VOC-Format in die JSON-Datei im COCO-Format
Konvertierung von pdf nach txt 2 [pyocr]
So konvertieren Sie das Format einfach aus Markdown
Konvertieren Sie das Matplotlib-Diagramm in das EMF-Dateiformat
Konvertieren Sie Excel-Daten mit Python in 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 den Python-Datumstyp in das RFC822-Format
In der XML-Datenbank (BaseX) gespeichertes XML-Dokument in das CSV-Format konvertieren (mit Python)
Konvertieren Sie Daten mit Form (Anzahl der Daten, 1) in (Anzahl der Daten,) mit numpy.
Zum HSV konvertieren
Konvertieren Sie das PDF des mobilen Suica-Nutzungsverlaufs mit tabula-py in das Pandas-Datenrahmenformat
[Einführung in Python] Umgang mit Daten im JSON-Format
Konvertieren Sie Binärpakete für Windows in das Radformat
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Ich konvertiere AWS JSON-Daten wie folgt in CSV
So konvertieren Sie horizontal gehaltene Daten mit Pandas in vertikal gehaltene Daten
Konvertieren Sie Qiita-Artikel zur Sicherung in das Jekyll-Post-Format
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 Übersetzungsressourcendatei (.po) in das XLIFF-Format (.xlf).
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Konvertiere Kanji in Kana
Jupyter in py umwandeln
Konvertiere keras-yolo3 in onnx
Dikt in Array konvertieren
Konvertieren Sie json in Excel
Konvertieren Sie aus SpriteUV2 exportierte Netzdaten in ein Format, das von Spine importiert werden kann
Python / datetime> Implementierung zum Konvertieren des JJJJMMTT-Formats in JJJJ / MM / TT
Linux-Skript zum Konvertieren von Markdown-Dateien vom JupyterLab-Format in das Qiita-Format
Extrahieren Sie Klassifizierungsinformationen usw. aus Genbankdaten im XML-Format
Konvertieren Sie die vorliegenden Bilddaten (png) in ein .pbm-Bild
[Caffe] Konvertiert die mittlere Datei vom binären Proto-Format in das npy-Format
Konvertieren Sie Wetterdaten im GRIB2-Format, die mit pygrib nicht geöffnet werden können, in netCDF und visualisieren Sie sie