YOLO Vision 2026:

Ориентированные ограничивающие рамки Обнаружение объектов#

Ориентированное обнаружение объектов идет дальше стандартного обнаружения, добавляя дополнительный угол для более точного определения местоположения объектов на изображении.

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

Совет

Модели YOLO26 OBB используют суффикс -obb, например yolo26n-obb.pt, и предварительно обучены на DOTAv1.



Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢

Примеры визуализаций#

Обнаружение судов с помощью OBBОбнаружение транспортных средств с помощью OBB
Обнаружение судов с помощью OBBОбнаружение транспортных средств с помощью OBB

Модели#

Здесь представлены предварительно обученные модели YOLO26 OBB, обученные на наборе данных DOTAv1.

Модели скачиваются автоматически из последнего релиза Ultralytics при первом использовании.

Модельразмер
(пиксели)
mAPtest
50-95(e2e)
mAPtest
50(e2e)
Скорость
CPU ONNX
(мс)
Скорость
T4 TensorRT10
(мс)
параметры
(М)
FLOPs
(Б)
YOLO26n-obb102452.478.997.7 ± 0.92.8 ± 0.02.514.0
YOLO26s-obb102454.880.9218.0 ± 1.44.9 ± 0.19.855.1
YOLO26m-obb102455.381.0579.2 ± 3.810.2 ± 0.321.2183.3
YOLO26l-obb102456.281.6735.6 ± 3.113.0 ± 0.225.6230.0
YOLO26x-obb102456.781.71485.7 ± 11.530.5 ± 0.957.6516.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 указаны для объединенной модели после model.fuse(), которая объединяет слои Conv и BatchNorm, а для end2end моделей удаляет вспомогательную «один-ко-многим» голову детекции. Предобученные чекпоинты сохраняют полную архитектуру обучения и могут показывать более высокие значения.

Обучение#

Обучи 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

Формат набора данных#

Подробности о формате датасета OBB можно найти в Руководстве по датасетам. Формат YOLO OBB задает ограничивающие рамки с помощью координат четырех угловых точек, нормализованных в диапазоне от 0 до 1, в соответствии с этой структурой. Аннотирование на платформе Ultralytics поддерживает метки OBB с помощью специального инструмента для рисования ориентированных ограничивающих рамок:

class_index x1 y1 x2 y2 x3 y3 x4 y4

Внутри системы YOLO обрабатывает потери и выводит данные в формате xywhr, который представляет центральную точку (xy), ширину, высоту и поворот ограничивающей рамки.

Валидация#

Проверь точность обученной модели 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 box


Watch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA

Полную информацию о режиме predict смотри на странице Predict.

Вывод результатов#

Обнаружение ориентированных ограничивающих рамок возвращает один объект Results на изображение. Основным полем предсказания является result.obb, который содержит повернутые рамки, ID классов и показатели уверенности для каждого обнаруженного объекта.

АтрибутТипФормаОписание
result.obbOBB(N)Повернутые рамки.
result.obb.datatorch.float32(N,7/8)Необработанные повернутые рамки с уверенностью/классом.
result.obb.xywhrtorch.float32(N,5)Повернутые рамки в формате xywhr.
result.obb.xyxyxyxytorch.float32(N,4,2)Четыре угловые точки.
result.obb.conftorch.float32(N,)Оценки достоверности.

Для получения информации о специфичных для задачи полях Results см. раздел Предсказания по задачам.

Экспорт#

Экспортируй модель 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-
TorchScripttorchscriptyolo26n-obb.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-obb.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-obb_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-obb_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-obb.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/imgsz, batch, device
MNNmnnyolo26n-obb.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-obb_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-obb_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-obb_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-obb_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-obb_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-obb_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-obb.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-obb_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-obb_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms

Смотри подробную информацию об export на странице 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.

Комментарии