Перейти к содержимому

Ориентированные ограничительные рамки Обнаружение объектов

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

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

Наконечник

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


Смотри: Обнаружение объектов с помощью Ultralytics YOLOv8 Oriented Bounding Boxes (YOLOv8-OBB)

Смотри: Обнаружение объектов с помощью YOLOv8-OBB с помощью Ultralytics HUB

Визуальные образцы

Обнаружение кораблей с помощью OBB Обнаружение автомобиля с помощью OBB
Обнаружение кораблей с помощью OBB Обнаружение автомобиля с помощью OBB

Модели

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

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

Модель Размер
(пикселей)
mAPtest
50
Скорость
CPU ONNX
(мс)
Скорость
A100 TensorRT
(мс)
params
(M)
FLOPs
(B)
YOLOv8n-obb 1024 78.0 204.77 3.57 3.1 23.3
YOLOv8s-obb 1024 79.5 424.88 4.07 11.4 76.3
YOLOv8m-obb 1024 80.5 763.48 7.61 26.4 208.6
YOLOv8l-obb 1024 80.7 1278.42 11.83 44.5 433.8
YOLOv8x-obb 1024 81.36 1759.10 13.23 69.5 676.7
  • 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

Поезд

Поезд YOLOv8n-obb на dota8.yaml набор данных для 100 эпох при размере изображения 640. Полный список доступных аргументов смотри в разделе Конфигурация Страница.

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-obb.yaml")  # build a new model from YAML
model = YOLO("yolov8n-obb.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolov8n-obb.yaml").load("yolov8n.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=yolov8n-obb.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolov8n-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=yolov8n-obb.yaml pretrained=yolov8n-obb.pt epochs=100 imgsz=640

Формат датасета

Подробно о формате набора данных OBB можно прочитать в руководстве по набору данных.

Вэл

Проверь точность обученной модели YOLOv8n-obb на наборе данных DOTA8. Не нужно передавать никаких аргументов, так как model сохраняет свою подготовку data и аргументы в качестве атрибутов модели.

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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=yolov8n-obb.pt data=dota8.yaml  # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml  # val custom model

Предсказывай

Используй обученную модель YOLOv8n-obb для выполнения прогнозов на изображениях.

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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/bus.jpg")  # predict on an image
yolo obb predict model=yolov8n-obb.pt source='https://ultralytics.com/images/bus.jpg'  # predict with official model
yolo obb predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # predict with custom model

Смотреть полностью predict Подробности о режиме в Предсказывай Страница.

Экспорт

Экспортируй модель YOLOv8n-obb в другой формат, например ONNX, CoreML, и т.д.

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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=yolov8n-obb.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

Доступные форматы экспорта YOLOv8-obb приведены в таблице ниже. Ты можешь экспортировать в любой формат, используя format аргумент, то есть format='onnx' или format='engine'. Ты можешь предсказывать или проверять непосредственно на экспортированных моделях, то есть yolo predict model=yolov8n-obb.onnx. Примеры использования будут показаны для твоей модели после завершения экспорта.

Формат format Аргумент Модель Метаданные Аргументы
PyTorch - yolov8n-obb.pt -
TorchScript torchscript yolov8n-obb.torchscript imgsz, optimize, batch
ONNX onnx yolov8n-obb.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n-obb_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n-obb.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n-obb.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n-obb_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n-obb.pb imgsz, batch
TF Lite tflite yolov8n-obb.tflite imgsz, half, int8, batch
TF Край TPU edgetpu yolov8n-obb_edgetpu.tflite imgsz
TF.js tfjs yolov8n-obb_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n-obb_paddle_model/ imgsz, batch
NCNN ncnn yolov8n-obb_ncnn_model/ imgsz, half, batch

Смотреть полностью export подробности в Экспорт Страница.

ВОПРОСЫ И ОТВЕТЫ

Что такое ориентированные ограничительные рамки (Oriented Bounding Boxes, OBB) и чем они отличаются от обычных ограничительных рамок?

Ориентированные ограничительные рамки (Oriented Bounding Boxes, OBB) включают в себя дополнительный угол, чтобы повысить точность локализации объекта на изображениях. В отличие от обычных ограничивающих боксов, которые представляют собой прямоугольники, выровненные по оси, OBB могут поворачиваться, чтобы лучше соответствовать ориентации объекта. Это особенно полезно для приложений, требующих точного размещения объектов, например, для аэро- или спутниковых снимков(Dataset Guide).

Как обучить модель YOLOv8n-obb, используя пользовательский набор данных?

Чтобы обучить модель YOLOv8n-obb с пользовательским набором данных, следуй приведенному ниже примеру, используя Python или CLI:

Пример

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolov8n-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=yolov8n-obb.pt epochs=100 imgsz=640

О дополнительных аргументах для тренировки читай в разделе " Конфигурация ".

Какие наборы данных можно использовать для обучения YOLOv8-OBB-моделей?

YOLOv8-Модели OBB проходят предварительное обучение на таких наборах данных, как DOTAv1, но ты можешь использовать любой набор данных, отформатированный для OBB. Подробную информацию о форматах наборов данных OBB можно найти в руководстве по наборам данных.

Как экспортировать модель YOLOv8-OBB в формат ONNX ?

Экспортировать модель YOLOv8-OBB в формат ONNX проще всего с помощью Python или CLI:

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-obb.pt")

# Export the model
model.export(format="onnx")
yolo export model=yolov8n-obb.pt format=onnx

О форматах экспорта и подробностях читай на странице " Экспорт ".

Как проверить точность модели YOLOv8n-obb?

Чтобы проверить модель YOLOv8n-obb, ты можешь воспользоваться командами Python или CLI , как показано ниже:

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-obb.pt")

# Validate the model
metrics = model.val(data="dota8.yaml")
yolo obb val model=yolov8n-obb.pt data=dota8.yaml

Полную информацию о проверке смотри в разделе " Вал".



Создано 2024-01-05, Обновлено 2024-07-04
Авторы: glenn-jocher (22), Burhan-Q (4), Laughing-q (3), AyushExel (1)

Комментарии