Caixas Delimitadoras Orientadas Detecção de Objetos
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
Os modelos YOLO11 OBB usam o -obb
sufixo, ou seja, yolo11n-obb.pt
e são pré-treinados em DOTAv1.
Assista: Detecção de Objetos usando Caixas Delimitadoras Orientadas Ultralytics YOLO (YOLO-OBB)
Amostras Visuais
Detecção de Navios usando OBB | Detecção de Veículos usando OBB |
---|---|
![]() |
![]() |
Modelos
Os modelos OBB pré-treinados YOLO11 são mostrados aqui, os quais são pré-treinados no conjunto de dados DOTAv1.
Os Modelos são baixados automaticamente da versão mais recente do Ultralytics no primeiro uso.
Modelo | tamanho (pixels) |
mAPteste 50 |
Velocidade CPU ONNX (ms) |
Velocidade T4 TensorRT10 (ms) |
parâmetros (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 |
- mAPteste os valores são para multiescala de modelo único em DOTAv1 dataset.
Reproduzir poryolo val obb data=DOTAv1.yaml device=0 split=test
e envie os resultados mesclados para avaliação DOTA. - Velocidade com média nas imagens val do DOTAv1 usando um Amazon EC2 P4d instância.
Reproduzir poryolo val obb data=DOTAv1.yaml batch=1 device=0|cpu
Treinar
Treine YOLO11n-obb no conjunto de dados DOTA8 por 100 épocas no tamanho de imagem 640. Para uma lista completa de argumentos disponíveis, consulte a página de Configuração.
Nota
Os ângulos OBB estão limitados ao intervalo 0-90 graus (excluindo 90). Os ângulos de 90 graus ou mais não são suportados.
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
Assista: Como Treinar Modelos Ultralytics YOLO-OBB (Caixas Delimitadoras Orientadas) no Conjunto de Dados DOTA usando o 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 bounding boxo ponto central (xy), largura, altura e rotação de.
Validar
Validar o modelo YOLO11n-obb treinado precisão no conjunto de dados DOTA8. Nenhum argumento é necessário, pois o model
mantém seu treinamento 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
Use 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
Assista: Como Detectar e Rastrear Tanques de Armazenamento usando Ultralytics YOLO-OBB | Caixas Delimitadoras Orientadas | DOTA
Veja todos os detalhes do modo predict
na Prever página.
Exportar
Exporte 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 estão na tabela abaixo. Você pode exportar para qualquer formato usando o format
argumento, ou seja, format='onnx'
ou format='engine'
. Você pode prever ou validar diretamente em modelos exportados, ou seja, yolo predict model=yolo11n-obb.onnx
Exemplos de uso são mostrados para 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 , dynamic , 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 Lite | tflite |
yolo11n-obb.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Edge 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 |
Veja todos os detalhes do modo export
detalhes em Exportar 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 como elas diferem das caixas delimitadoras regulares?
Caixas Delimitadoras Orientadas (OBB) incluem um ângulo adicional para aumentar a precisão da localização de objetos em imagens. Ao contrário das caixas delimitadoras regulares, que são retângulos alinhados aos eixos, as OBBS podem girar para se ajustar melhor à orientação do objeto. Isso é particularmente útil para aplicações que exigem posicionamento preciso do objeto, como imagens aéreas ou de satélite (Guia do Conjunto de Dados).
Como faço para treinar um modelo YOLO11n-obb usando um conjunto de dados personalizado?
Para treinar um modelo YOLO11n-obb com um conjunto de dados personalizado, siga o exemplo abaixo usando 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 treinamento, verifique a seção Configuração.
Quais conjuntos de dados posso usar para treinar modelos YOLO11-OBB?
Os modelos YOLO11-OBB são pré-treinados em conjuntos de dados como DOTAv1, mas você pode usar qualquer conjunto de dados formatado para OBB. Informações detalhadas sobre os formatos de conjunto de dados OBB podem ser encontradas no Guia do Conjunto de Dados.
Como posso exportar um modelo YOLO11-OBB para o formato ONNX?
Exportar um modelo YOLO11-OBB para o formato ONNX é simples usando 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 mais formatos de exportação e detalhes, consulte a página Exportar.
Como valido a precisão de um modelo YOLO11n-obb?
Para validar um modelo YOLO11n-obb, você pode usar comandos Python ou CLI, conforme mostrado 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
Veja detalhes completos de validação na seção Val.