Ultralytics YOLO27:

Conjunto de datos DOTA con OBB#

El conjunto de datos DOTA es un benchmark a gran escala para la detección de objetos en imágenes aéreas. Se publicó en tres versiones (v1.0, v1.5 y v2.0) e incluye hasta 1,7 millones de anotaciones de cajas delimitadoras orientadas (OBB) en 18 categorías, capturadas con diversos sensores y plataformas aéreas.

Explora los conjuntos de datos oficiales DOTA v1.5 y DOTA v1.0, alojados en Ultralytics Platform, para previsualizar sus anotaciones orientadas, consultar estadísticas y clonarlos para entrenar.

Clases de objetos del conjunto de datos DOTA para la detección aérea

Características principales#



Ver: Cómo entrenar Ultralytics YOLO con el conjunto de datos DOTA para detectar cajas delimitadoras orientadas en Google Colab
  • Recopilación realizada con distintos sensores y plataformas, con tamaños de imagen de entre 800 × 800 y 20 000 × 20 000 píxeles.
  • Incluye más de 1,7 millones de cajas delimitadoras orientadas en 18 categorías.
  • Permite la detección de objetos a varias escalas gracias a la amplia variedad de tamaños de objetos en cada imagen.
  • Expertos anotan las instancias mediante cuadriláteros arbitrarios (8 grados de libertad), que representan objetos de distintas escalas, orientaciones y formas.

Versiones del conjunto de datos#

DOTA-v1.0#

  • Contiene 15 categorías habituales.
  • Consta de 2806 imágenes con 188 282 instancias.
  • Proporciones de la división: 1/2 para entrenamiento (1411 imágenes), 1/6 para validación (458 imágenes) y 1/3 para pruebas (937 imágenes).

DOTA-v1.5#

DOTA-v2.0#

  • Recopilaciones de Google Earth, el satélite GF-2 y otras imágenes aéreas.
  • Contiene 18 categorías habituales.
  • Consta de 11 268 imágenes y la impresionante cifra de 1 793 658 instancias.
  • Se introducen dos categorías nuevas: «aeropuerto» y «helipuerto».
  • Divisiones de las imágenes:
    • Entrenamiento: 1.830 imágenes con 268.627 instancias.
    • Validación: 593 imágenes con 81.048 instancias.
    • Prueba-dev: 2.792 imágenes con 353.346 instancias.
    • Prueba-desafío: 6.053 imágenes con 1.090.637 instancias.

Estructura del conjunto de datos#

DOTA presenta una estructura diseñada para los desafíos de detección de objetos con OBB:

  • Imágenes: Una amplia colección de imágenes aéreas de alta resolución que capturan terrenos y estructuras variados.
  • Cajas delimitadoras orientadas: Anotaciones en forma de rectángulos girados que delimitan objetos independientemente de su orientación, ideales para capturar objetos como aviones, barcos y edificios.

Aplicaciones#

DOTA sirve como referencia para entrenar y evaluar modelos diseñados específicamente para el análisis de imágenes aéreas. Al incluir anotaciones OBB, plantea un desafío único que permite desarrollar modelos especializados de detección de objetos adaptados a las particularidades de las imágenes aéreas. El conjunto de datos resulta especialmente valioso para aplicaciones de teledetección, vigilancia y monitorización medioambiental.

YAML del conjunto de datos#

Un archivo YAML del conjunto de datos especifica las rutas de las imágenes y las etiquetas, los nombres de las clases y otros metadatos importantes. Ultralytics mantiene archivos YAML oficiales para las dos versiones más utilizadas:

Usa el YAML que corresponda a la versión que has descargado, o crea un YAML personalizado si trabajas con DOTA-v2 u otra variante. Ambas versiones se descargan automáticamente (2 GB) desde los recursos de Ultralytics GitHub la primera vez que entrenas.

