YOLO Vision 2026:

Набор данных DOTA с OBB#

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

Классы объектов датасета 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 распространенных категорий.
  • Включает 2806 изображений со 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.
  • Представлены новые категории: «аэропорт» и «вертолетная площадка».
  • Разделение изображений:
    • Обучение: 1830 изображений с 268 627 экземплярами.
    • Проверка: 593 изображения с 81 048 экземплярами.
    • Test-dev: 2792 изображения с 353 346 экземплярами.
    • Test-challenge: 6053 изображения с 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.

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

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

Пример обучения
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)

Примеры данных и разметки#

Беглый взгляд на набор данных иллюстрирует его глубину:

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

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

Богатство датасета предлагает бесценную информацию о проблемах обнаружения объектов, присущих исключительно аэрофотоснимкам. Датасет 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.

FAQ#

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

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

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

    Пример обучения
    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)

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

    • DOTA-v1.0: включает 15 распространенных категорий на 2806 изображениях со 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.

Комментарии