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.
El resultado de un detector de objetos orientados es un conjunto de cajas delimitadoras rotadas que encierran con precisión los objetos en la imagen, junto con etiquetas de clase y puntuaciones de confianza para cada caja. Las cajas delimitadoras orientadas son especialmente útiles cuando los objetos aparecen en varios ángulos, como en imágenes aéreas, donde las cajas delimitadoras tradicionales alineadas con los ejes pueden incluir fondo innecesario.
Los modelos YOLO26 OBB utilizan el sufijo -obb, por ejemplo, yolo26n-obb.pt, y están preentrenados en DOTAv1.
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
Ejemplos visuales
| Detección de barcos usando OBB | Detección de vehículos usando OBB |
|---|---|
![]() | ![]() |
Modelos
Aquí se muestran los modelos OBB preentrenados de YOLO26, los cuales están preentrenados en el conjunto de datos DOTAv1.
Los modelos se descargan automáticamente desde la última versión de Ultralytics en su primer uso.
| Modelo | tamaño (píxeles) | mAPtest 50-95(e2e) | mAPtest 50(e2e) | Velocidad CPU ONNX (ms) | Velocidad T4 TensorRT10 (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-obb | 1024 | 52.4 | 78.9 | 97.7 ± 0.9 | 2.8 ± 0.0 | 2.5 | 14.0 |
| YOLO26s-obb | 1024 | 54.8 | 80.9 | 218.0 ± 1.4 | 4.9 ± 0.1 | 9.8 | 55.1 |
| YOLO26m-obb | 1024 | 55.3 | 81.0 | 579.2 ± 3.8 | 10.2 ± 0.3 | 21.2 | 183.3 |
| YOLO26l-obb | 1024 | 56.2 | 81.6 | 735.6 ± 3.1 | 13.0 ± 0.2 | 25.6 | 230.0 |
| YOLO26x-obb | 1024 | 56.7 | 81.7 | 1485.7 ± 11.5 | 30.5 ± 0.9 | 57.6 | 516.5 |
- Los valores de mAPtest son para multiescala de modelo único en el conjunto de datos DOTAv1.
Reproduce conyolo val obb data=DOTAv1.yaml device=0 split=testy envía los resultados combinados a la evaluación de DOTA. - Velocidad promediada sobre imágenes de validación de DOTAv1 usando una instancia Amazon EC2 P4d.
Reproduce conyolo val obb data=DOTAv1.yaml batch=1 device=0|cpu - Los valores de Params y FLOPs corresponden al modelo fusionado tras
model.fuse(), que combina las capas Conv y BatchNorm y, para los modelos de extremo a extremo (end2end), elimina la cabeza de detección auxiliar de uno a muchos. Los puntos de control preentrenados conservan la arquitectura de entrenamiento completa y pueden mostrar recuentos más elevados.
Entrenar (Train)
Entrena YOLO26n-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, consulta la página de Configuración.
Los ángulos de OBB están limitados al rango de 0 a 90 grados (excluyendo el 90). No se admiten ángulos de 90 grados o superiores.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.yaml") # build a new model from YAML
model = YOLO("yolo26n-obb.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-obb.yaml").load("yolo26n-obb.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)Watch: How to Train Ultralytics YOLO-OBB (Oriented Bounding Boxes) Models on DOTA Dataset using Ultralytics Platform
Formato del conjunto de datos
El formato del conjunto de datos OBB se puede encontrar detallado en la Guía de conjuntos de datos. El formato YOLO OBB designa las cajas delimitadoras por sus cuatro puntos de esquina con coordenadas normalizadas entre 0 y 1, siguiendo esta estructura. Ultralytics Platform admite la anotación OBB con una herramienta dedicada de dibujo de cajas delimitadoras orientadas:
class_index x1 y1 x2 y2 x3 y3 x4 y4
Internamente, YOLO procesa las pérdidas y salidas en el formato xywhr, que representa el punto central de la caja delimitadora (xy), el ancho, la altura y la rotación.
Validar (Val)
Valida la precisión del modelo YOLO26n-obb entrenado en el conjunto de datos DOTA8. No se necesitan argumentos, ya que el model conserva sus datos de entrenamiento data y los argumentos como atributos del modelo.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-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 containing mAP50-95(B) for each category
metrics.box.image_metrics # per-image metrics dictionary with precision, recall, F1, TP, FP, and FNPredecir
Usa un modelo YOLO26n-obb entrenado para realizar predicciones en imágenes.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-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 boxWatch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA
Consulta los detalles completos del modo predict en la página Predict.
Exportar (Export)
Exporta un modelo YOLO26n-obb a un formato diferente como ONNX, CoreML, etc.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Los formatos de exportación de YOLO26-obb disponibles se encuentran en la siguiente tabla. Puedes exportar a cualquier formato usando el argumento format, por ejemplo, format='onnx' o format='engine'. Puedes predecir o validar directamente en modelos exportados, por ejemplo, yolo predict model=yolo26n-obb.onnx. Se muestran ejemplos de uso para tu modelo una vez finalizada la exportación.
| Formato | Argumento format | Modelo | Metadatos | Argumentos |
|---|---|---|---|---|
| PyTorch | - | yolo26n-obb.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-obb.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-obb.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n-obb_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-obb.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-obb.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-obb.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-obb.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-obb_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-obb_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-obb_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-obb.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-obb_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-obb_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-obb_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n-obb_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-obb_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DeepX | deepx | yolo26n-obb_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
Consulta todos los detalles de export en la página Export.
Aplicaciones en el mundo real
La detección OBB con YOLO26 tiene numerosas aplicaciones prácticas en diversas industrias:
- Gestión marítima y portuaria: Detección de barcos y embarcaciones en diversos ángulos para la gestión de flotas y monitorización.
- 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 grabaciones 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 aparcamientos desde varias perspectivas.
Estas aplicaciones se benefician de la capacidad de OBB para ajustarse con precisión a 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 las imágenes. A diferencia de las cajas delimitadoras regulares, que son rectángulos alineados con los ejes, las OBB pueden rotar para ajustarse mejor a la orientación del objeto. Esto es especialmente útil para aplicaciones que requieren una colocación precisa de los objetos, como las imágenes aéreas o de satélite (Guía de conjuntos de datos).
¿Cómo entreno un modelo YOLO26n-obb usando un conjunto de datos personalizado?
Para entrenar un modelo YOLO26n-obb con un conjunto de datos personalizado, sigue el ejemplo a continuación usando Python o CLI:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-obb.pt")
# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)Para ver más argumentos de entrenamiento, consulta la sección de Configuración.
¿Qué conjuntos de datos puedo usar para entrenar modelos YOLO26-OBB?
Los modelos YOLO26-OBB están preentrenados en conjuntos de datos como DOTAv1, pero puedes usar cualquier conjunto de datos formateado para OBB. Puedes encontrar información detallada sobre los formatos de conjuntos de datos OBB en la Guía de conjuntos de datos.
¿Cómo puedo exportar un modelo YOLO26-OBB al formato ONNX?
Exportar un modelo YOLO26-OBB al formato ONNX es sencillo usando Python o CLI:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Export the model
model.export(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 YOLO26n-obb?
Para validar un modelo YOLO26n-obb, puedes usar comandos de Python o CLI como se muestra a continuación:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")Consulta los detalles completos de la validación en la sección de Val.

