Обзор наборов данных ориентированных ограничивающих рамок (OBB)
Обучение точной модели обнаружения объектов с ориентированными ограничивающими рамками (OBB) требует тщательной подготовки набора данных. В этом руководстве объясняются различные форматы наборов данных OBB, совместимые с моделями Ultralytics YOLO, предлагая понимание их структуры, применения и методов преобразования форматов.
Поддерживаемые форматы OBB-датасетов
Формат YOLO OBB
Формат YOLO OBB определяет ограничивающие рамки по четырем угловым точкам с координатами, нормализованными между 0 и 1. Он имеет следующий формат:
class_index x1 y1 x2 y2 x3 y3 x4 y4
Внутри, YOLO обрабатывает потери и выходы в xywhr
формат, который представляет собой ограничивающего прямоугольникацентральную точку (xy), ширину, высоту и угол поворота.
Пример *.txt
файл меток для изображения выше, который содержит объект класса 0
в формате OBB, может выглядеть так:
0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758
Формат YAML набора данных
Платформа Ultralytics использует формат YAML-файлов для определения набора данных и конфигурации модели для обучения моделей OBB. Вот пример формата YAML, используемого для определения набора данных OBB:
ultralytics/cfg/datasets/dota8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# DOTA8 dataset 8 images from split DOTAv1 dataset by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── dota8 ← downloads here (1MB)
# 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: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 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/dota8.zip
Использование
Чтобы обучить модель, используя эти форматы OBB:
Пример
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-v1: первая версия набора данных DOTA, предоставляющая полный набор аэрофотоснимков с ориентированными ограничивающими рамками для обнаружения объектов.
- DOTA-v1.5: промежуточная версия набора данных DOTA, предлагающая дополнительные аннотации и улучшения по сравнению с DOTA-v1 для расширенных задач обнаружения объектов.
- DOTA-v2: DOTA (масштабный набор данных для обнаружения объектов на аэрофотоснимках) версии 2, в которой особое внимание уделяется обнаружению с воздуха и содержатся ориентированные ограничивающие рамки с 1,7 миллионами экземпляров и 11 268 изображениями.
- DOTA8: Небольшой набор из 8 изображений из полного набора данных DOTA, подходящий для тестирования рабочих процессов и проверок непрерывной интеграции (CI) обучения OBB в
ultralytics
репозитории.
Включение вашего собственного набора данных OBB
Тем, кто хочет добавить свои собственные наборы данных с ориентированными ограничивающими рамками, необходимо обеспечить совместимость с «форматом YOLO OBB», упомянутым выше. Преобразуйте свои аннотации в этот требуемый формат и укажите пути, классы и имена классов в соответствующем файле конфигурации YAML.
Преобразование форматов меток
Формат набора данных DOTA в формат YOLO OBB
Перенос меток из формата набора данных DOTA в формат YOLO OBB можно выполнить с помощью этого скрипта:
Пример
from ultralytics.data.converter import convert_dota_to_yolo_obb
convert_dota_to_yolo_obb("path/to/DOTA")
Этот механизм преобразования играет важную роль для наборов данных в формате DOTA, обеспечивая соответствие формату Ultralytics YOLO OBB.
Крайне важно проверить совместимость набора данных с вашей моделью и соблюдать необходимые соглашения о формате. Правильно структурированные наборы данных имеют решающее значение для обучения эффективных моделей обнаружения объектов с ориентированными ограничивающими рамками.
Часто задаваемые вопросы
Что такое ориентированные ограничивающие рамки (OBB) и как они используются в моделях Ultralytics YOLO?
Ориентированные ограничивающие рамки (OBB) — это тип аннотации ограничивающих рамок, в котором рамку можно поворачивать, чтобы она более точно совпадала с обнаруживаемым объектом, а не просто выравнивалась по осям. Это особенно полезно для аэрофото- или спутниковых снимков, где объекты могут быть не выровнены по осям изображения. В моделях Ultralytics YOLO OBB представлены четырьмя угловыми точками в формате YOLO OBB. Это обеспечивает более точное обнаружение объектов, поскольку ограничивающие рамки могут поворачиваться, чтобы лучше соответствовать объектам.
Как преобразовать существующие метки набора данных DOTA в формат YOLO OBB для использования с Ultralytics YOLO11?
Вы можете преобразовать метки набора данных DOTA в формат YOLO OBB, используя convert_dota_to_yolo_obb
функция из Ultralytics. Это преобразование обеспечивает совместимость с моделями Ultralytics YOLO, позволяя использовать возможности OBB для расширенного обнаружения объектов. Вот краткий пример:
from ultralytics.data.converter import convert_dota_to_yolo_obb
convert_dota_to_yolo_obb("path/to/DOTA")
Этот скрипт переформатирует ваши аннотации DOTA в формат, совместимый с YOLO.
Как обучить модель YOLO11 с ориентированными ограничивающими рамками (OBB) на моем наборе данных?
Обучение модели YOLO11 с OBB включает в себя обеспечение того, чтобы ваш набор данных был в формате YOLO OBB, а затем использование Ultralytics API для обучения модели. Вот пример как в Python, так и в CLI:
Пример
from ultralytics import YOLO
# Create a new YOLO11n-OBB model from scratch
model = YOLO("yolo11n-obb.yaml")
# Train the model on the custom dataset
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)
# Train a new YOLO11n-OBB model on the custom dataset
yolo obb train data=your_dataset.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640
Это гарантирует, что ваша модель использует подробные аннотации OBB для повышения точности обнаружения.
Какие наборы данных в настоящее время поддерживаются для обучения OBB в моделях Ultralytics YOLO?
В настоящее время Ultralytics поддерживает следующие наборы данных для обучения OBB:
- DOTA-v1: первая версия набора данных DOTA, предоставляющая полный набор аэрофотоснимков с ориентированными ограничивающими рамками для обнаружения объектов.
- DOTA-v1.5: промежуточная версия набора данных DOTA, предлагающая дополнительные аннотации и улучшения по сравнению с DOTA-v1 для расширенных задач обнаружения объектов.
- DOTA-v2: этот набор данных включает 1,7 миллиона экземпляров с ориентированными ограничивающими рамками и 11 268 изображений, в основном ориентированных на обнаружение объектов с воздуха.
- DOTA8: Меньшая подвыборка из 8 изображений набора данных DOTA, используемая для тестирования и проверок непрерывной интеграции (CI).
Эти наборы данных предназначены для сценариев, в которых OBB предлагают значительное преимущество, например, при анализе аэрофотоснимков и спутниковых изображений.
Могу ли я использовать свой собственный набор данных с ориентированными ограничивающими рамками для обучения YOLO11, и если да, то как?
Да, вы можете использовать свой собственный набор данных с ориентированными ограничивающими рамками для обучения YOLO11. Убедитесь, что аннотации вашего набора данных преобразованы в формат YOLO OBB, который включает определение ограничивающих рамок по четырем угловым точкам. Затем вы можете создать файл конфигурации YAML, указав пути к набору данных, классы и другие необходимые сведения. Для получения дополнительной информации о создании и настройке наборов данных обратитесь к разделу Поддерживаемые наборы данных.