Salta para o conte√ļdo

Conjunto de dados DOTA com OBB

O DOTA é um conjunto de dados especializado, com ênfase na deteção de objectos em imagens aéreas. Originário da série de conjuntos de dados DOTA, oferece imagens anotadas que capturam um conjunto diversificado de cenas aéreas com Oriented Bounding Boxes (OBB).

Visual das classes DOTA

Características principais

  • Recolha de v√°rios sensores e plataformas, com tamanhos de imagem que variam entre 800 √ó 800 e 20 000 √ó 20 000 pix√©is.
  • Inclui mais de 1,7 milh√Ķes de caixas delimitadoras orientadas em 18 categorias.
  • Engloba a dete√ß√£o de objectos em v√°rias escalas.
  • As inst√Ęncias s√£o anotadas por especialistas utilizando quadril√°teros arbitr√°rios (8 d.o.f.), capturando objectos de diferentes escalas, orienta√ß√Ķes e formas.

Vers√Ķes do conjunto de dados

DOTA-v1.0

  • Cont√©m 15 categorias comuns.
  • Inclui 2.806 imagens com 188.282 inst√Ęncias.
  • Divide as propor√ß√Ķes: 1/2 para treino, 1/6 para valida√ß√£o e 1/3 para teste.

DOTA-v1.5

  • Incorpora as mesmas imagens do DOTA-v1.0.
  • As inst√Ęncias muito pequenas (menos de 10 pix√©is) tamb√©m s√£o anotadas.
  • Aditamento de uma nova categoria: "grua para contentores".
  • Um total de 403.318 ocorr√™ncias.
  • Lan√ßado para o Desafio DOAI 2019 sobre dete√ß√£o de objectos em imagens a√©reas.

DOTA-v2.0

  • Colec√ß√Ķes de Google Earth, Sat√©lite GF-2 e outras imagens a√©reas.
  • Cont√©m 18 categorias comuns.
  • Inclui 11.268 imagens com um n√ļmero impressionante de 1.793.658 inst√Ęncias.
  • Introduziu novas categorias: "aeroporto" e "heliporto".
  • Divide a imagem:
    • Treino: 1.830 imagens com 268.627 inst√Ęncias.
    • Valida: 593 imagens com 81.048 inst√Ęncias.
    • Test-dev: 2.792 imagens com 353.346 inst√Ęncias.
    • Teste-desafio: 6.053 imagens com 1.090.637 inst√Ęncias.

Estrutura do conjunto de dados

O DOTA apresenta um layout estruturado adaptado aos desafios de deteção de objectos OBB:

  • Imagens: Uma vasta cole√ß√£o de imagens a√©reas de alta resolu√ß√£o que captam diversos terrenos e estruturas.
  • Caixas delimitadoras orientadas: Anota√ß√Ķes na forma de rect√Ęngulos rodados que encapsulam objectos independentemente da sua orienta√ß√£o, ideais para capturar objectos como avi√Ķes, navios e edif√≠cios.

Aplica√ß√Ķes

O DOTA serve de refer√™ncia para treinar e avaliar modelos especificamente adaptados √† an√°lise de imagens a√©reas. Com a inclus√£o de anota√ß√Ķes OBB, proporciona um desafio √ļnico, permitindo o desenvolvimento de modelos especializados de dete√ß√£o de objectos que atendam √†s nuances das imagens a√©reas.

Conjunto de dados YAML

Normalmente, os conjuntos de dados incorporam um ficheiro YAML (Yet Another Markup Language) que detalha a configuração do conjunto de dados. Para DOTA v1 e DOTA v1.5, Ultralytics fornece DOTAv1.yaml e DOTAv1.5.yaml ficheiros. Para mais detalhes sobre estes ficheiros, bem como sobre o DOTA v2, consulta o repositório e a documentação oficial do DOTA.

DOTAv1.yaml

# Ultralytics YOLO ūüöÄ, AGPL-3.0 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: ../datasets/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

Divide as imagens do DOTA

Para treinar o conjunto de dados DOTA, dividimos as imagens DOTA originais de alta resolução em imagens com resolução de 1024x1024 de forma multiescala.

Divide as imagens

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

Utilização

Para treinar um modelo no conjunto de dados DOTA v1, podes utilizar os seguintes trechos de código. Consulta sempre a documentação do teu modelo para obteres uma lista completa dos argumentos disponíveis.

Aviso

Tem em aten√ß√£o que todas as imagens e anota√ß√Ķes associadas no conjunto de dados DOTAv1 podem ser utilizadas para fins acad√©micos, mas a utiliza√ß√£o comercial √© proibida. A tua compreens√£o e respeito pelos desejos dos criadores do conjunto de dados s√£o muito apreciados!

