Boîtes englobantes orientées Détection d'objets
La détection d'objets orientés va plus loin que la détection d'objets standard en introduisant un angle supplémentaire pour localiser les objets plus précisément dans une image.
La sortie d'un détecteur d'objets orientés est un ensemble de boîtes englobantes pivotées qui entourent précisément les objets dans l'image, avec des étiquettes de classe et des scores de confiance pour chaque boîte. Les boîtes englobantes orientées sont particulièrement utiles lorsque les objets apparaissent sous divers angles, comme dans l'imagerie aérienne, où les boîtes englobantes traditionnelles alignées sur les axes peuvent inclure des arrière-plans inutiles.
Les modèles YOLO26 OBB utilisent le suffixe -obb , c'est-à-dire yolo26n-obb.pt , et sont pré-entraînés sur DOTAv1.
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
Exemples visuels
| Détection de navires utilisant OBB | Détection de véhicules utilisant OBB |
|---|---|
![]() | ![]() |
Modèles
Les modèles YOLO26 OBB pré-entraînés sont présentés ici ; ils sont pré-entraînés sur le jeu de données DOTAv1 .
Modèles se téléchargent automatiquement depuis la dernière release Ultralytics lors de la première utilisation.
| Modèle | taille (pixels) | mAPtest 50-95(e2e) | mAPtest 50(e2e) | Speed CPU ONNX (ms) | Speed T4 TensorRT10 (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-obb | 1024 | 52.4 | 78.9 | 97.7 ± 0.9 | 2.8 ± 0.0 | 2.5 | 14.0 |
| YOLO26s-obb | 1024 | 54.8 | 80.9 | 218.0 ± 1.4 | 4.9 ± 0.1 | 9.8 | 55.1 |
| YOLO26m-obb | 1024 | 55.3 | 81.0 | 579.2 ± 3.8 | 10.2 ± 0.3 | 21.2 | 183.3 |
| YOLO26l-obb | 1024 | 56.2 | 81.6 | 735.6 ± 3.1 | 13.0 ± 0.2 | 25.6 | 230.0 |
| YOLO26x-obb | 1024 | 56.7 | 81.7 | 1485.7 ± 11.5 | 30.5 ± 0.9 | 57.6 | 516.5 |
- mAPtest les valeurs sont pour un modèle unique multi-échelle sur le jeu de données DOTAv1 .
Reproduis enyolo val obb data=DOTAv1.yaml device=0 split=testet soumets les résultats fusionnés à DOTA evaluation. - Speed moyenné sur les images de validation DOTAv1 en utilisant une instance Amazon EC2 P4d .
Reproduis enyolo val obb data=DOTAv1.yaml batch=1 device=0|cpu - Params et en FLOPs les valeurs sont pour le modèle fusionné après
model.fuse(), qui fusionne les couches Conv et BatchNorm et, pour les modèles end2end, supprime la tête de détection auxiliaire one-to-many. Les checkpoints pré-entraînés conservent l'architecture d'entraînement complète et peuvent afficher des nombres plus élevés.
Train
Entraîne YOLO26n-obb sur le jeu de données DOTA8 pendant 100 époques à une taille d'image de 640. Pour une liste complète des arguments disponibles, consulte la Configuration.
Les angles OBB sont contraints à la plage 0–90 degrés (excluant 90). Les angles de 90 degrés ou plus ne sont pas pris en charge.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.yaml") # build a new model from YAML
model = YOLO("yolo26n-obb.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-obb.yaml").load("yolo26n-obb.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)Watch: How to Train Ultralytics YOLO-OBB (Oriented Bounding Boxes) Models on DOTA Dataset using Ultralytics Platform
Format de jeu de données
Le format de jeu de données OBB peut être trouvé en détail dans le Guide du jeu de données . Le format YOLO OBB désigne les boîtes englobantes par leurs quatre points de coin avec des coordonnées normalisées entre 0 et 1, suivant cette structure. Ultralytics Platform prend en charge l'annotation OBB avec un outil de dessin de boîte englobante orientée dédié :
class_index x1 y1 x2 y2 x3 y3 x4 y4
En interne, YOLO traite les pertes et les sorties dans le format xywhr , qui représente le point central (xy), la largeur, la hauteur et la rotation de l' boîte englobante .
Val
Valide le modèle YOLO26n-obb entraîné accuracy sur le jeu de données DOTA8. Aucun argument n'est nécessaire car le model conserve son entraînement data et ses arguments d'entraînement en tant qu'attributs du modèle.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-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 containing mAP50-95(B) for each category
metrics.box.image_metrics # per-image metrics dictionary with precision, recall, F1, TP, FP, and FNPrédire
Utilise un modèle YOLO26n-obb entraîné pour exécuter des prédictions sur des images.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-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 boxWatch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA
Consulte les détails complets sur predict détails du mode dans le Prédire.
Export
Exporte un modèle YOLO26n-obb vers un format différent comme ONNX, CoreML, etc.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Les formats d'exportation YOLO26-obb disponibles sont dans le tableau ci-dessous. Tu peux exporter vers n'importe quel format en utilisant le format, c'est-à-dire format='onnx' ou format='engine'. Tu peux prédire ou valider directement sur des modèles exportés, c'est-à-dire yolo predict model=yolo26n-obb.onnx . Des exemples d'utilisation sont montrés pour ton modèle après la fin de l'exportation.
| Format | format Argument | Modèle | Métadonnées | Arguments |
|---|---|---|---|---|
| PyTorch | - | yolo26n-obb.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-obb.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-obb.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n-obb_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-obb.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-obb.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-obb.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-obb.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-obb_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-obb_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-obb_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-obb.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-obb_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-obb_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-obb_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n-obb_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-obb_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
Consulte les détails complets sur export dans la page Export.
Applications réelles
La détection OBB avec YOLO26 a de nombreuses applications pratiques dans diverses industries :
- Gestion maritime et portuaire: Détecter les navires et les bateaux sous divers angles pour la gestion de flotte et la surveillance.
- Urbanisme: Analyser les bâtiments et les infrastructures à partir d'imagerie aérienne.
- Agriculture: Surveiller les cultures et l'équipement agricole à partir de prises de vue par drone.
- Secteur de l'énergie: Inspecter les panneaux solaires et les éoliennes sous différentes orientations.
- Transports: Suivre les véhicules sur les routes et dans les parkings sous diverses perspectives.
Ces applications tirent parti de la capacité des OBB à s'ajuster précisément aux objets quel que soit leur angle, offrant une détection plus précise que les boîtes englobantes traditionnelles.
FAQ
Que sont les Oriented Bounding Boxes (OBB) et en quoi diffèrent-elles des boîtes englobantes classiques ?
Les Oriented Bounding Boxes (OBB) incluent un angle supplémentaire pour améliorer la précision de la localisation des objets dans les images. Contrairement aux boîtes englobantes classiques, qui sont des rectangles alignés sur les axes, les OBB peuvent pivoter pour mieux s'adapter à l'orientation de l'objet. Cela est particulièrement utile pour les applications nécessitant un placement précis des objets, comme l'imagerie aérienne ou satellitaire (Guide du jeu de données).
Comment entraîner un modèle YOLO26n-obb en utilisant un jeu de données personnalisé ?
Pour entraîner un modèle YOLO26n-obb avec un jeu de données personnalisé, suis l'exemple ci-dessous en utilisant Python ou CLI :
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-obb.pt")
# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)Pour plus d'arguments d'entraînement, consulte la Configuration.
Quels jeux de données puis-je utiliser pour entraîner des modèles YOLO26-OBB ?
Les modèles YOLO26-OBB sont pré-entraînés sur des jeux de données comme DOTAv1 mais tu peux utiliser n'importe quel jeu de données formaté pour OBB. Des informations détaillées sur les formats de jeu de données OBB sont disponibles dans le Guide du jeu de données.
Comment puis-je exporter un modèle YOLO26-OBB vers le format ONNX ?
Exporter un modèle YOLO26-OBB vers le format ONNX est simple en utilisant Python ou CLI :
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Export the model
model.export(format="onnx")Pour plus de formats d'exportation et de détails, réfère-toi au Export.
Comment valider la précision d'un modèle YOLO26n-obb ?
Pour valider un modèle YOLO26n-obb, tu peux utiliser les commandes Python ou CLI comme indiqué ci-dessous :
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")Vois tous les détails de validation dans le Val.