DOTAv1.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DOTA 1.0 dataset https://captain-whu.github.io/DOTA/index.html for object detection in aerial images by Wuhan University
# Documentation: https://docs.ultralytics.com/datasets/obb/dota-v2
# Example usage: yolo train model=yolov8n-obb.pt data=DOTAv1.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── DOTAv1 ← downloads here (2 GB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: DOTAv1 # dataset root dir
train: images/train # train images (relative to 'path') 1411 images
val: images/val # val images (relative to 'path') 458 images
test: images/test # test images (optional) 937 images

# Classes for DOTA 1.0
names:
  0: plane
  1: ship
  2: storage tank
  3: baseball diamond
  4: tennis court
  5: basketball court
  6: ground track field
  7: harbor
  8: bridge
  9: large vehicle
  10: small vehicle
  11: helicopter
  12: roundabout
  13: soccer ball field
  14: swimming pool

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/DOTAv1.zip

Dividir las imágenes de DOTA#

Las imágenes originales suelen superar los 10.000 píxeles por lado, por lo que se recomienda dividirlas en fragmentos antes de introducir los datos en YOLO. Usa la función auxiliar siguiente para dividir las imágenes originales en recortes solapados de 1024 × 1024 a varias escalas, manteniendo las anotaciones sincronizadas.

Dividir imágenes
from ultralytics.data.split_dota import split_test, split_trainval

# Divide los conjuntos de entrenamiento y validación, con etiquetas.
split_trainval(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)
# Divide el conjunto de prueba, sin etiquetas.
split_test(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)
Consejo

Mantén el directorio de salida organizado con la estructura estándar de YOLO (images/train, labels/train, etc.) para poder hacer referencia a él directamente desde el YAML del conjunto de datos.

Uso#

Para entrenar un modelo con el conjunto de datos DOTA v1, puedes utilizar los siguientes fragmentos de código. Consulta siempre la documentación de tu modelo para obtener una lista completa de los argumentos disponibles. Si quieres experimentar primero con un subconjunto más pequeño, prueba el conjunto de datos DOTA8, que solo contiene 8 imágenes para hacer pruebas rápidas y se puede explorar en Ultralytics Platform.

Advertencia

Ten en cuenta que todas las imágenes y anotaciones asociadas del conjunto de datos DOTAv1 pueden utilizarse con fines académicos, pero está prohibido su uso comercial. ¡Agradecemos mucho que comprendas y respetes los deseos de los creadores del conjunto de datos!

Ejemplo de entrenamiento
from ultralytics import YOLO

# Cargar un modelo YOLO26n-OBB preentrenado
model = YOLO("yolo26n-obb.pt")

# Entrenar el modelo con el conjunto de datos DOTAv1
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Datos de ejemplo y anotaciones#

Un vistazo al conjunto de datos permite apreciar su profundidad:

Conjunto de datos DOTA con anotaciones de cajas delimitadoras orientadas

  • Ejemplos de DOTA: Esta instantánea pone de relieve la complejidad de las escenas aéreas y la importancia de las anotaciones de cajas delimitadoras orientadas, que capturan los objetos en su orientación natural.

La riqueza del conjunto de datos ofrece información muy valiosa sobre los desafíos de detección de objetos propios de las imágenes aéreas. El conjunto de datos DOTA-v2.0 se ha hecho especialmente popular en proyectos de teledetección y vigilancia aérea gracias a sus anotaciones exhaustivas y a la diversidad de categorías de objetos.

Citas y agradecimientos#

Si utilizas DOTA en tu trabajo, cita los artículos de investigación pertinentes:

Cita
@article{9560031,
  author={Ding, Jian and Xue, Nan and Xia, Gui-Song and Bai, Xiang and Yang, Wen and Yang, Michael and Belongie, Serge and Luo, Jiebo and Datcu, Mihai and Pelillo, Marcello and Zhang, Liangpei},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  title={Object Detection in Aerial Images: A Large-Scale Benchmark and Challenges},
  year={2022},
  volume={44},
  number={11},
  pages={7778-7796},
  doi={10.1109/TPAMI.2021.3117983}
}

Nuestro agradecimiento especial al equipo responsable de los conjuntos de datos DOTA por su encomiable labor de recopilación. Para conocer a fondo el conjunto de datos y sus particularidades, visita el sitio web oficial de DOTA.

Preguntas frecuentes#

  • El conjunto de datos DOTA está especializado en la detección de objetos en imágenes aéreas. Incluye cajas delimitadoras orientadas (OBB) y ofrece imágenes anotadas de diversas escenas aéreas. La diversidad de orientaciones, escalas y formas de los objetos de DOTA, con sus 1,7 M de anotaciones y 18 categorías, lo convierte en una opción ideal para desarrollar y evaluar modelos adaptados al análisis de imágenes aéreas, como los utilizados en vigilancia, monitorización medioambiental y gestión de catástrofes.

  • DOTA utiliza cajas delimitadoras orientadas (OBB) para las anotaciones, representadas por rectángulos girados que delimitan los objetos independientemente de su orientación. Este método garantiza que los objetos, ya sean pequeños o estén en distintos ángulos, se capturen con precisión. Las imágenes multiescala del conjunto de datos, que van de 800 × 800 a 20.000 × 20.000 píxeles, también permiten detectar eficazmente objetos tanto pequeños como grandes. Este enfoque resulta especialmente valioso para las imágenes aéreas, donde los objetos aparecen en distintos ángulos y escalas.

  • Para entrenar un modelo con el conjunto de datos DOTA, puedes usar el siguiente ejemplo con Ultralytics YOLO:

    Ejemplo de entrenamiento
    from ultralytics import YOLO
    
    # Cargar un modelo YOLO26n-OBB preentrenado
    model = YOLO("yolo26n-obb.pt")
    
    # Entrenar el modelo con el conjunto de datos DOTAv1
    results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

    Para obtener más información sobre cómo dividir y preprocesar las imágenes de DOTA, consulta la sección sobre cómo dividir las imágenes de DOTA.

    • DOTA-v1.0: Incluye 15 categorías habituales distribuidas en 2.806 imágenes con 188.282 instancias. El conjunto de datos se divide en conjuntos de entrenamiento, validación y prueba.
    • DOTA-v1.5: Amplía DOTA-v1.0 al anotar instancias muy pequeñas (de menos de 10 píxeles) y añadir una nueva categoría, «grúa portacontenedores», hasta alcanzar un total de 403.318 instancias.
    • DOTA-v2.0: Se amplía aún más con anotaciones de Google Earth y del satélite GF-2, e incluye 11.268 imágenes y 1.793.658 instancias. Añade categorías como «aeropuerto» y «helipuerto».

    Para una comparación detallada y más información, consulta la sección sobre las versiones del conjunto de datos.

  • Las imágenes de DOTA, que pueden ser muy grandes, se dividen en otras de menor resolución para facilitar el entrenamiento. Aquí tienes un fragmento de Python para dividir las imágenes:

    Ejemplo
    from ultralytics.data.split_dota import split_test, split_trainval
    
    # Divide los conjuntos de entrenamiento y validación, con etiquetas.
    split_trainval(
        data_root="path/to/DOTAv1.0/",
        save_dir="path/to/DOTAv1.0-split/",
        rates=[0.5, 1.0, 1.5],  # multiscale
        gap=500,
    )
    # Divide el conjunto de prueba, sin etiquetas.
    split_test(
        data_root="path/to/DOTAv1.0/",
        save_dir="path/to/DOTAv1.0-split/",
        rates=[0.5, 1.0, 1.5],  # multiscale
        gap=500,
    )

    Este proceso mejora la eficiencia del entrenamiento y el rendimiento del modelo. Para obtener instrucciones detalladas, visita la sección sobre cómo dividir las imágenes de DOTA.

Comentarios