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 |
---|---|
![]() |
![]() |
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 poryolo 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 poryolo 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:
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
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
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
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
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
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
Ver detalhes completos de validação na secção Val.