Ultralytics YOLO27:

Датасет DOTA с OBB#

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

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

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

Основные особенности#



Смотри: Как обучить Ultralytics YOLO на датасете DOTA для обнаружения ориентированных ограничивающих рамок в 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 экземплярами.
    • Тестовая выборка для разработки: 2 792 изображения с 353 346 экземплярами.
    • Тестовая выборка для испытаний: 6 053 изображения с 1 090 637 экземплярами.

Структура набора данных#

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

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

Применение#

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

Файл YAML набора данных#

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

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

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_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(
    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

# Загрузи предварительно обученную модель YOLO26n-OBB
model = YOLO("yolo26n-obb.pt")

# Обучи модель на датасете DOTAv1
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 млн аннотаций и 18 категориях делает DOTA идеальным набором данных для разработки и оценки моделей анализа аэрофотоснимков, например для наблюдения, экологического мониторинга и ликвидации последствий стихийных бедствий.

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

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

    Пример обучения
    from ultralytics import YOLO
    
    # Загрузи предварительно обученную модель YOLO26n-OBB
    model = YOLO("yolo26n-obb.pt")
    
    # Обучи модель на датасете DOTAv1
    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_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(
        data_root="path/to/DOTAv1.0/",
        save_dir="path/to/DOTAv1.0-split/",
        rates=[0.5, 1.0, 1.5],  # multiscale
        gap=500,
    )

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

Комментарии