Ultralytics YOLO27: Trag dich in die Warteliste ein.
YOLO lizenzieren
Zurück zum Ultralytics-Glossar

XML

XML ist ein Textformat, das benutzerdefinierte Tags zu einer Baumstruktur verschachtelter Daten zusammenfügt. Behandelt werden Syntax, Schemas, PASCAL-VOC-Annotationen und der Vergleich mit JSON und YAML.

XML (Auszeichnungssprache) ist ein Textformat für strukturierte Daten, in dem benutzerdefinierte Tags ineinander verschachtelt werden und so einen Baum bilden. Ein Element wie <size> kann etwa <width> und <height> enthalten. Das World Wide Web Consortium veröffentlichte XML 1.0 im Februar 1998 als Empfehlung: eine vereinfachte Teilmenge von SGML (Standard Generalized Markup Language) zum Austausch von Dokumenten und Daten im Web. Anders als HTML verfügt XML über keine vordefinierten Tags. Jede Anwendung legt eigene Tags für die Bedeutung ihrer Daten fest. Deshalb basieren zahlreiche Dateiformate darauf, von SVG-Grafiken und RSS-Feeds bis hin zu Microsoft-Office-Dokumenten. Beim maschinellen Lernen und in der Computer Vision kommt XML vor allem in Annotations- und Modelldateien sowie in Systemen aus dem Gesundheitswesen und der Wirtschaft zum Einsatz, die Trainingsdaten bereitstellen.

XML-Syntax und -Validierung#

Ein XML-Dokument hat genau ein Wurzelelement. Elemente können Text, untergeordnete Elemente und Attribute enthalten, die wie in <box label="car" xtl="10"> im öffnenden Tag stehen. Mit xmlns deklarierte Namensräume halten Tags aus verschiedenen Vokabularen voneinander getrennt. Ein Dokument ist wohlgeformt, wenn es die Syntaxregeln erfüllt, alle Tags geschlossen und Elemente korrekt verschachtelt sind und Attributwerte in Anführungszeichen stehen. Parser müssen beim ersten Wohlgeformtheitsfehler abbrechen. Ein Dokument ist außerdem gültig, wenn es einem Schema entspricht. Dieses wird als Document Type Definition (DTD) oder XML Schema (XSD) geschrieben und führt die zulässigen Elemente, deren Reihenfolge und Datentypen auf. XPath-Ausdrücke wie size/width wählen Knoten aus dem Baum aus, und XSLT-Stylesheets wandeln ein XML-Vokabular in ein anderes um.

XML in Computer Vision und maschinellem Lernen#

Der Wettbewerb PASCAL VOC, der von 2005 bis 2012 stattfand, machte XML zum klassischen Annotationsformat für die Objekterkennung. Zu jedem Bild gehört eine XML-Datei mit Dateiname und Größe sowie einem Element <object> pro Objekt. Dieses enthält den Klassennamen, die Kennzeichnungen truncated und difficult sowie ein Element <bndbox>, dessen Pixelecken xmin, ymin, xmax und ymax die Bounding Box festlegen. Das Annotationstool LabelImg speichert standardmäßig in diesem Format. Deshalb wird es noch immer mit vielen Datensätzen ausgeliefert und muss bei der Datenvorverarbeitung umgewandelt werden. Der CVAT-Export für Bilder 1.1 aus CVAT speichert alle Annotationen einer Aufgabe in einer einzelnen XML-Datei. Die Boxen werden als Attribute wie xtl, ytl, xbr und ybr angegeben.

XML beschreibt auch Modelle und Datensätze. Die Zwischenrepräsentation OpenVINO von Intel speichert die Schichten und Verbindungen eines Netzes in einer .xml-Datei und dessen Gewichte in einer entsprechenden .bin-Datei. Die vortrainierten Haar-Kaskaden-Gesichtsdetektoren von OpenCV werden ebenfalls als XML verteilt. HL7-FHIR-Gesundheitsdaten, die Projekte der klinischen KI mit Bildern zur medizinischen Bildanalyse kombinieren, lassen sich als XML oder JSON austauschen. Word- und Excel-Dateien sind ZIP-Archive mit XML-Bestandteilen, die Dokumentenverarbeitungssysteme für KI auslesen.

