Ориентированные ограничивающие рамки Обнаружение объектов
Обнаружение ориентированных объектов идет на шаг дальше, чем стандартное обнаружение объектов, добавляя дополнительный угол для более точного определения местоположения объектов на изображении.
Результатом работы детектора ориентированных объектов является набор повернутых ограничивающих рамок, которые точно заключают объекты на изображении, а также метки классов и оценки достоверности для каждой рамки. Ориентированные ограничивающие рамки особенно полезны, когда объекты отображаются под разными углами, например, на аэрофотоснимках, где традиционные ограничивающие рамки, выровненные по осям, могут включать ненужный фон.
Совет
Модели YOLO11 OBB используют -obb
суффикс, т.е. yolo11n-obb.pt
и предварительно обучены на DOTAv1.
Смотреть: Обнаружение объектов с использованием ориентированных ограничивающих рамок (YOLO-OBB) Ultralytics YOLO
Визуальные примеры
Обнаружение судов с использованием OBB | Обнаружение транспортных средств с использованием OBB |
---|---|
![]() |
![]() |
Модели
Здесь представлены предварительно обученные модели OBB YOLO11, которые были обучены на наборе данных DOTAv1.
Модели загружаются автоматически из последнего релиза Ultralytics при первом использовании.
Модель | размер (пиксели) |
mAPtest 50 |
Скорость CPU ONNX (мс) |
Скорость T4 TensorRT10 (мс) |
параметры (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLO11n-obb | 1024 | 78.4 | 117.6 ± 0.8 | 4.4 ± 0.0 | 2.7 | 17.2 |
YOLO11s-obb | 1024 | 79.5 | 219.4 ± 4.0 | 5.1 ± 0.0 | 9.7 | 57.5 |
YOLO11m-obb | 1024 | 80.9 | 562.8 ± 2.9 | 10.1 ± 0.4 | 20.9 | 183.5 |
YOLO11l-obb | 1024 | 81.0 | 712.5 ± 5.0 | 13.5 ± 0.6 | 26.2 | 232.0 |
YOLO11x-obb | 1024 | 81.3 | 1408.6 ± 7.7 | 28.6 ± 1.0 | 58.8 | 520.2 |
- mAPtest значения для одномодельной мультимасштабной оценки на DOTAv1 наборе данных.
Воспроизвести с помощьюyolo val obb data=DOTAv1.yaml device=0 split=test
и отправьте объединенные результаты в оценки DOTA. - Скорость усреднено по изображениям из набора данных DOTAv1 val с использованием Amazon EC2 P4d instance.
Воспроизвести с помощьюyolo val obb data=DOTAv1.yaml batch=1 device=0|cpu
Обучение
Обучите YOLO11n-obb на наборе данных DOTA8 в течение 100 эпох при размере изображения 640. Полный список доступных аргументов см. на странице Конфигурация.
Примечание
Углы OBB ограничены диапазоном 0-90 градусов (за исключением 90). Углы в 90 градусов и более не поддерживаются.
Пример
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.yaml") # build a new model from YAML
model = YOLO("yolo11n-obb.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo11n-obb.yaml").load("yolo11n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolo11n-obb.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml pretrained=yolo11n-obb.pt epochs=100 imgsz=640
Смотреть: Как обучить модели Ultralytics YOLO-OBB (Oriented Bounding Boxes) на наборе данных DOTA с использованием Ultralytics HUB
Формат набора данных
Подробное описание формата набора данных OBB можно найти в Руководстве по наборам данных. Формат YOLO OBB определяет ограничивающие рамки по четырем угловым точкам с координатами, нормализованными между 0 и 1, в соответствии со следующей структурой:
class_index x1 y1 x2 y2 x3 y3 x4 y4
Внутри, YOLO обрабатывает потери и выходы в xywhr
формат, который представляет собой ограничивающего прямоугольникацентральную точку (xy), ширину, высоту и угол поворота.
Валидация
Проверка обученной модели YOLO11n-obb точность на наборе данных DOTA8. Аргументы не требуются, так как model
сохраняет свое обучение data
и аргументы в качестве атрибутов модели.
Пример
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="dota8.yaml") # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # a list contains map50-95(B) of each category
yolo obb val model=yolo11n-obb.pt data=dota8.yaml # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml # val custom model
Прогнозирование
Используйте обученную модель YOLO11n-obb для выполнения прогнозов на изображениях.
Пример
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/boats.jpg") # predict on an image
# Access the results
for result in results:
xywhr = result.obb.xywhr # center-x, center-y, width, height, angle (radians)
xyxyxyxy = result.obb.xyxyxyxy # polygon format with 4-points
names = [result.names[cls.item()] for cls in result.obb.cls.int()] # class name of each box
confs = result.obb.conf # confidence score of each box
yolo obb predict model=yolo11n-obb.pt source='https://ultralytics.com/images/boats.jpg' # predict with official model
yolo obb predict model=path/to/best.pt source='https://ultralytics.com/images/boats.jpg' # predict with custom model
Смотреть: Как обнаруживать и отслеживать резервуары для хранения с помощью Ultralytics YOLO-OBB | Ориентированные ограничивающие рамки | DOTA
Смотрите полную информацию о predict
деталях режима в Прогнозирование странице.
Экспорт
Экспортируйте модель YOLO11n-obb в другой формат, например ONNX, CoreML и т. д.
Пример
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom trained model
# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model
Доступные форматы экспорта YOLO11-obb представлены в таблице ниже. Вы можете экспортировать в любой формат, используя format
аргумент, например: format='onnx'
или format='engine'
. Вы можете прогнозировать или проверять непосредственно на экспортированных моделях, например: yolo predict model=yolo11n-obb.onnx
. Примеры использования отображаются для вашей модели после завершения экспорта.
Формат | format Аргумент |
Модель | Метаданные | Аргументы |
---|---|---|---|---|
PyTorch | - | yolo11n-obb.pt |
✅ | - |
TorchScript | torchscript |
yolo11n-obb.torchscript |
✅ | imgsz , half , dynamic , optimize , nms , batch , device |
ONNX | onnx |
yolo11n-obb.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch , device |
OpenVINO | openvino |
yolo11n-obb_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data , fraction , device |
TensorRT | engine |
yolo11n-obb.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data , fraction , device |
CoreML | coreml |
yolo11n-obb.mlpackage |
✅ | imgsz , half , int8 , nms , batch , device |
TF SavedModel | saved_model |
yolo11n-obb_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch , device |
TF GraphDef | pb |
yolo11n-obb.pb |
❌ | imgsz , batch , device |
TF Lite | tflite |
yolo11n-obb.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Edge TPU | edgetpu |
yolo11n-obb_edgetpu.tflite |
✅ | imgsz , device |
TF.js | tfjs |
yolo11n-obb_web_model/ |
✅ | imgsz , half , int8 , nms , batch , device |
PaddlePaddle | paddle |
yolo11n-obb_paddle_model/ |
✅ | imgsz , batch , device |
MNN | mnn |
yolo11n-obb.mnn |
✅ | imgsz , batch , int8 , half , device |
NCNN | ncnn |
yolo11n-obb_ncnn_model/ |
✅ | imgsz , half , batch , device |
IMX500 | imx |
yolo11n-obb_imx_model/ |
✅ | imgsz , int8 , data , fraction , device |
RKNN | rknn |
yolo11n-obb_rknn_model/ |
✅ | imgsz , batch , name , device |
Смотрите полную информацию о export
подробности в Экспорт странице.
Приложения в реальном мире
OBB-детектирование с помощью YOLO11 имеет множество практических применений в различных отраслях:
- Управление морским транспортом и портами: Обнаружение кораблей и судов под разными углами для управления флотом и мониторинга.
- Градостроительство: Анализ зданий и инфраструктуры по аэрофотоснимкам.
- Сельское хозяйство: Мониторинг посевов и сельскохозяйственного оборудования с помощью кадров, снятых с дронов.
- Energy Sector: Инспекция солнечных панелей и ветряных турбин при различных ориентациях.
- Транспорт: Отслеживание транспортных средств на дорогах и парковках с различных точек обзора.
Эти приложения выигрывают от способности OBB точно подгонять объекты под любым углом, обеспечивая более точное обнаружение, чем традиционные ограничивающие рамки.
Часто задаваемые вопросы
Что такое ориентированные ограничивающие рамки (OBB) и чем они отличаются от обычных ограничивающих рамок?
Ориентированные ограничивающие рамки (OBB) включают дополнительный угол для повышения точности локализации объектов на изображениях. В отличие от обычных ограничивающих рамок, которые представляют собой прямоугольники, выровненные по осям, OBB могут вращаться, чтобы лучше соответствовать ориентации объекта. Это особенно полезно для приложений, требующих точного размещения объектов, таких как аэрофотосъемка или спутниковые снимки (Руководство по наборам данных).
Как обучить модель YOLO11n-obb с использованием пользовательского набора данных?
Чтобы обучить модель YOLO11n-obb с пользовательским набором данных, следуйте приведенному ниже примеру, используя Python или CLI:
Пример
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo11n-obb.pt")
# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)
yolo obb train data=path/to/custom_dataset.yaml model=yolo11n-obb.pt epochs=100 imgsz=640
Дополнительные аргументы для обучения см. в разделе Конфигурация.
Какие наборы данных я могу использовать для обучения моделей YOLO11-OBB?
Модели YOLO11-OBB предварительно обучены на наборах данных, таких как DOTAv1, но вы можете использовать любой набор данных, отформатированный для OBB. Подробную информацию о форматах набора данных OBB можно найти в Руководстве по наборам данных.
Как экспортировать модель YOLO11-OBB в формат ONNX?
Экспорт модели YOLO11-OBB в формат ONNX прост при использовании Python или CLI:
Пример
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt")
# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx
Для получения дополнительной информации о форматах и деталях экспорта обратитесь к странице Экспорт.
Как проверить точность модели YOLO11n-obb?
Чтобы проверить модель YOLO11n-obb, вы можете использовать команды Python или CLI, как показано ниже:
Пример
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")
yolo obb val model=yolo11n-obb.pt data=dota8.yaml
Подробную информацию о проверке см. в разделе Val.