Orientierte Bounding Boxes Objekterkennung
Die orientierte Objekterkennung geht einen Schritt weiter als die Standard-Objekterkennung, indem sie einen zusätzlichen Winkel einführt, um Objekte in einem Bild präziser zu lokalisieren.
Die Ausgabe eines orientierten Objektdetektors ist eine Reihe von rotierten Bounding Boxes, die die Objekte im Bild präzise umschließen, zusammen mit Klassenlabels und Konfidenzwerten für jede Box. Orientierte Bounding Boxes sind besonders nützlich, wenn Objekte in verschiedenen Winkeln erscheinen, wie etwa bei Luftaufnahmen, wo herkömmliche achsenparallele Bounding Boxes unnötigen Hintergrund enthalten könnten.
YOLO26 OBB-Modelle verwenden das Suffix -obb, z. B. yolo26n-obb.pt, und sind auf DOTAv1 vortrainiert.
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
Visuelle Beispiele
| Schiffserkennung mittels OBB | Fahrzeugerkennung mittels OBB |
|---|---|
![]() | ![]() |
Modelle
Hier sind die vortrainierten YOLO26 OBB-Modelle dargestellt, welche auf dem DOTAv1-Datensatz vortrainiert wurden.
Modelle werden bei der ersten Verwendung automatisch vom neuesten Ultralytics Release heruntergeladen.
| Modell | Größe (Pixel) | mAPtest 50-95(e2e) | mAPtest 50(e2e) | Geschwindigkeit CPU ONNX (ms) | Geschwindigkeit 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-Werte beziehen sich auf ein Einzelmodell mit Multiscale auf dem DOTAv1-Datensatz.
Reproduziere dies mityolo val obb data=DOTAv1.yaml device=0 split=testund reiche die zusammengeführten Ergebnisse bei der DOTA-Evaluierung ein. - Geschwindigkeit gemittelt über DOTAv1 val-Bilder unter Verwendung einer Amazon EC2 P4d-Instanz.
Reproduziere dies mityolo val obb data=DOTAv1.yaml batch=1 device=0|cpu - Params- und FLOPs-Werte beziehen sich auf das fusionierte Modell nach
model.fuse(), das Conv- und BatchNorm-Schichten zusammenführt und bei End-to-End-Modellen den zusätzlichen One-to-Many-Erkennungskopf entfernt. Vortrainierte Checkpoints behalten die vollständige Trainingsarchitektur bei und können höhere Zahlen aufweisen.
Trainieren
Trainiere YOLO26n-obb auf dem DOTA8-Datensatz für 100 Epochen bei einer Bildgröße von 640. Eine vollständige Liste der verfügbaren Argumente findest du auf der Konfigurationsseite.
OBB-Winkel sind auf den Bereich 0–90 Grad begrenzt (exklusive 90). Winkel von 90 Grad oder mehr werden nicht unterstützt.
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
Datensatzformat
Das OBB-Datensatzformat findest du detailliert im Dataset Guide. Das YOLO OBB-Format bestimmt Bounding Boxes durch ihre vier Eckpunkte mit Koordinaten, die zwischen 0 und 1 normalisiert sind, gemäß dieser Struktur. Die Ultralytics Platform unterstützt OBB-Annotation mit einem speziellen Zeichenwerkzeug für orientierte Bounding Boxes:
class_index x1 y1 x2 y2 x3 y3 x4 y4
Intern verarbeitet YOLO Verluste und Ausgaben im xywhr-Format, das den Mittelpunkt (xy), die Breite, die Höhe und die Rotation der Bounding Box darstellt.
Validieren
Validiere die Genauigkeit des trainierten YOLO26n-obb-Modells auf dem DOTA8-Datensatz. Es sind keine Argumente erforderlich, da das model seine Trainings-data und Argumente als Modellattribute beibehält.
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 FNVorhersage
Verwende ein trainiertes YOLO26n-obb-Modell, um Vorhersagen auf Bildern auszuführen.
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
Siehe vollständige Details zum predict-Modus auf der Predict-Seite.
Exportieren
Exportiere ein YOLO26n-obb-Modell in ein anderes Format wie ONNX, CoreML usw.
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")Verfügbare YOLO26-obb-Exportformate sind in der folgenden Tabelle aufgeführt. Du kannst in jedes Format exportieren, indem du das format-Argument verwendest, z. B. format='onnx' oder format='engine'. Du kannst direkt mit exportierten Modellen vorhersagen oder validieren, z. B. yolo predict model=yolo26n-obb.onnx. Anwendungsbeispiele werden für dein Modell angezeigt, sobald der Export abgeschlossen ist.
| Format | format Argument | Modell | Metadaten | Argumente |
|---|---|---|---|---|
| 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 |
| DeepX | deepx | yolo26n-obb_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
Siehe vollständige export-Details auf der Seite Export.
Anwendungen in der Praxis
OBB-Erkennung mit YOLO26 hat zahlreiche praktische Anwendungen in verschiedenen Branchen:
- Maritime Verwaltung und Hafenmanagement: Erkennung von Schiffen und Wasserfahrzeugen in verschiedenen Winkeln für das Flottenmanagement und zur Überwachung.
- Stadtplanung: Analyse von Gebäuden und Infrastruktur anhand von Luftaufnahmen.
- Landwirtschaft: Überwachung von Nutzpflanzen und landwirtschaftlichen Geräten aus Drohnenaufnahmen.
- Energiesektor: Inspektion von Solarpaneelen und Windkraftanlagen bei unterschiedlicher Ausrichtung.
- Transportwesen: Verfolgung von Fahrzeugen auf Straßen und Parkplätzen aus verschiedenen Perspektiven.
Diese Anwendungen profitieren von der Fähigkeit von OBB, Objekte in jedem Winkel präzise zu umschließen, was eine genauere Erkennung ermöglicht als herkömmliche Bounding Boxes.
FAQ
Was sind Oriented Bounding Boxes (OBB) und wie unterscheiden sie sich von regulären Bounding Boxes?
Oriented Bounding Boxes (OBB) beinhalten einen zusätzlichen Winkel, um die Genauigkeit der Objektlokalisierung in Bildern zu verbessern. Anders als reguläre Bounding Boxes, die achsenparallele Rechtecke sind, können OBBs rotieren, um sich besser an die Orientierung des Objekts anzupassen. Dies ist besonders nützlich für Anwendungen, die eine präzise Objektplatzierung erfordern, wie etwa Luft- oder Satellitenbilder (Dataset Guide).
Wie trainiere ich ein YOLO26n-obb-Modell mit einem benutzerdefinierten Datensatz?
Um ein YOLO26n-obb-Modell mit einem benutzerdefinierten Datensatz zu trainieren, befolge das unten stehende Beispiel unter Verwendung von Python oder 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)Für weitere Trainingsargumente schaue im Bereich Konfiguration nach.
Welche Datensätze kann ich für das Training von YOLO26-OBB-Modellen verwenden?
YOLO26-OBB-Modelle sind auf Datensätzen wie DOTAv1 vortrainiert, aber du kannst jeden Datensatz verwenden, der für OBB formatiert ist. Detaillierte Informationen zu OBB-Datensatzformaten findest du im Dataset Guide.
Wie kann ich ein YOLO26-OBB-Modell in das ONNX-Format exportieren?
Das Exportieren eines YOLO26-OBB-Modells in das ONNX-Format ist mit Python oder CLI einfach:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Export the model
model.export(format="onnx")Für weitere Exportformate und Details schaue auf der Seite Export nach.
Wie validiere ich die Genauigkeit eines YOLO26n-obb-Modells?
Um ein YOLO26n-obb-Modell zu validieren, kannst du Python oder CLI-Befehle verwenden, wie unten dargestellt:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")Die vollständigen Validierungsdetails findest du im Abschnitt Val.