Dieses Beispiel liest eine VOC-Annotation mit Pythons integrierter ElementTree-Bibliothek ein und wandelt jede Box in den normalisierten Mittelpunkt, die Breite und die Höhe des YOLO-Beschriftungsformats um:

import xml.etree.ElementTree as ET

# A PASCAL VOC annotation: one XML file per image, one <object> per box
voc = """
<annotation>
  <filename>000017.jpg</filename>
  <size><width>480</width><height>364</height><depth>3</depth></size>
  <object><name>person</name><difficult>0</difficult>
    <bndbox><xmin>185</xmin><ymin>62</ymin><xmax>279</xmax><ymax>199</ymax></bndbox></object>
  <object><name>horse</name><difficult>0</difficult>
    <bndbox><xmin>90</xmin><ymin>78</ymin><xmax>403</xmax><ymax>336</ymax></bndbox></object>
</annotation>
"""
root = ET.fromstring(voc)
w, h = int(root.find("size/width").text), int(root.find("size/height").text)

# Convert corner pixels to YOLO's normalized center x, center y, width, height
for obj in root.iter("object"):
    box = obj.find("bndbox")
    x1, y1, x2, y2 = (float(box.find(k).text) for k in ("xmin", "ymin", "xmax", "ymax"))
    cx, cy = ((x1 + x2) / 2 - 1) / w, ((y1 + y2) / 2 - 1) / h  # VOC pixel indices start at 1
    print(obj.find("name").text, f"{cx:.3f} {cy:.3f} {(x2 - x1) / w:.3f} {(y2 - y1) / h:.3f}")

Das Beispiel gibt person 0.481 0.356 0.196 0.376 und horse 0.511 0.566 0.652 0.709 aus: dieselben zwei Boxen als Anteile der Bildgröße, bereit, nach ihren Klassenindizes als Beschriftungszeilen gespeichert zu werden. Die Ultralytics-Datensatzdatei VOC.yaml führt diese Umwandlung bei der ersten Verwendung automatisch aus. Sie lädt VOC 2007 und 2012 herunter, liest jede XML-Annotation mit ElementTree ein, überspringt Objekte mit der Kennzeichnung difficult und schreibt YOLO-Beschriftungen im Format .txt für 16.551 Trainings- und 4.952 Validierungsbilder.

XML im Vergleich zu JSON und YAML#

  • JSON: Objekte, Arrays, Zeichenfolgen, Zahlen und boolesche Werte mit einer einfacheren Syntax als XML und einer direkten Zuordnung zu Python-Wörterbüchern und JavaScript-Objekten. Web-APIs und die COCO-Datensatzannotationen verwenden dieses Format.
  • YAML: Einrückungen statt schließender Tags, Unterstützung für Kommentare und eine Syntax, die seit YAML 1.2 jedes JSON-Dokument akzeptiert. Dadurch eignet sich YAML besonders für manuell bearbeitete Konfigurationen wie YOLO-Datensatz- und Modelldateien.
  • XML: Ausführlicher, mit Schemas, Namensräumen, Attributen und gemischten Inhalten, also Text mit eingebetteter Auszeichnung. Das eignet sich für Dokumente und Standardisierungsgremien, die eine strenge Validierung benötigen.

Nicht vertrauenswürdiges XML verarbeiten#

Mit der Entitätsfunktion von XML lassen sich wiederverwendbare Textbausteine in einem Dokument definieren, doch Angreifer nutzen diese Funktion aus. Beim „Billion-Laughs“-Angriff verweisen etwa zehn verschachtelte Entitätsdefinitionen jeweils zehnmal auf die vorherige Definition. Dadurch wird eine Datei mit wenigen Hundert Bytes auf mehrere Gigabyte Text aufgebläht. Bei einem XML-External-Entity-Angriff (XXE) wird eine Entität definiert, die auf eine lokale Datei oder eine interne URL verweist. Ein anfälliger Parser liest dann vertrauliche Daten in das Dokument ein oder sendet Anfragen innerhalb des Netzwerks. Pythons xml.etree.ElementTree löst keine externen Entitäten auf und gibt beim Auftreten einer solchen Entität einen Analysefehler aus. Ab Version 2.4.1 ist der Expat-Parser gegen Billion-Laughs-Angriffe geschützt. Das Paket defusedxml geht noch weiter und gibt bei jeder Entitätsdeklaration, ob intern oder extern, einen Fehler EntitiesForbidden aus.

