Ir al contenido

Cajas delimitadoras orientadas Detección de objetos

La detección de objetos orientados va un paso más allá de la detección de objetos estándar al introducir un ángulo adicional para localizar objetos con mayor precisión en una imagen.

La salida de un detector de objetos orientados es un conjunto de cuadros delimitadores rotados que encierran con precisión los objetos en la imagen, junto con las etiquetas de clase y las puntuaciones de confianza para cada cuadro. Los cuadros delimitadores orientados son particularmente útiles cuando los objetos aparecen en varios ángulos, como en imágenes aéreas, donde los cuadros delimitadores tradicionales alineados con los ejes pueden incluir fondos innecesarios.

Consejo

Los modelos OBB de YOLO11 utilizan el -obb sufijo, p. ej. yolo11n-obb.pt y están pre-entrenados en DOTAv1.



Ver: Detección de objetos utilizando cajas delimitadoras orientadas (YOLO-OBB) de Ultralytics YOLO

Muestras visuales

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

Modelos

Aquí se muestran los modelos OBB preentrenados de YOLO11, que están preentrenados en el conjunto de datos DOTAv1.

Los modelos se descargan automáticamente desde la última versión de Ultralytics en el primer uso.

Modelo tamaño
(píxeles)
mAPtest
50
Velocidad
CPU ONNX
(ms)
Velocidad
T4 TensorRT10
(ms)
parámetros
(M)
FLOPs
(B)
YOLO11n-obb 1024 78.4 117.6 ± 0.8 4.4 ± 0.0 2.7 17.2
YOLO11s-obb 1024 79.5 219.4 ± 4.0 5.1 ± 0.0 9.7 57.5
YOLO11m-obb 1024 80.9 562.8 ± 2.9 10.1 ± 0.4 20.9 183.5
YOLO11l-obb 1024 81.0 712.5 ± 5.0 13.5 ± 0.6 26.2 232.0
YOLO11x-obb 1024 81.3 1408.6 ± 7.7 28.6 ± 1.0 58.8 520.2
  • mAPtest los valores son para un modelo único multiescala en DOTAv1 conjunto de datos.
    Reproducir mediante yolo val obb data=DOTAv1.yaml device=0 split=test y enviar los resultados combinados a evaluación DOTA.
  • Velocidad promediado sobre imágenes val DOTAv1 usando un instancia de Amazon EC2 P4d .
    Reproducir mediante yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

Entrenar

Entrena YOLO11n-obb en el conjunto de datos DOTA8 durante 100 epochs con un tamaño de imagen de 640. Para obtener una lista completa de los argumentos disponibles, consulta la página de Configuración.

Nota

Los ángulos OBB están limitados al rango 0-90 grados (excluyendo 90). No se admiten ángulos de 90 grados o más.

Ejemplo

from ultralytics import YOLO

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

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



Ver: Cómo entrenar modelos Ultralytics YOLO-OBB (Cajas Delimitadoras Orientadas) en el conjunto de datos DOTA utilizando Ultralytics HUB

Formato del dataset

El formato del conjunto de datos OBB se puede encontrar en detalle en la Guía del conjunto de datos. El formato YOLO OBB designa los cuadros delimitadores por sus cuatro puntos de esquina con coordenadas normalizadas entre 0 y 1, siguiendo esta estructura:

class_index x1 y1 x2 y2 x3 y3 x4 y4

Internamente, YOLO procesa las pérdidas y las salidas en el xywhr formato, que representa el cuadro delimitadorel punto central (xy), el ancho, la altura y la rotación de.

Val

Validar el modelo YOLO11n-obb entrenado precisión en el conjunto de datos DOTA8. No se necesitan argumentos ya que el model conserva su entrenamiento data y argumentos como atributos del modelo.

Ejemplo

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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=yolo11n-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 YOLO11n-obb entrenado para ejecutar predicciones en imágenes.

Ejemplo

from ultralytics import YOLO

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



Ver: Cómo detectar y rastrear tanques de almacenamiento utilizando Ultralytics YOLO-OBB | Cajas Delimitadoras Orientadas | DOTA

Ver detalles completos del predict modo en la Predecir página.

Exportar

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

Ejemplo

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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=yolo11n-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 YOLO11-obb disponibles están en la tabla a continuación. Puedes exportar a cualquier formato usando el format argumento, por ejemplo: format='onnx' o format='engine'. Puedes predecir o validar directamente en modelos exportados, es decir, yolo predict model=yolo11n-obb.onnxDespués de que finalice la exportación, se mostrarán ejemplos de uso para su modelo.

