Ir al contenido

Cajas delimitadoras orientadas Detección de objetos

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

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

Consejo

YOLO11 Los modelos OBB utilizan el -obb es decir yolo11n-obb.pt y están preentrenados en DOTAv1.



Observa: Detección de objetos mediante Ultralytics YOLO Oriented Bounding Boxes (YOLO-OBB)

Muestras visuales

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

Modelos

YOLO11 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
T4TensorRT10
(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 son para multiescala de modelo único en DOTAv1 conjunto de datos.
    Reproducir por yolo val obb data=DOTAv1.yaml device=0 split=test y envíe los resultados combinados 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

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

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



Observa: Cómo entrenar modelos Ultralytics YOLO -OBB (Oriented Bounding Boxes) en DOTA Dataset utilizando Ultralytics HUB

Formato del conjunto de datos

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

class_index x1 y1 x2 y2 x3 y3 x4 y4

Internamente, YOLO procesa las pérdidas y salidas en el xywhr que representa el formato cuadro delimitador(xy), anchura, altura y rotación.

Val

Validación del modelo YOLO11n-obb entrenado precisión en el conjunto de datos DOTA8. No se necesitan argumentos, ya que el model conserva su formación 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

Utilice un modelo YOLO11n-obb entrenado para realizar predicciones sobre 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.keypoints.xy  # 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



Observa: Cómo detectar y rastrear tanques de almacenamiento utilizando Ultralytics YOLO -OBB | Oriented Bounding Boxes | DOTA

Ver todos predict detalles del modo en el 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 disponibles en YOLO11-obb figuran en la tabla siguiente. Puede exportar a cualquier formato utilizando el botón format es decir format='onnx' o format='engine'. Puede predecir o validar directamente los modelos exportados, es decir. yolo predict model=yolo11n-obb.onnx. Se muestran ejemplos de uso de su modelo una vez finalizada la exportación.

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

Ver todos export detalles en el Exportar página.

Aplicaciones reales

La detección de OBB con YOLO11 tiene numerosas aplicaciones prácticas en diversos sectores:

  • Gestión marítima y portuaria: Detección de buques y embarcaciones desde distintos ángulos para la gestión y el control de flotas.
  • Planificación urbana: Análisis de edificios e infraestructuras a partir de imágenes aéreas.
  • Agricultura: Supervisión de cultivos y equipos agrícolas a partir de imágenes de drones.
  • Sector de la energía: Inspección de paneles solares y turbinas eólicas en diferentes orientaciones.
  • Transportes: Seguimiento de vehículos en carreteras y aparcamientos desde varias perspectivas.

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

PREGUNTAS FRECUENTES

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

Los cuadros delimitadores orientados (OBB) incluyen un ángulo adicional para mejorar la precisión de la localización de objetos en imágenes. A diferencia de los cuadros delimitadores normales, que son rectángulos alineados con el eje, los OBB pueden girar para ajustarse mejor a la orientación del objeto. Esto resulta especialmente útil para aplicaciones que requieren una localización precisa del objeto, como las imágenes aéreas o por satélite(Guía de conjuntos de datos).

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

Para entrenar un modelo YOLO11n-obb con un conjunto de datos personalizado, siga el siguiente ejemplo 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 más argumentos de entrenamiento, consulte la sección Configuración.

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

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

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

Exportar un modelo YOLO11-OBB al formato ONNX es muy 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 más formatos de exportación y detalles, consulte la página Exportar.

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

Para validar un modelo YOLO11n-obb, puede utilizar los comandos 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

Consulte todos los detalles de validación en la sección Val.

Creado hace 1 año ✏️ Actualizado hace 1 día

Comentarios