Exemplo de comboio

from ultralytics import YOLO

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

# Train the model on the DOTAv2 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=640)
# Train a new YOLOv8n-OBB model on the DOTAv2 dataset
yolo obb train data=DOTAv1.yaml model=yolov8n-obb.pt epochs=100 imgsz=640

Dados de amostra e anota√ß√Ķes

Um olhar sobre o conjunto de dados ilustra a sua profundidade:

Imagem de amostra do conjunto de dados

  • Exemplos de DOTA: Este instant√Ęneo sublinha a complexidade das cenas a√©reas e a import√Ęncia das anota√ß√Ķes Oriented Bounding Box, capturando os objectos na sua orienta√ß√£o natural.

A riqueza do conjunto de dados oferece informa√ß√Ķes valiosas sobre os desafios da dete√ß√£o de objectos exclusivos das imagens a√©reas.

Cita√ß√Ķes e agradecimentos

Para aqueles que utilizam o DOTA nos seus esforços, é pertinente citar os trabalhos de investigação 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}
}

Uma nota especial de gratidão à equipa responsável pelos conjuntos de dados DOTA pelo seu esforço louvável na curadoria deste conjunto de dados. Para uma compreensão exaustiva do conjunto de dados e das suas nuances, visita o sítio Web oficial do DOTA.

FAQ

O que é o conjunto de dados DOTA e porque é importante para a deteção de objectos em imagens aéreas?

O conjunto de dados DOTA √© um conjunto de dados especializado, centrado na dete√ß√£o de objectos em imagens a√©reas. Apresenta Oriented Bounding Boxes (OBB), fornecendo imagens anotadas de diversas cenas a√©reas. A diversidade do DOTA em termos de orienta√ß√£o, escala e forma dos objectos nas suas 1,7 milh√Ķes de anota√ß√Ķes e 18 categorias torna-o ideal para desenvolver e avaliar modelos adaptados √† an√°lise de imagens a√©reas, tais como os utilizados na vigil√Ęncia, monitoriza√ß√£o ambiental e gest√£o de cat√°strofes.

Como √© que o conjunto de dados DOTA lida com diferentes escalas e orienta√ß√Ķes nas imagens?

O DOTA utiliza Oriented Bounding Boxes (OBB) para anota√ß√£o, que s√£o representadas por rect√Ęngulos rodados que encapsulam objectos independentemente da sua orienta√ß√£o. Este m√©todo garante que os objectos, quer sejam pequenos ou em diferentes √Ęngulos, s√£o capturados com precis√£o. As imagens em v√°rias escalas do conjunto de dados, que variam de 800 √ó 800 a 20.000 √ó 20.000 pixels, permitem ainda a dete√ß√£o eficaz de objectos pequenos e grandes.

Como é que posso treinar um modelo utilizando o conjunto de dados DOTA?

Para treinar um modelo no conjunto de dados DOTA, podes utilizar o seguinte exemplo com Ultralytics YOLO :

Exemplo de comboio

from ultralytics import YOLO

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

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

Para mais detalhes sobre como dividir e pré-processar as imagens DOTA, consulta a secção dividir imagens DOTA.

Quais são as diferenças entre DOTA-v1.0, DOTA-v1.5 e DOTA-v2.0?

  • DOTA-v1.0: Inclui 15 categorias comuns em 2.806 imagens com 188.282 inst√Ęncias. O conjunto de dados est√° dividido em conjuntos de treino, valida√ß√£o e teste.

  • DOTA-v1.5: Desenvolve o DOTA-v1.0 anotando inst√Ęncias muito pequenas (menos de 10 pixels) e adicionando uma nova categoria, "guindaste de cont√™iner", totalizando 403.318 inst√Ęncias.

  • DOTA-v2.0: Expands further with annotations from Google Earth and GF-2 Satellite, featuring 11,268 images and 1,793,658 instances. It includes new categories like "airport" and "helipad."

Para uma compara√ß√£o pormenorizada e especifica√ß√Ķes adicionais, consulta a sec√ß√£o de vers√Ķes do conjunto de dados.

Como é que posso preparar imagens DOTA de alta resolução para formação?

As imagens do DOTA, que podem ser muito grandes, s√£o divididas em resolu√ß√Ķes mais pequenas para um treino mais f√°cil de gerir. Aqui tens um snippet de Python para dividir imagens:

Exemplo

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 processo permite-te melhorar a efici√™ncia do treino e o desempenho do modelo. Para obteres instru√ß√Ķes detalhadas, visita a sec√ß√£o de imagens DOTA divididas.



Criado em 2023-11-12, Atualizado em 2024-07-04
Autores: glenn-jocher (10), Laughing-q (1)

Coment√°rios