Saltar al contenido

Cajas delimitadoras orientadas Detección de objetos

La detección de objetos orientada va un paso más allá de la detección de objetos e introduce un ángulo adicional para localizar los objetos con mayor precisión en una imagen.

La salida de un detector de objetos orientado es un conjunto de cuadros delimitadores rotados que encierran exactamente los objetos de la imagen, junto con etiquetas de clase y puntuaciones de confianza para cada cuadro. La detección de objetos es una buena opción cuando necesitas identificar objetos de interés en una escena, pero no necesitas saber exactamente dónde está el objeto ni su forma exacta.

Consejo

YOLOv8 Los modelos OBB utilizan la -obb sufijo, es decir yolov8n-obb.pt y están preentrenados en DOTAv1.


Observa: Detección de objetos mediante Ultralytics YOLOv8 Cajas delimitadoras orientadas (YOLOv8-OBB)

Observa: Detección de Objetos con YOLOv8-OBB utilizando Ultralytics HUB

Muestras visuales

Detección de barcos mediante OBB Detección de vehículos mediante OBB
Detección de barcos mediante OBB Detección de vehículos mediante OBB

Modelos

YOLOv8 Aquí se muestran los modelos OBB preentrenados en el conjunto de datos DOTAv1.

Los modelos se descargan automáticamente de la últimaversión de Ultralytics la primera vez que se utilizan.

Modelo tamaño
(píxeles)
mAPtest
50
Velocidad
CPU ONNX
(ms)
Velocidad
A100 TensorRT
(ms)
parámetros
(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 son para multiescala de modelo único en Prueba DOTAv1 conjunto de datos.
    Reproducir por yolo val obb data=DOTAv1.yaml device=0 split=test y envía los resultados fusionados a Evaluación DOTA.
  • Velocidad promediadas sobre las imágenes DOTAv1 val utilizando un Amazon EC2 P4d instancia.
    Reproducir por yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

Tren

Tren YOLOv8n-obb en el dota8.yaml para 100 épocas con un tamaño de imagen de 640. Para ver la lista completa de argumentos disponibles, consulta Configuración página.

Ejemplo

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

Formato del conjunto de datos

El formato del conjunto de datos OBB se encuentra detallado en la Guía del Conjunto de Datos.

Val

Valida la precisión del modelo entrenado YOLOv8n-obb en el conjunto de datos DOTA8. No es necesario pasar ningún argumento model conserva su formación data y argumentos como atributos del modelo.

Ejemplo

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

Predecir

Utiliza un modelo YOLOv8n-obb entrenado para realizar predicciones sobre las imágenes.

Ejemplo

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

Ver todo predict detalles del modo en el Predecir página.

Exportar

Exporta un modelo YOLOv8n-obb a un formato diferente como ONNX, CoreML, etc.

Ejemplo

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

Los formatos de exportación YOLOv8-obb disponibles están en la tabla siguiente. Puedes exportar a cualquier formato utilizando el botón format argumento, es decir format='onnx' o format='engine'. Puedes predecir o validar directamente los modelos exportados, es decir. yolo predict model=yolov8n-obb.onnx. Se muestran ejemplos de uso de tu modelo una vez finalizada la exportación.

Formato format Argumento Modelo Metadatos Argumentos
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 Arista TPU edgetpu yolov8n-obb_edgetpu.tflite imgsz, batch
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

Ver todo export detalles en el Exportar página.



Creado 2024-01-05, Actualizado 2024-05-08
Autores: Burhan-Q (3), glenn-jocher (16), Laughing-q (3), AyushExel (1)

Comentarios