Salta para o conteúdo

Oriented Bounding Boxes Object Detection

A deteção orientada de objectos vai um passo mais além do que a deteção de objectos e introduz um ângulo extra para localizar objectos com maior precisão numa imagem.

O resultado de um detetor de objectos orientado é um conjunto de caixas delimitadoras rodadas que envolvem exatamente os objectos na imagem, juntamente com etiquetas de classe e pontuações de confiança para cada caixa. A deteção de objectos é uma boa escolha quando é necessário identificar objectos de interesse numa cena, mas não é necessário saber exatamente onde se encontra o objeto ou a sua forma exacta.

Dica

YOLO11 OBB models use the -obb sufixo, ou seja yolo11n-obb.pt e são pré-treinados em DOTAv1.



Observa: Object Detection using Ultralytics YOLO Oriented Bounding Boxes (YOLO-OBB)

Amostras visuais

Deteção de navios utilizando OBBDeteção de veículos utilizando OBB
Deteção de navios utilizando OBBDeteção de veículos utilizando OBB

Modelos

YOLO11 pretrained OBB models are shown here, which are pretrained on the DOTAv1 dataset.

Os modelos são transferidos automaticamente a partir daversão mais recente de Ultralytics na primeira utilização.

Modelotamanho
(pixéis)
mAPtest
50
Velocidade
CPU ONNX
(ms)
Speed
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B)
YOLO11n-obb102478.4117.6 ± 0.84.4 ± 0.02.717.2
YOLO11s-obb102479.5219.4 ± 4.05.1 ± 0.09.757.5
YOLO11m-obb102480.9562.8 ± 2.910.1 ± 0.420.9183.5
YOLO11l-obb102481.0712.5 ± 5.013.5 ± 0.626.2232.0
YOLO11x-obb102481.31408.6 ± 7.728.6 ± 1.058.8520.2
  • mAPtest os valores são para o modelo único de multiescala em DOTAv1 conjunto de dados.
    Reproduzir por yolo val obb data=DOTAv1.yaml device=0 split=test e envia os resultados combinados para Avaliação DOTA.
  • Velocidade calcula a média das imagens DOTAv1 val utilizando um Amazon EC2 P4d instância.
    Reproduzir por yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

Comboio

Train YOLO11n-obb on the DOTA8 dataset for 100 epochs at image size 640. For a full list of available arguments see the Configuration page.

Exemplo

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: How to Train Ultralytics YOLO-OBB (Oriented Bounding Boxes) Models on DOTA Dataset using Ultralytics HUB

Formato do conjunto de dados

O formato do conjunto de dados OBB pode ser consultado em pormenor no Guia do conjunto de dados.

Val

Validate trained YOLO11n-obb model accuracy on the DOTA8 dataset. No arguments are needed as the model mantém a sua formação data e argumentos como atributos do modelo.

Exemplo

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

Prevê

Use a trained YOLO11n-obb model to run predictions on images.

Exemplo

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/bus.jpg")  # predict on an image
yolo obb predict model=yolo11n-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



Observa: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA

Ver completo predict detalhes do modo no Prevê página.

Exportação

Export a YOLO11n-obb model to a different format like ONNX, CoreML, etc.

Exemplo

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

Available YOLO11-obb export formats are in the table below. You can export to any format using the format argumento, ou seja format='onnx' ou format='engine'. Podes prever ou validar diretamente nos modelos exportados, ou seja yolo predict model=yolo11n-obb.onnx. São apresentados exemplos de utilização para o teu modelo após a conclusão da exportação.

Formatoformat ArgumentaModeloMetadadosArgumentos
PyTorch-yolo11n-obb.pt-
TorchScripttorchscriptyolo11n-obb.torchscriptimgsz, optimize, batch
ONNXonnxyolo11n-obb.onnximgsz, half, dynamic, simplify, opset, batch
OpenVINOopenvinoyolo11n-obb_openvino_model/imgsz, half, int8, batch
TensorRTengineyolo11n-obb.engineimgsz, half, dynamic, simplify, workspace, int8, batch
CoreMLcoremlyolo11n-obb.mlpackageimgsz, half, int8, nms, batch
TF SavedModelsaved_modelyolo11n-obb_saved_model/imgsz, keras, int8, batch
TF GraphDefpbyolo11n-obb.pbimgsz, batch
TF Levetfliteyolo11n-obb.tfliteimgsz, half, int8, batch
TF Borda TPUedgetpuyolo11n-obb_edgetpu.tfliteimgsz
TF.jstfjsyolo11n-obb_web_model/imgsz, half, int8, batch
PaddlePaddlepaddleyolo11n-obb_paddle_model/imgsz, batch
NCNNncnnyolo11n-obb_ncnn_model/imgsz, half, batch

Ver completo export detalhes no Exportação página.

FAQ

O que são caixas delimitadoras orientadas (OBB) e quais são as suas diferenças em relação às caixas delimitadoras normais?

As Oriented Bounding Boxes (OBB) incluem um ângulo adicional para melhorar a precisão da localização de objectos em imagens. Ao contrário das caixas delimitadoras normais, que são rectângulos alinhados com o eixo, as OBB podem rodar para se adaptarem melhor à orientação do objeto. Isto é particularmente útil para aplicações que requerem uma colocação precisa do objeto, como imagens aéreas ou de satélite(Dataset Guide).

How do I train a YOLO11n-obb model using a custom dataset?

To train a YOLO11n-obb model with a custom dataset, follow the example below using Python or CLI:

Exemplo

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 mais argumentos de formação, consulta a secção Configuração.

What datasets can I use for training YOLO11-OBB models?

YOLO11-OBB models are pretrained on datasets like DOTAv1 but you can use any dataset formatted for OBB. Detailed information on OBB dataset formats can be found in the Dataset Guide.

How can I export a YOLO11-OBB model to ONNX format?

Exporting a YOLO11-OBB model to ONNX format is straightforward using either Python or CLI:

Exemplo

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 mais formatos de exportação e detalhes, consulta a página Exportar.

How do I validate the accuracy of a YOLO11n-obb model?

To validate a YOLO11n-obb model, you can use Python or CLI commands as shown below:

Exemplo

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

Vê os detalhes completos da validação na secção Val.

📅 Created 9 months ago ✏️ Updated 11 days ago

Comentários