Ориентированные ограничительные рамки Обнаружение объектов
Ориентированное обнаружение объектов идет на шаг дальше, чем обнаружение объектов, и вводит дополнительный угол, чтобы точнее находить объекты на изображении.
Результатом работы ориентированного детектора объектов является набор повернутых ограничительных боксов, которые точно окружают объекты на изображении, а также метки классов и баллы доверия для каждого бокса. Обнаружение объектов - хороший выбор, когда тебе нужно определить интересующие тебя объекты в сцене, но не нужно точно знать, где находится объект или его точную форму.
Наконечник
YOLOv8 Модели OBB используют -obb
суффикс, то есть yolov8n-obb.pt
и предварительно обучены на DOTAv1.
Смотри: Обнаружение объектов с помощью Ultralytics YOLOv8 Oriented Bounding Boxes (YOLOv8-OBB) |
Смотри: Обнаружение объектов с помощью YOLOv8-OBB с помощью Ultralytics HUB |
Визуальные образцы
Обнаружение кораблей с помощью 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
Предсказывай
Используй обученную модель YOLOv8n-obb для выполнения прогнозов на изображениях.
Пример
Смотреть полностью predict
Подробности о режиме в Предсказывай Страница.
Экспорт
Экспортируй модель YOLOv8n-obb в другой формат, например ONNX, CoreML, и т.д.
Пример
Доступные форматы экспорта 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:
Пример
О дополнительных аргументах для тренировки читай в разделе " Конфигурация ".
Какие наборы данных можно использовать для обучения YOLOv8-OBB-моделей?
YOLOv8-Модели OBB проходят предварительное обучение на таких наборах данных, как DOTAv1, но ты можешь использовать любой набор данных, отформатированный для OBB. Подробную информацию о форматах наборов данных OBB можно найти в руководстве по наборам данных.
Как экспортировать модель YOLOv8-OBB в формат ONNX ?
Экспортировать модель YOLOv8-OBB в формат ONNX проще всего с помощью Python или CLI:
Пример
О форматах экспорта и подробностях читай на странице " Экспорт ".
Как проверить точность модели YOLOv8n-obb?
Чтобы проверить модель YOLOv8n-obb, ты можешь воспользоваться командами Python или CLI , как показано ниже:
Пример
Полную информацию о проверке смотри в разделе " Вал".
Создано 2024-01-05, Обновлено 2024-07-04
Авторы: glenn-jocher (22), Burhan-Q (4), Laughing-q (3), AyushExel (1)