Ultralytics YOLO27:

Датасет DOTA с OBB#

Датасет DOTA — это крупномасштабный бенчмарк для обнаружения объектов на аэрофотоснимках, выпущенный в трёх версиях (v1.0, v1.5, v2.0) и содержащий до 1,7 млн аннотаций ориентированных ограничивающих прямоугольников (OBB) в 18 категориях, полученных с различных аэрофотосенсоров и платформ.

Изучи официально размещённые на Ultralytics Platform датасеты DOTA v1.5 и DOTA v1.0, чтобы просмотреть их ориентированные аннотации, изучить статистику и клонировать их для обучения.

Классы объектов датасета DOTA для обнаружения на аэрофотоснимках

Ключевые особенности#



Watch: How to Train Ultralytics YOLO on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
  • Собран с различных сенсоров и платформ; размеры изображений составляют от 800 × 800 до 20 000 × 20 000 пикселей.
  • Содержит более 1,7 млн ориентированных ограничивающих прямоугольников в 18 категориях.
  • Поддерживает многоуровневое обнаружение объектов благодаря широкому диапазону размеров объектов на изображениях.
  • Эксперты аннотировали экземпляры произвольными четырёхугольниками (8 степеней свободы), отражающими объекты разных масштабов, ориентаций и форм.

Версии датасета#

DOTA-v1.0#

  • Содержит 15 распространённых категорий.
  • Включает 2 806 изображений с 188 282 экземплярами.
  • Соотношение частей: 1/2 для обучения (1 411 изображений), 1/6 для валидации (458 изображений) и 1/3 для тестирования (937 изображений).

DOTA-v1.5#

DOTA-v2.0#

  • Содержит изображения из Google Earth, со спутника GF-2 и другие аэрофотоснимки.
  • Содержит 18 распространённых категорий.
  • Включает 11 268 изображений с впечатляющими 1 793 658 экземплярами.
  • Добавлены новые категории: «аэропорт» и «вертолётная площадка».
  • Разбиение изображений:
    • Обучение: 1 830 изображений с 268 627 экземплярами.
    • Валидация: 593 изображения с 81 048 экземплярами.
    • Test-dev: 2 792 изображения с 353 346 экземплярами.
    • Test-challenge: 6 053 изображения с 1 090 637 экземплярами.

Структура датасета#

DOTA имеет структурированную компоновку, предназначенную для задач обнаружения объектов с помощью OBB:

  • Изображения: Обширная коллекция аэрофотоснимков высокого разрешения, отображающих разнообразные ландшафты и сооружения.
  • Ориентированные ограничивающие прямоугольники: Аннотации в виде повёрнутых прямоугольников, охватывающих объекты независимо от их ориентации; это идеально подходит для таких объектов, как самолёты, корабли и здания.

Применения#

DOTA служит бенчмарком для обучения и оценки моделей, специально предназначенных для анализа аэрофотоснимков. Благодаря аннотациям OBB датасет представляет уникальную задачу и позволяет разрабатывать специализированные модели обнаружения объектов, учитывающие особенности аэрофотоснимков. Датасет особенно ценен для задач дистанционного зондирования, наблюдения и экологического мониторинга.

YAML датасета#

Файл YAML датасета задаёт корневые каталоги изображений и меток, имена классов и другие важные метаданные. Ultralytics поддерживает официальные YAML-файлы для двух наиболее часто используемых выпусков:

Используй YAML, соответствующий загруженному тобой выпуску, или создай собственный YAML, если работаешь с DOTA-v2 или другим производным датасетом. Оба выпуска автоматически загружаются (2 ГБ) из ресурсов Ultralytics GitHub при первом запуске обучения.

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

Разбиение изображений DOTA#

Исходные изображения обычно превышают 10 000 пикселей по каждой стороне, поэтому перед передачей данных в YOLO их необходимо разбить на фрагменты. Используй приведённый ниже вспомогательный код, чтобы разделить исходные изображения на перекрывающиеся фрагменты размером 1024 × 1024 в нескольких масштабах, сохранив соответствие аннотаций.

Разбить изображения
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,
)
Совет

Организуй выходной каталог в стандартной структуре YOLO (images/train, labels/train и т. д.), чтобы напрямую указать его в YAML-файле датасета.

Использование#

Чтобы обучить модель на датасете DOTA v1, можно использовать следующие фрагменты кода. Всегда обращайся к документации своей модели за полным списком доступных аргументов. Если хочешь сначала поэкспериментировать с небольшой подвыборкой, попробуй датасет DOTA8, содержащий всего 8 изображений для быстрой проверки и доступный для просмотра на Ultralytics Platform.

Предупреждение

Обрати внимание, что все изображения и связанные с ними аннотации в датасете DOTAv1 можно использовать в академических целях, но коммерческое использование запрещено. Мы высоко ценим твоё понимание и уважение к пожеланиям создателей датасета!

Пример обучения
from ultralytics import YOLO

# Load a pretrained YOLO26n-OBB model
model = YOLO("yolo26n-obb.pt")

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

Примеры данных и аннотаций#

Беглый взгляд на датасет показывает его масштаб:

Датасет DOTA с аннотациями ориентированных ограничивающих прямоугольников

  • Примеры DOTA: Этот снимок подчёркивает сложность аэрофотосцен и важность аннотаций ориентированных ограничивающих прямоугольников, отображающих объекты в их естественной ориентации.

Богатство датасета даёт бесценные сведения о задачах обнаружения объектов, характерных именно для аэрофотоснимков. Датасет DOTA-v2.0 стал особенно популярен в проектах по дистанционному зондированию и воздушному наблюдению благодаря подробным аннотациям и разнообразию категорий объектов.

Цитирование и благодарности#

Если ты используешь DOTA в своей работе, укажи ссылки на соответствующие научные статьи:

Цитата
@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}
}

Отдельно благодарим команду, стоящую за датасетами DOTA, за её значительный вклад в создание этого датасета. Для полного понимания датасета и его особенностей посетите официальный сайт DOTA.

Часто задаваемые вопросы#

  • Датасет DOTA — это специализированный датасет, предназначенный для обнаружения объектов на аэрофотоснимках. Он содержит ориентированные ограничивающие прямоугольники (OBB) и аннотированные изображения различных аэрофотосцен. Разнообразие ориентаций, масштабов и форм объектов в 1,7 млн аннотаций DOTA и 18 категориях делает его идеальным для разработки и оценки моделей, предназначенных для анализа аэрофотоснимков, например моделей для наблюдения, экологического мониторинга и управления чрезвычайными ситуациями.

  • В DOTA для аннотаций используются ориентированные ограничивающие прямоугольники (OBB), представленные повёрнутыми прямоугольниками, охватывающими объекты независимо от их ориентации. Этот метод обеспечивает точное отображение объектов, включая маленькие объекты и объекты под разными углами. Многоуровневые изображения датасета размером от 800 × 800 до 20 000 × 20 000 пикселей также позволяют эффективно обнаруживать как маленькие, так и крупные объекты. Такой подход особенно ценен для аэрофотоснимков, где объекты могут иметь различные углы и масштабы.

  • Чтобы обучить модель на датасете DOTA, можно использовать следующий пример с Ultralytics YOLO:

    Пример обучения
    from ultralytics import YOLO
    
    # Load a pretrained YOLO26n-OBB model
    model = YOLO("yolo26n-obb.pt")
    
    # Train the model on the DOTAv1 dataset
    results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

    Подробнее о разбиении и предварительной обработке изображений DOTA см. в разделе о разбиении изображений DOTA.

    • DOTA-v1.0: Включает 15 распространённых категорий в 2 806 изображениях с 188 282 экземплярами. Датасет разделён на обучающую, валидационную и тестовую выборки.
    • DOTA-v1.5: Развивает DOTA-v1.0, добавляя аннотации очень маленьких экземпляров (менее 10 пикселей) и новую категорию «кран для контейнеров»; всего 403 318 экземпляров.
    • DOTA-v2.0: Ещё больше расширяет датасет за счёт аннотаций из Google Earth и со спутника GF-2; он содержит 11 268 изображений и 1 793 658 экземпляров. В него добавлены новые категории, например «аэропорт» и «вертолётная площадка».

    Подробное сравнение и дополнительные сведения см. в разделе о версиях датасета.

  • Изображения DOTA могут быть очень большими, поэтому для удобства обучения их разделяют на фрагменты меньшего размера. Вот фрагмент кода на Python для разбиения изображений:

    Пример
    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,
    )

    Этот процесс повышает эффективность обучения и качество моделей. Подробные инструкции см. в разделе о разбиении изображений DOTA.

Комментарии