Lösungen entdecken

Computer Vision im Sport

Computer Vision im Sport

Entdecke, wie Ultralytics YOLO die Sportbildanalyse voranbringt – mit Spieler- und Ballverfolgung, Leistungsanalysen, Erkenntnissen für das Coaching und der Rehabilitation von Athleten.
Mehr erfahren
Computer Vision für Luftbilder

Computer Vision für Luftbilder

Verwandle Drohnen- und Luftbilder mit Ultralytics YOLO in Echtzeit-Erkenntnisse für Landwirtschaft, Aquakultur, Naturschutz und Geodatenanalyse.
Mehr erfahren
Computer Vision in der Luft- und Raumfahrt

Computer Vision in der Luft- und Raumfahrt

Setze Computer Vision in der Luft- und Raumfahrt mit Ultralytics YOLO ein – für Flugzeuginspektionen, die Erkennung von Fremdkörpern auf Start- und Landebahnen, den Bodenbetrieb am Flughafen und die Erkennung von Verbundwerkstofffehlern.
Mehr erfahren
Computer Vision im Sicherheitsbereich

Computer Vision im Sicherheitsbereich

Schütze jeden Standort mit Ultralytics YOLO-Modellen. Vision-KI ermöglicht die Überwachung von Grundstücksgrenzen, die Erkennung von Bedrohungen, die Kennzeichenerkennung und die Sicherheit am Arbeitsplatz.
Mehr erfahren
Computer Vision in der Robotik

Computer Vision in der Robotik

Mach Maschinen mit Ultralytics YOLO-Modellen leistungsfähiger. Vision-KI in der Robotik ermöglicht autonome Navigation, Wahrnehmung, Objektverfolgung und Steuerung in Echtzeit.
Mehr erfahren
Bildverarbeitung in der Logistik

Bildverarbeitung in der Logistik

Optimiere die Logistik mit Ultralytics YOLO-Modellen. Vision AI ermöglicht die Paketprüfung, Sortierung und Fahrzeugverfolgung sowie die Sicherheitsüberwachung von Lagerhäusern in Echtzeit.
Mehr erfahren
Bildverarbeitung im Einzelhandel

Bildverarbeitung im Einzelhandel

Gestalte den Einzelhandel mit Ultralytics YOLO-Modellen neu. Vision AI ermöglicht Bestandsverfolgung, Regalüberwachung und Warteschlangenmanagement und liefert bessere Einblicke in das Kundenverhalten.
Mehr erfahren
Bildverarbeitung im Gesundheitswesen

Bildverarbeitung im Gesundheitswesen

Entwickle Lösungen für das Gesundheitswesen mit Ultralytics YOLO-Modellen. Vision AI ermöglicht im Gesundheitswesen schnellere medizinische Bildgebung, bessere Diagnostik und die Überwachung von Patienten.
Mehr erfahren
Computer Vision in der Fertigung

Computer Vision in der Fertigung

Optimiere die Fertigung mit Ultralytics-YOLO-Modellen. Vision AI ermöglicht Qualitätskontrolle, Fehlererkennung, die Überprüfung der Einhaltung von Vorgaben zu persönlicher Schutzausrüstung und die Automatisierung von Montagelinien.
Mehr erfahren
Computer Vision in der Automobilbranche

Computer Vision in der Automobilbranche

Setze Computer Vision in der Automobilbranche mit Ultralytics-YOLO-Modellen ein. Vision AI verbessert die Verkehrssicherheit, Fahrerassistenz und Fahrzeugautomatisierung – für intelligentere Straßen.
Mehr erfahren
Computer Vision in der Landwirtschaft

Computer Vision in der Landwirtschaft

Setze mit Ultralytics YOLO-Modellen KI für Bildverarbeitung in der intelligenten Landwirtschaft ein. Ermögliche die Überwachung von Nutzpflanzen, die Verfolgung von Nutztieren und Präzisionslandwirtschaft für höhere und nachhaltigere Erträge.
Mehr erfahren

Lass uns gemeinsam die Zukunft der KI gestalten!

Starte deine Reise in die Zukunft des maschinellen Lernens