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 |
---|---|
![]() |
![]() |
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 medianteyolo 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 medianteyolo 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.onnx
Despué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.