Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

XML

XML es un formato de texto que anida etiquetas personalizadas en un árbol de datos estructurados. Explica su sintaxis, esquemas, anotaciones PASCAL VOC y comparación con JSON y YAML.

XML (Lenguaje de marcado extensible) es un formato de texto para datos estructurados en el que las etiquetas personalizadas se anidan unas dentro de otras para formar un árbol; por ejemplo, un elemento <size> que contiene <width> y <height>. El Consorcio World Wide Web publicó XML 1.0 como Recomendación en febrero de 1998, como subconjunto simplificado de SGML (Lenguaje de marcado generalizado estándar) para intercambiar documentos y datos en la web. A diferencia de HTML, XML no tiene etiquetas predefinidas: cada aplicación define sus propias etiquetas para expresar el significado de sus datos, por lo que muchos formatos de archivo se basan en XML, desde gráficos SVG y fuentes RSS hasta documentos de Microsoft Office. En el aprendizaje automático y la visión artificial, XML aparece sobre todo en archivos de anotaciones, archivos de modelos y sistemas sanitarios y empresariales que proporcionan datos de entrenamiento.

Sintaxis y validación de XML#

Un documento XML tiene exactamente un elemento raíz. Los elementos pueden contener texto, elementos secundarios y atributos escritos dentro de la etiqueta de apertura, como en <box label="car" xtl="10">; los espacios de nombres declarados con xmlns mantienen separadas las etiquetas de distintos vocabularios. Un documento que respeta las reglas sintácticas, con todas las etiquetas cerradas, los elementos bien anidados y los valores de los atributos entre comillas, está bien formado; los analizadores deben detenerse ante el primer error de formato. Un documento también es válido si se ajusta a un esquema, redactado como una definición de tipo de documento (DTD) o un esquema XML (XSD) que enumera los elementos permitidos, su orden y sus tipos de datos. Las expresiones XPath, como size/width, seleccionan nodos del árbol, y las hojas de estilo XSLT transforman un vocabulario XML en otro.

XML en visión artificial y aprendizaje automático#

El certamen PASCAL VOC, celebrado entre 2005 y 2012, convirtió XML en el formato clásico de anotación para la detección de objetos. Cada imagen tiene un archivo XML con su nombre y tamaño, y un elemento <object> por objeto, que contiene el nombre de la clase, los indicadores truncated y difficult, y un elemento <bndbox> cuyas esquinas en píxeles xmin, ymin, xmax y ymax definen la caja delimitadora. La herramienta de anotación LabelImg guarda este formato de forma predeterminada, así que muchos conjuntos de datos todavía lo incluyen y hay que convertirlos durante el preprocesamiento de datos. La exportación CVAT for images 1.1 de CVAT guarda todas las anotaciones de una tarea en un único archivo XML, con cajas definidas por atributos como xtl, ytl, xbr y ybr.

XML también describe modelos y registros. La representación intermedia de OpenVINO de Intel almacena las capas y conexiones de una red en un archivo .xml y sus pesos en un archivo .bin correspondiente; los detectores faciales en cascada de Haar preentrenados de OpenCV se distribuyen en formato XML. Los registros sanitarios HL7 FHIR, que los proyectos de IA clínica combinan con imágenes para el análisis de imágenes médicas, se pueden intercambiar en XML o JSON. Los archivos de Word y Excel son archivos ZIP con componentes XML que leen los sistemas de IA documental.

Este ejemplo analiza una anotación VOC con ElementTree, la biblioteca integrada de Python, y convierte cada caja al centro, ancho y alto normalizados del formato de etiquetas YOLO:

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}")

Imprime person 0.481 0.356 0.196 0.376 y horse 0.511 0.566 0.652 0.709: las mismas dos cajas expresadas como fracciones del tamaño de la imagen, listas para escribirse como líneas de etiquetas después de los índices de clase. El archivo de conjunto de datos VOC.yaml de Ultralytics realiza automáticamente esta conversión la primera vez que se usa: descarga VOC 2007 y 2012, analiza todas las anotaciones XML con ElementTree, omite los objetos marcados con difficult y escribe etiquetas YOLO .txt para 16 551 imágenes de entrenamiento y 4952 de validación.

XML frente a JSON y YAML#

  • JSON: Objetos, matrices, cadenas, números y valores booleanos, con una sintaxis más ligera que XML y una correspondencia directa con los diccionarios de Python y los objetos de JavaScript. Las API web y las anotaciones del conjunto de datos COCO lo utilizan.
  • YAML: utiliza la sangría en lugar de etiquetas de cierre, admite comentarios y, desde YAML 1.2, acepta cualquier documento JSON. Por eso es popular para editar a mano archivos de configuración, como los archivos de conjuntos de datos y modelos de YOLO.
  • XML: es más verboso e incluye esquemas, espacios de nombres, atributos y contenido mixto, es decir, texto con marcado en línea; por eso resulta adecuado para documentos y organismos de normalización que requieren una validación estricta.

Análisis de XML no confiable#

La función de entidades de XML permite definir texto reutilizable en un documento, y los atacantes se aprovechan de ello. En el ataque «Billion Laughs», unas diez definiciones de entidades anidadas, cada una de las cuales hace referencia a la anterior diez veces, expanden un archivo de unos cientos de bytes hasta convertirlo en gigabytes de texto. Un ataque de entidad externa XML (XXE) declara una entidad que apunta a un archivo local o una URL interna, de modo que un analizador vulnerable lee secretos en el documento o envía solicitudes desde dentro de la red. xml.etree.ElementTree de Python no expande entidades externas y genera un error de análisis al encontrar una; además, su analizador Expat resiste el ataque Billion Laughs desde la versión 2.4.1. El paquete defusedxml va más allá y genera EntitiesForbidden ante cualquier declaración de entidad, interna o externa.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático