Conjunto de datos DOTA con OBB

DOTA es un conjunto de datos especializado que se centra en la detección de objetos en imágenes aéreas. Proveniente de la serie de conjuntos de datos DOTA, ofrece imágenes anotadas que capturan una amplia variedad de escenas aéreas con cajas delimitadoras orientadas (OBB).

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

Características clave



Watch: How to Train Ultralytics YOLO26 on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
  • Recopilación proveniente de diversos sensores y plataformas, con tamaños de imagen que oscilan entre 800 × 800 y 20 000 × 20 000 píxeles.
  • Cuenta con más de 1,7 millones de cajas delimitadoras orientadas en 18 categorías.
  • Abarca la detección de objetos multiescala gracias a la amplia dispersión de tamaños de objeto por imagen.
  • Las instancias son anotadas por expertos utilizando cuadriláteros arbitrarios (8 grados de libertad), capturando objetos de diferentes escalas, orientaciones y formas.

Versiones del conjunto de datos

DOTA-v1.0

  • Contiene 15 categorías comunes.
  • Comprende 2806 imágenes con 188 282 instancias.
  • Proporciones de división: 1/2 para entrenamiento, 1/6 para validación y 1/3 para pruebas.

DOTA-v1.5

DOTA-v2.0

  • Colecciones de Google Earth, satélite GF-2 y otras imágenes aéreas.
  • Contiene 18 categorías comunes.
  • Comprende 11 268 imágenes con la impresionante cifra de 1 793 658 instancias.
  • Nuevas categorías introducidas: "airport" (aeropuerto) y "helipad" (helipuerto).
  • Divisiones de imágenes:
    • Entrenamiento: 1830 imágenes con 268 627 instancias.
    • Validación: 593 imágenes con 81 048 instancias.
    • Prueba-dev: 2792 imágenes con 353 346 instancias.
    • Prueba-desafío: 6053 imágenes con 1 090 637 instancias.

Estructura del conjunto de datos

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

  • Imágenes: Una vasta colección de imágenes aéreas de alta resolución que capturan terrenos y estructuras diversas.
  • Cajas delimitadoras orientadas (Oriented Bounding Boxes): Anotaciones en forma de rectángulos rotados que encierran 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 adaptados específicamente para el análisis de imágenes aéreas. Gracias a la inclusión de anotaciones OBB, ofrece un desafío único, facilitando el desarrollo de modelos especializados de detección de objetos que se ajustan a los matices de la imaginería aérea. El conjunto de datos es especialmente valioso para aplicaciones en teledetección, vigilancia y monitorización medioambiental.

YAML del conjunto de datos

Un archivo YAML (Yet Another Markup Language) del conjunto de datos especifica las rutas de imágenes/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 o algún otro derivado.

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
#     └── dota1 ← 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 imágenes DOTA

Las imágenes en bruto superan habitualmente los 10 000 píxeles por lado, por lo que es necesario realizar un particionado (tiling) antes de introducir los datos en YOLO. Utiliza el asistente de abajo para segmentar la imagen original en recortes solapados de 1024 × 1024 a múltiples escalas, manteniendo las anotaciones sincronizadas.

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

# Split train and val set, with labels.
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,
)
# Split test set, without labels.
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 el diseño estándar de YOLO (images/train, labels/train, etc.) para poder hacer referencia 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 buscas experimentar primero con un subconjunto más pequeño, considera usar el conjunto de datos DOTA8, que contiene solo 8 imágenes para pruebas rápidas.

Advertencia

Ten en cuenta que todas las imágenes y las anotaciones asociadas en el conjunto de datos DOTAv1 pueden utilizarse con fines académicos, pero su uso comercial está prohibido. ¡Apreciamos mucho tu comprensión y respeto hacia los deseos de los creadores del conjunto de datos!

Ejemplo de entrenamiento
from ultralytics import YOLO

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Muestra de datos y anotaciones

Echar un vistazo al conjunto de datos ilustra su profundidad:

Conjunto de datos DOTA con anotaciones de cajas delimitadoras orientadas

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

La riqueza del conjunto de datos ofrece una visión inestimable sobre los retos de detección de objetos exclusivos de la imaginería aérea. El conjunto de datos DOTA-v2.0 se ha vuelto especialmente popular para proyectos de teledetección y vigilancia aérea debido a sus completas anotaciones y diversas categorías de objetos.

Citas y reconocimientos

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

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={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3117983}
}

Una nota especial de gratitud al equipo detrás de los datasets DOTA por su encomiable esfuerzo en la curación de este dataset. Para una comprensión exhaustiva del dataset y sus matices, por favor visita el sitio web oficial de DOTA.

Preguntas frecuentes

¿Qué es el conjunto de datos DOTA y por qué es importante para la detección de objetos en imágenes aéreas?

El conjunto de datos DOTA es un conjunto de datos especializado centrado en la detección de objetos en imágenes aéreas. Presenta Cajas Delimitadoras Orientadas (OBB), proporcionando imágenes anotadas de diversas escenas aéreas. La diversidad de DOTA en cuanto a orientación, escala y forma de los objetos en sus 1,7 millones de anotaciones y 18 categorías lo hace 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 desastres.

¿Cómo maneja el conjunto de datos DOTA las diferentes escalas y orientaciones en las imágenes?

DOTA utiliza Cajas Delimitadoras Orientadas (OBB) para la anotación, las cuales se representan mediante rectángulos rotados que encierran a los objetos independientemente de su orientación. Este método garantiza que los objetos, ya sean pequeños o estén en diferentes á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, permiten además detectar eficazmente tanto objetos pequeños como grandes. Este enfoque es especialmente valioso para la imaginería aérea, donde los objetos aparecen en varios ángulos y escalas.

¿Cómo puedo entrenar un modelo usando el conjunto de datos DOTA?

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

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

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

¿Cuáles son las diferencias entre DOTA-v1.0, DOTA-v1.5 y DOTA-v2.0?

  • DOTA-v1.0: Incluye 15 categorías comunes en 2806 imágenes con 188 282 instancias. El conjunto de datos está dividido en conjuntos de entrenamiento, validación y prueba.
  • DOTA-v1.5: Se basa en DOTA-v1.0 añadiendo anotaciones para instancias muy pequeñas (menos de 10 píxeles) y una nueva categoría, "container crane", sumando un total de 403 318 instancias.
  • DOTA-v2.0: Se expande aún más con anotaciones de Google Earth y satélite GF-2, contando con 11 268 imágenes y 1 793 658 instancias. Incluye nuevas categorías como "airport" y "helipad".

Para una comparación detallada y especificaciones adicionales, consulta la sección de versiones del conjunto de datos.

¿Cómo puedo preparar imágenes DOTA de alta resolución para el entrenamiento?

Las imágenes DOTA, que pueden ser muy grandes, se dividen en resoluciones más pequeñas 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

# split train and val set, with labels.
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,
)
# split test set, without labels.
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 facilita una mejor eficiencia de entrenamiento y rendimiento del modelo. Para instrucciones detalladas, visita la sección de división de imágenes DOTA.

Comentarios