Ir al contenido

Conjunto de datos DOTA con OBB

DOTA se erige como un conjunto de datos especializado, que enfatiza la detección de objetos en imágenes aéreas. Originario de la serie de conjuntos de datos DOTA, ofrece imágenes anotadas que capturan una diversa gama de escenas aéreas con cuadros delimitadores orientados (OBB).

Visualización de clases DOTA

Características clave



Ver: Cómo entrenar Ultralytics YOLO11 en el conjunto de datos DOTA para cajas delimitadoras orientadas en Google Colab

  • Recopilación de varios sensores y plataformas, con tamaños de imagen que van desde 800 × 800 hasta 20.000 × 20.000 píxeles.
  • Más de 1.7 millones de Oriented Bounding Boxes en 18 categorías.
  • Abarca la detección de objetos multiescala.
  • Las instancias son anotadas por expertos utilizando cuadriláteros arbitrarios (8 g.l.), capturando objetos de diferentes escalas, orientaciones y formas.

Versiones del conjunto de datos

DOTA-v1.0

  • Contiene 15 categorías comunes.
  • Comprende 2,806 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 asombrosa cantidad de 1,793,658 instancias.
  • Nuevas categorías introducidas: "aeropuerto" y "helipuerto".
  • Divisiones de la imagen:
    • Entrenamiento: 1.830 imágenes con 268.627 instancias.
    • Validación: 593 imágenes con 81.048 instancias.
    • Test-dev: 2.792 imágenes con 353.346 instancias.
    • Test-challenge: 6.053 imágenes con 1.090.637 instancias.

Estructura del conjunto de datos

DOTA exhibe un diseño estructurado adaptado para los desafíos de detección de objetos OBB:

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

Aplicaciones

DOTA sirve como punto de referencia para entrenar y evaluar modelos diseñados específicamente para el análisis de imágenes aéreas. Con la inclusión de anotaciones OBB, proporciona un desafío único, permitiendo el desarrollo de modelos especializados de detección de objetos que se adaptan a los matices de las imágenes aéreas. El conjunto de datos es particularmente valioso para aplicaciones en teledetección, vigilancia y monitoreo ambiental.

YAML del conjunto de datos

Normalmente, los conjuntos de datos incorporan un archivo YAML (Yet Another Markup Language) que detalla la configuración del conjunto de datos. Para DOTA v1 y DOTA v1.5, Ultralytics proporciona DOTAv1.yaml y DOTAv1.5.yaml archivos. Para obtener detalles adicionales sobre estos, así como sobre DOTA v2, consulte el repositorio y la documentación oficiales de DOTA.

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 (2GB)

# 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

Para entrenar el conjunto de datos DOTA, dividimos las imágenes DOTA originales de alta resolución en imágenes con una resolución de 1024x1024 de forma multiescala. Este paso de preprocesamiento es crucial para un entrenamiento eficiente, ya que las imágenes originales pueden ser extremadamente grandes.

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,
)

Uso

Para entrenar un modelo en 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. Para aquellos que deseen experimentar primero con un subconjunto más pequeño, considera la posibilidad de utilizar el conjunto de datos DOTA8, que contiene sólo 8 imágenes para realizar pruebas rápidas.

Advertencia

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

Ejemplo de entrenamiento

from ultralytics import YOLO

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

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

Datos de muestra y anotaciones

Echar un vistazo al conjunto de datos ilustra su profundidad:

Imagen de muestra del conjunto de datos

  • Ejemplos DOTA: Esta instantánea subraya la complejidad de las escenas aéreas y la importancia de las anotaciones de Bounding Box orientadas, capturando objetos en su orientación natural.

La riqueza del conjunto de datos ofrece información valiosa sobre los desafíos de la detección de objetos exclusivos de las imágenes aéreas. El conjunto de datos DOTA-v2.0 se ha vuelto particularmente popular para proyectos de teledetección y vigilancia aérea debido a sus anotaciones completas y diversas categorías de objetos.

Citas y agradecimientos

Para aquellos que aprovechan DOTA en sus proyectos, es pertinente citar los artículos de investigación relevantes:

@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}
}

Un agradecimiento especial al equipo detrás de los conjuntos de datos DOTA por su encomiable esfuerzo en la curación de este conjunto de datos. Para una comprensión exhaustiva del conjunto de datos y sus matices, visite 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 la orientación, escala y forma de los objetos a través de sus 1.7 millones de anotaciones y 18 categorías lo hace ideal para desarrollar y evaluar modelos adaptados para el análisis de imágenes aéreas, como los utilizados en vigilancia, monitoreo ambiental y gestión de desastres.

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

DOTA utiliza Cajas Delimitadoras Orientadas (OBB) para la anotación, que están representadas por rectángulos rotados que encapsulan objetos independientemente de su orientación. Este método asegura 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 desde 800 × 800 hasta 20,000 × 20,000 píxeles, permiten además la detección efectiva de objetos tanto pequeños como grandes. Este enfoque es particularmente valioso para imágenes aéreas 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 en el conjunto de datos DOTA, puedes utilizar el siguiente ejemplo con Ultralytics YOLO:

Ejemplo de entrenamiento

from ultralytics import YOLO

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

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

Para obtener 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 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: Se basa en DOTA-v1.0 anotando instancias muy pequeñas (menos de 10 píxeles) y agregando una nueva categoría, "grúa de contenedores", con un total de 403.318 instancias.
  • DOTA-v2.0: Se expande aún más con anotaciones de Google Earth y GF-2 Satellite, con 11.268 imágenes y 1.793.658 instancias. Incluye nuevas categorías como "aeropuerto" y "helipuerto".

Para una comparación detallada y detalles adicionales, consulte 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í hay un fragmento de código de python para dividir 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 en el entrenamiento y el rendimiento del modelo. Para obtener instrucciones detalladas, visite la sección de división de imágenes DOTA.



📅 Creado hace 1 año ✏️ Actualizado hace 3 meses

Comentarios