Link to this sectionОриентированные ограничивающие рамки Обнаружение объектов#
Ориентированное обнаружение объектов идет дальше стандартного обнаружения, добавляя дополнительный угол для более точного определения местоположения объектов на изображении.
Результатом работы ориентированного детектора объектов является набор повернутых ограничивающих рамок, которые точно охватывают объекты на изображении, вместе с метками классов и показателями достоверности для каждой рамки. Ориентированные ограничивающие рамки особенно полезны, когда объекты расположены под разными углами, например, на аэрофотоснимках, где традиционные рамки, выровненные по осям, могут захватывать лишний фон.
Модели YOLO26 OBB используют суффикс -obb, например yolo26n-obb.pt, и предварительно обучены на DOTAv1.
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
Link to this sectionВизуальные примеры#
| Обнаружение судов с помощью OBB | Обнаружение транспортных средств с помощью OBB |
|---|---|
![]() | ![]() |
Link to this sectionМодели#
Здесь представлены предварительно обученные модели 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 val с использованием инстанса Amazon EC2 P4d.
Воспроизведи с помощьюyolo val obb data=DOTAv1.yaml batch=1 device=0|cpu - Значения Params и FLOPs указаны для объединенной модели после
model.fuse(), которая объединяет слои Conv и BatchNorm и, для моделей end2end, удаляет вспомогательную «один-ко-многим» голову обнаружения. Предобученные чекпоинты сохраняют полную архитектуру обучения и могут показывать более высокие показатели.
Link to this sectionОбучение#
Обучи YOLO26n-obb на наборе данных DOTA8 в течение 100 эпох при размере изображения 640. Полный список доступных аргументов см. на странице Конфигурация.
OBB и его поворот на 180° идентичны, поэтому поворот определяется по модулю 180°, и у рамки нет направления. Внутренне угол хранится в радианах и нормализуется до [-π/4, 3π/4) ([-45°, 135°)), ширина рамки w принимается как более длинная сторона, а угол определяется как угол по часовой стрелке от положительной оси x до направления w. Формат [0°, 90°) является общепринятым стандартом DOTA и не применяется при обучении или инференсе.
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
Link to this sectionФормат набора данных#
Формат данных OBB подробно описан в Руководстве по наборам данных. Формат YOLO OBB обозначает ограничивающие рамки через их четыре угловые точки с координатами, нормализованными от 0 до 1, следуя этой структуре. Платформа Ultralytics поддерживает аннотирование OBB с помощью специального инструмента для отрисовки ориентированных ограничивающих рамок:
class_index x1 y1 x2 y2 x3 y3 x4 y4
Внутри системы YOLO обрабатывает потери и выводы в формате xywhr, который представляет центральную точку (xy), ширину, высоту и поворот ограничивающей рамки.
Link to this sectionВалидация#
Проверь точность обученной модели 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 FNLink to this sectionПрогнозирование#
Используй обученную модель 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 смотри на странице Предсказание (Predict).
Link to this sectionВывод результатов#
Обнаружение с помощью ориентированных ограничивающих рамок возвращает один объект Results на изображение. Основным полем предсказания является result.obb,
которое содержит повернутые рамки, идентификаторы классов и показатели достоверности для каждого обнаруженного объекта.
| Атрибут | Тип | Форма | Описание |
|---|---|---|---|
result.obb | OBB | (N) | Ориентированные рамки. |
result.obb.data | torch.float32 | (N,7/8) | Сырые повернутые рамки с достоверностью/классом. |
result.obb.xywhr | torch.float32 | (N,5) | Повернутые рамки xywhr. |
result.obb.xyxyxyxy | torch.float32 | (N,4,2) | Четыре угловые точки. |
result.obb.conf | torch.float32 | (N,) | Показатели достоверности. |
Для полей Results, специфичных для каждой задачи, смотри раздел Результаты предсказания по задачам.
Link to this sectionЭкспорт#
Экспортируй модель 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, int8, dynamic, simplify, opset, nms, batch, data, fraction, 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, int8, data, fraction, 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 |
| Qualcomm QNN | qnn | yolo26n-obb_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
Полную информацию об export смотри на странице Export.
Link to this sectionРеальные приложения#
Обнаружение OBB с помощью YOLO26 имеет множество практических применений в различных отраслях:
- Морское и портовое управление: Обнаружение судов и кораблей под разными углами для управления флотом и мониторинга.
- Градостроительство: Анализ зданий и инфраструктуры на основе аэрофотоснимков.
- Сельское хозяйство: Мониторинг сельскохозяйственных культур и техники с помощью кадров с дронов.
- Энергетический сектор: Инспекция солнечных панелей и ветряных турбин, расположенных под разными углами.
- Транспорт: Отслеживание транспортных средств на дорогах и парковках с разных ракурсов.
Эти приложения выигрывают от способности OBB точно подгонять рамки под объекты, расположенные под любым углом, обеспечивая более точное обнаружение, чем традиционные ограничивающие рамки.
Link to this sectionЧасто задаваемые вопросы (FAQ)#
Link to this sectionЧто такое ориентированные ограничивающие рамки (OBB) и чем они отличаются от обычных ограничивающих рамок?#
Ориентированные ограничивающие рамки (OBB) включают дополнительный угол для повышения точности локализации объектов на изображениях. В отличие от обычных ограничивающих рамок, которые представляют собой выровненные по осям прямоугольники, OBB могут вращаться, чтобы лучше соответствовать ориентации объекта. Это особенно полезно для приложений, требующих точного размещения объектов, например, в аэрофотосъемке или спутниковых снимках (Dataset Guide).
Link to this sectionКак обучить модель 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)Дополнительные аргументы обучения ищи в разделе Configuration.
Link to this sectionКакие наборы данных можно использовать для обучения моделей YOLO26-OBB?#
Модели YOLO26-OBB предварительно обучены на таких наборах данных, как DOTAv1, но ты можешь использовать любой набор данных, отформатированный для OBB. Подробную информацию о форматах наборов данных OBB можно найти в Dataset Guide.
Link to this sectionКак экспортировать модель 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")Больше информации о форматах экспорта и подробностях смотри на странице Export.
Link to this sectionКак проверить точность модели 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.