Formato format Argumento Modelo Metadatos Argumentos
PyTorch - yolo11n-obb.pt -
TorchScript torchscript yolo11n-obb.torchscript imgsz, half, dynamic, optimize, nms, batch, device
ONNX onnx yolo11n-obb.onnx imgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINO openvino yolo11n-obb_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRT engine yolo11n-obb.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreML coreml yolo11n-obb.mlpackage imgsz, half, int8, nms, batch, device
TF SavedModel saved_model yolo11n-obb_saved_model/ imgsz, keras, int8, nms, batch, device
TF GraphDef pb yolo11n-obb.pb imgsz, batch, device
TF Lite tflite yolo11n-obb.tflite imgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPU edgetpu yolo11n-obb_edgetpu.tflite imgsz, device
TF.js tfjs yolo11n-obb_web_model/ imgsz, half, int8, nms, batch, device
PaddlePaddle paddle yolo11n-obb_paddle_model/ imgsz, batch, device
MNN mnn yolo11n-obb.mnn imgsz, batch, int8, half, device
NCNN ncnn yolo11n-obb_ncnn_model/ imgsz, half, batch, device
IMX500 imx yolo11n-obb_imx_model/ imgsz, int8, data, fraction, device
RKNN rknn yolo11n-obb_rknn_model/ imgsz, batch, name, device

Ver detalles completos del export detalles en la Exportar página.

Aplicaciones en el mundo real

La detección OBB con YOLO11 tiene numerosas aplicaciones prácticas en diversas industrias:

  • Gestión Marítima y Portuaria: Detección de barcos y embarcaciones en varios ángulos para la gestión de flotas y el monitoreo.
  • Planificación urbana: Análisis de edificios e infraestructuras a partir de imágenes aéreas.
  • Agricultura: Monitorización de cultivos y equipos agrícolas a partir de imágenes de drones.
  • Sector energético: Inspección de paneles solares y turbinas eólicas en diferentes orientaciones.
  • Transporte: Seguimiento de vehículos en carreteras y estacionamientos desde varias perspectivas.

Estas aplicaciones se benefician de la capacidad de OBB para ajustar con precisión los objetos en cualquier ángulo, proporcionando una detección más precisa que las cajas delimitadoras tradicionales.

Preguntas frecuentes

¿Qué son las cajas delimitadoras orientadas (OBB) y en qué se diferencian de las cajas delimitadoras regulares?

Las Cajas Delimitadoras Orientadas (OBB) incluyen un ángulo adicional para mejorar la precisión de la localización de objetos en imágenes. A diferencia de las cajas delimitadoras regulares, que son rectángulos alineados a los ejes, las OBB pueden rotar para ajustarse mejor a la orientación del objeto. Esto es particularmente útil para aplicaciones que requieren una colocación precisa del objeto, como imágenes aéreas o de satélite (Guía del Conjunto de Datos).

¿Cómo entreno un modelo YOLO11n-obb usando un conjunto de datos personalizado?

Para entrenar un modelo YOLO11n-obb con un conjunto de datos personalizado, sigue el ejemplo a continuación utilizando Python o CLI:

Ejemplo

from ultralytics import YOLO

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

Para obtener más argumentos de entrenamiento, consulta la sección de Configuración.

¿Qué conjuntos de datos puedo usar para entrenar modelos YOLO11-OBB?

Los modelos YOLO11-OBB están preentrenados en conjuntos de datos como DOTAv1, pero puedes utilizar cualquier conjunto de datos formateado para OBB. Puedes encontrar información detallada sobre los formatos de conjuntos de datos OBB en la Guía del Conjunto de Datos.

¿Cómo puedo exportar un modelo YOLO11-OBB al formato ONNX?

Exportar un modelo YOLO11-OBB al formato ONNX es sencillo utilizando Python o CLI:

Ejemplo

from ultralytics import YOLO

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

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

Para obtener más formatos de exportación y detalles, consulta la página de Exportación.

¿Cómo valido la precisión de un modelo YOLO11n-obb?

Para validar un modelo YOLO11n-obb, puedes utilizar comandos de Python o CLI como se muestra a continuación:

Ejemplo

from ultralytics import YOLO

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

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

Consulta los detalles completos de la validación en la sección Val.



📅 Creado hace 1 año ✏️ Actualizado hace 5 días

Comentarios