Caixas delimitadoras orientadas Deteção de objectos
A detecção de objetos orientados vai um passo além da detecção de objetos padrão, introduzindo um ângulo extra para localizar objetos com mais precisão em uma imagem.
A saída de um detector de objetos orientados é um conjunto de bounding boxes rotacionadas que envolvem precisamente os objetos na imagem, juntamente com rótulos de classe e pontuações de confiança para cada caixa. Bounding boxes orientadas são particularmente úteis quando os objetos aparecem em vários ângulos, como em imagens aéreas, onde bounding boxes tradicionais alinhadas ao eixo podem incluir 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 encontrado em detalhes no Guia do Conjunto de Dados. O formato YOLO OBB designa caixas delimitadoras por 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 YOLO processa perdas e saídas em xywhr
formato, que representa o caixa delimitadorao ponto central (xy), largura, altura e rotação de.
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.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: 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 , half , 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 Leve | tflite |
yolo11n-obb.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Borda 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 completo export
pormenores no Exportação página.
Aplicações no Mundo Real
A detecção de OBB com YOLO11 tem inúmeras aplicações práticas em vários setores:
- Gestão Marítima e Portuária: Detecção de navios e embarcações em vários ângulos para gestão de frota e monitoramento.
- Planejamento Urbano: Análise de edifícios e infraestrutura a partir de imagens aéreas.
- Agricultura: Monitoramento de colheitas e equipamentos agrícolas a partir de imagens de drones.
- Setor de Energia: Inspeção de painéis solares e turbinas eólicas em diferentes orientações.
- Transporte: Rastreamento de veículos em estradas e estacionamentos a partir de várias perspectivas.
Essas aplicações se beneficiam da capacidade do OBB de ajustar com precisão os objetos em qualquer ângulo, proporcionando uma detecçã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.