Saltar para o conteúdo

Caixas delimitadoras orientadas Deteção de objectos

A deteção de objectos orientados vai um passo mais além do que a deteção de objectos padrão, introduzindo um ângulo extra para localizar objectos com mais precisão numa imagem.

O resultado de um detetor de objectos orientado é um conjunto de caixas delimitadoras rodadas que delimitam com precisão os objectos na imagem, juntamente com etiquetas de classe e pontuações de confiança para cada caixa. As caixas delimitadoras orientadas são particularmente úteis quando os objectos aparecem em vários ângulos, como em imagens aéreas, em que as caixas delimitadoras tradicionais alinhadas com o eixo podem incluir um fundo desnecessário.

Dica

YOLO11 Os modelos OBB utilizam o -obb sufixo, ou seja yolo11n-obb.pt e são pré-treinados em DOTAv1.



Ver: Deteção de objectos utilizando Ultralytics YOLO Oriented Bounding Boxes (YOLO-OBB)

Amostras visuais

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

Modelos

YOLO11 são aqui apresentados modelos OBB pré-treinados, que são pré-treinados no conjunto de dados DOTAv1.

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

Modelo tamanho
(pixéis)
mAPtest
50
Velocidade
CPU ONNX
(ms)
Velocidade
T4TensorRT10
(ms)
params
(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 os valores são para o modelo único multiescala em DOTAv1 conjunto de dados.
    Reproduzir por yolo val obb data=DOTAv1.yaml device=0 split=test e enviar os resultados combinados para Avaliação DOTA.
  • Velocidade 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

Treinar YOLO11n-obb no conjunto de dados DOTA8 para 100 épocas com o tamanho de imagem 640. Para obter uma lista completa dos argumentos disponíveis, consulte a página Configuração.

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



Ver: Como treinar Ultralytics YOLO -OBB (Oriented Bounding Boxes) Modelos no conjunto de dados DOTA usando 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. O formato YOLO OBB designa as caixas delimitadoras pelos seus quatro pontos de canto com coordenadas normalizadas entre 0 e 1, seguindo esta estrutura:

class_index x1 y1 x2 y2 x3 y3 x4 y4

Internamente, o sítio YOLO processa as perdas e os resultados no xywhr que representa o formato caixa delimitadora(xy), largura, altura e rotação.

Val

Validar o modelo YOLO11n-obb treinado exatidão no conjunto de dados DOTA8. Não são necessários argumentos, uma vez que o 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

Prever

Utilize um modelo YOLO11n-obb treinado para executar previsões em imagens.

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/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



Ver: Como detetar e localizar tanques de armazenamento utilizando Ultralytics YOLO -OBB | Oriented Bounding Boxes | DOTA

Ver completo predict detalhes do modo no Prever página.

Exportação

Exportar um modelo YOLO11n-obb para um formato diferente, como 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

Os formatos de exportação YOLO11-obb disponíveis encontram-se na tabela abaixo. É possível exportar para qualquer formato utilizando o format argumento, ou seja format='onnx' ou format='engine'. É possível prever ou validar diretamente nos modelos exportados, ou seja yolo predict model=yolo11n-obb.onnx. São apresentados exemplos de utilização para o seu modelo após a conclusão da exportação.

Formato format Argumento Modelo Metadados 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 Leve tflite yolo11n-obb.tflite imgsz, half, int8, nms, batch, data
TF Borda 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 completo export pormenores no Exportação página.

Aplicações no mundo real

A deteção de OBB com o YOLO11 tem inúmeras aplicações práticas em vários sectores:

  • Gestão marítima e portuária: Deteção de navios e embarcações em vários ângulos para gestão e monitorização de frotas.
  • Planeamento urbano: Análise de edifícios e infra-estruturas a partir de imagens aéreas.
  • Agricultura: Monitorização de culturas e equipamento agrícola a partir de imagens de drones.
  • Setor da energia: Inspeção de painéis solares e turbinas eólicas em diferentes orientações.
  • Transportes: Seguimento de veículos nas estradas e nos parques de estacionamento a partir de várias perspectivas.

Estas aplicações beneficiam da capacidade do OBB para encaixar com precisão objectos em qualquer ângulo, proporcionando uma deteção mais precisa do que as caixas delimitadoras tradicionais.

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 caixas delimitadoras orientadas (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 os eixos, 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).

Como é que treino um modelo YOLO11n-obb utilizando um conjunto de dados personalizado?

Para treinar um modelo YOLO11n-obb com um conjunto de dados personalizado, siga o exemplo abaixo utilizando Python ou 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, consulte a secção Configuração.

Que conjuntos de dados posso utilizar para treinar modelos YOLO11-OBB?

YOLO11Os modelos OBB são pré-treinados em conjuntos de dados como o DOTAv1, mas pode utilizar qualquer conjunto de dados formatado para OBB. Informações detalhadas sobre os formatos de conjuntos de dados OBB podem ser encontradas no Guia de conjuntos de dados.

Como é que posso exportar um modelo YOLO11-OBB para o formato ONNX ?

A exportação de um modelo YOLO11-OBB para o formato ONNX é simples, utilizando Python ou 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 obter mais detalhes e formatos de exportação, consulte a página Exportar.

Como posso validar a exatidão de um modelo YOLO11n-obb?

Para validar um modelo YOLO11n-obb, pode utilizar os comandos Python ou CLI , como indicado abaixo:

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

Ver detalhes completos de validação na secção Val.

📅C riado há 1 ano ✏️ Atualizado há 1 dia

Comentários