Ориентированные ограничивающие рамки (OBB) обнаружение объектов
Ориентированное обнаружение объектов идет дальше стандартного обнаружения, добавляя дополнительный угол для более точного определения местоположения объектов на изображении.
Результатом работы ориентированного детектора объектов является набор повернутых ограничивающих рамок, которые точно охватывают объекты на изображении, вместе с метками классов и показателями уверенности для каждой рамки. Ориентированные ограничивающие рамки особенно полезны, когда объекты расположены под разными углами, например, на аэрофотоснимках, где традиционные рамки, выровненные по осям, могут захватывать лишний фон.
Модели YOLO26 OBB используют суффикс -obb, например, yolo26n-obb.pt, и предварительно обучены на наборе данных DOTAv1.
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
Визуальные примеры
| Обнаружение судов с помощью OBB | Обнаружение транспортных средств с помощью OBB |
|---|---|
![]() | ![]() |
Модели
Здесь представлены предварительно обученные модели YOLO26 OBB, которые обучены на наборе данных DOTAv1.
Модели автоматически загружаются из последнего релиза Ultralytics при первом использовании.
| Модель | размер (пиксели) | mAPtest 50-95(e2e) | mAPtest 50(e2e) | Скорость CPU ONNX (мс) | Скорость T4 TensorRT10 (мс) | параметры (М) | FLOPs (Б) |
|---|---|---|---|---|---|---|---|
| YOLO26n-obb | 1024 | 52.4 | 78.9 | 97.7 ± 0.9 | 2.8 ± 0.0 | 2.5 | 14.0 |
| YOLO26s-obb | 1024 | 54.8 | 80.9 | 218.0 ± 1.4 | 4.9 ± 0.1 | 9.8 | 55.1 |
| YOLO26m-obb | 1024 | 55.3 | 81.0 | 579.2 ± 3.8 | 10.2 ± 0.3 | 21.2 | 183.3 |
| YOLO26l-obb | 1024 | 56.2 | 81.6 | 735.6 ± 3.1 | 13.0 ± 0.2 | 25.6 | 230.0 |
| YOLO26x-obb | 1024 | 56.7 | 81.7 | 1485.7 ± 11.5 | 30.5 ± 0.9 | 57.6 | 516.5 |
- Значения mAPtest указаны для одномодельного мультимасштабного тестирования на наборе данных DOTAv1.
Воспроизведи результат с помощьюyolo val obb data=DOTAv1.yaml device=0 split=testи отправь объединенные результаты для оценки DOTA. - Значения скорости усреднены по изображениям из валидационного набора DOTAv1 с использованием инстанса Amazon EC2 P4d.
Воспроизведи результат с помощьюyolo val obb data=DOTAv1.yaml batch=1 device=0|cpu - Значения Params и FLOPs указаны для объединенной (fused) модели после
model.fuse(), которая объединяет слои Conv и BatchNorm и, для моделей end2end, удаляет вспомогательную «один-ко-многим» голову детекции. Предварительно обученные чекпоинты сохраняют полную архитектуру обучения и могут показывать более высокие значения.
Обучение (Train)
Обучи YOLO26n-obb на наборе данных DOTA8 в течение 100 эпох при размере изображения 640. Полный список доступных аргументов смотри на странице Конфигурация.
Углы OBB ограничены диапазоном 0–90 градусов (не включая 90). Углы 90 градусов и более не поддерживаются.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.yaml") # build a new model from YAML
model = YOLO("yolo26n-obb.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-obb.yaml").load("yolo26n-obb.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)Watch: How to Train Ultralytics YOLO-OBB (Oriented Bounding Boxes) Models on DOTA Dataset using Ultralytics Platform
Формат набора данных
Формат набора данных OBB подробно описан в Руководстве по наборам данных. Формат YOLO OBB определяет ограничивающие рамки через четыре угловые точки с координатами, нормализованными от 0 до 1, следуя данной структуре. Платформа Ultralytics поддерживает разметку OBB с помощью специального инструмента для рисования ориентированных ограничивающих рамок:
class_index x1 y1 x2 y2 x3 y3 x4 y4
Внутри YOLO обрабатывает потери и выводы в формате xywhr, который представляет собой центр ограничивающей рамки (xy), ширину, высоту и угол поворота.
Валидация (Val)
Проверь точность обученной модели YOLO26n-obb на наборе данных DOTA8. Аргументы не требуются, так как model сохраняет свои обучающие данные data и аргументы в качестве атрибутов модели.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-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 containing mAP50-95(B) for each category
metrics.box.image_metrics # per-image metrics dictionary with precision, recall, F1, TP, FP, and FNПрогнозирование
Используй обученную модель YOLO26n-obb для выполнения предсказаний на изображениях.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-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 boxWatch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA
Полные детали режима predict смотри на странице Предсказание.
Экспорт (Export)
Экспортируй модель YOLO26n-obb в другой формат, например ONNX, CoreML и т. д.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Доступные форматы экспорта YOLO26-obb представлены в таблице ниже. Ты можешь экспортировать в любой формат, используя аргумент format, например, format='onnx' или format='engine'. Ты можешь выполнять предсказание или проверку непосредственно на экспортированных моделях, например, yolo predict model=yolo26n-obb.onnx. Примеры использования будут показаны для твоей модели после завершения экспорта.
| Формат | Аргумент format | Модель | Метаданные | Аргументы |
|---|---|---|---|---|
| PyTorch | - | yolo26n-obb.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-obb.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-obb.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n-obb_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-obb.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-obb.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-obb.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-obb.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-obb_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-obb_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-obb_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-obb.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-obb_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-obb_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-obb_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n-obb_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-obb_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DeepX | deepx | yolo26n-obb_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
Смотри полные сведения об export на странице Экспорт.
Применение в реальных условиях
Обнаружение объектов с помощью OBB в YOLO26 имеет множество практических применений в различных отраслях:
- Морское и портовое управление: Обнаружение судов и транспортных средств под разными углами для управления флотом и мониторинга.
- Градостроительство: Анализ зданий и инфраструктуры на аэрофотоснимках.
- Сельское хозяйство: Мониторинг сельскохозяйственных культур и техники с помощью дронов.
- Энергетический сектор: Инспекция солнечных панелей и ветрогенераторов под разным углом.
- Транспорт: Отслеживание транспортных средств на дорогах и парковках с разных ракурсов.
Эти приложения выигрывают от способности OBB точно охватывать объекты под любым углом, обеспечивая более точное обнаружение, чем традиционные ограничивающие рамки.
Часто задаваемые вопросы (FAQ)
Что такое ориентированные ограничивающие рамки (OBB) и чем они отличаются от обычных?
Ориентированные ограничивающие рамки (OBB) включают дополнительный угол для повышения точности локализации объектов на изображениях. В отличие от обычных ограничивающих рамок, которые представляют собой прямоугольники, выровненные по осям, OBB могут вращаться, чтобы лучше соответствовать ориентации объекта. Это особенно полезно для приложений, требующих точного расположения объектов, таких как аэрофото- или спутниковые снимки (Руководство по наборам данных).
Как обучить модель YOLO26n-obb на собственном наборе данных?
Чтобы обучить модель YOLO26n-obb на собственном наборе данных, следуй приведенному ниже примеру с использованием Python или CLI:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-obb.pt")
# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)Больше аргументов для обучения можно найти в разделе Конфигурация.
Какие наборы данных можно использовать для обучения моделей YOLO26-OBB?
Модели YOLO26-OBB предварительно обучены на таких наборах данных, как DOTAv1, но ты можешь использовать любой набор данных в формате OBB. Подробную информацию о форматах данных OBB можно найти в Руководстве по наборам данных.
Как экспортировать модель YOLO26-OBB в формат ONNX?
Экспорт модели YOLO26-OBB в формат ONNX прост и выполняется с помощью Python или CLI:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Export the model
model.export(format="onnx")Для получения информации о других форматах экспорта и подробностях обратись к странице Экспорт.
Как проверить точность модели YOLO26n-obb?
Для проверки модели YOLO26n-obb ты можешь использовать команды Python или CLI, как показано ниже:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")Полную информацию о валидации смотри в разделе Val.

