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

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

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

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

Наконечник

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



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

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

Обнаружение кораблей с помощью 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 приведены в таблице ниже. Ты можешь предсказывать или проверять непосредственно на экспортированных моделях, то есть yolo predict model=yolov8n-obb.onnx. Примеры использования будут показаны для твоей модели после завершения экспорта.

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

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



Создано 2024-01-05, Обновлено 2024-02-03
Авторы: glenn-jocher (10), Laughing-q (3), AyushExel (1)

Комментарии