Перейти к содержанию

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

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

Визуализация классов DOTA

Основные характеристики

  • Коллекция с различных датчиков и платформ, размер изображений варьируется от 800 × 800 до 20 000 × 20 000 пикселей.
  • В игре более 1,7 млн ориентированных боксов в 18 категориях.
  • Охватывает многомасштабное обнаружение объектов.
  • Эксперты аннотируют объекты с помощью произвольного (8 d.o.f.) четырехугольника, захватывая объекты разного масштаба, ориентации и формы.

Версии наборов данных

DOTA-v1.0

  • Содержит 15 общих категорий.
  • Состоит из 2 806 изображений с 188 282 экземплярами.
  • Соотношение частей: 1/2 для обучения, 1/6 для проверки и 1/3 для тестирования.

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 экземплярами.
    • Тест-задача: 6 053 изображения с 1 090 637 экземплярами.

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

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

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

Приложения

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

Набор данных YAML

Обычно наборы данных содержат файл YAML (Yet Another Markup Language) с подробным описанием конфигурации набора данных. Для DOTA v1 и DOTA v1.5, Ultralytics предоставляет DOTAv1.yaml и DOTAv1.5.yaml файлы. За дополнительной информацией по ним, а также по DOTA v2 обращайтесь к официальному репозиторию и документации 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: ../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

Разделенные изображения DOTA

Для обучения набора данных DOTA мы разделили исходные изображения DOTA с высоким разрешением на изображения с разрешением 1024x1024 многомасштабным способом. Этот шаг предварительной обработки очень важен для эффективного обучения, так как исходные изображения могут быть очень большими.

Раздельные изображения

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

Внимание

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

Пример поезда

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

Образцы данных и аннотации

Один взгляд на набор данных показывает его глубину:

Образец изображения из набора данных

  • Примеры 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={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3117983}
}

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

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Что такое набор данных DOTA и почему он важен для обнаружения объектов на аэроснимках?

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

Как набор данных DOTA справляется с различными масштабами и ориентацией изображений?

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

Как обучить модель на наборе данных DOTA?

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

Пример поезда

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

Подробнее о том, как разделить и предварительно обработать изображения DOTA, читайте в разделе "Разделение изображений DOTA".

Чем отличаются DOTA-v1.0, DOTA-v1.5 и DOTA-v2.0?

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

Более детальное сравнение и дополнительные подробности можно найти в разделе "Версии наборов данных".

Как подготовить изображения DOTA с высоким разрешением для обучения?

Изображения 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".

📅 Создано 1 год назад ✏️ Обновлено 8 дней назад

Комментарии