Link to this sectionOrientierte 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.
Das Ergebnis eines orientierten Objektdetektors ist eine Menge rotierter Bounding Boxes, die die Objekte im Bild genau umschließen, zusammen mit Klassenkennzeichnungen 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 🚢
Link to this sectionVisuelle Beispiele#
| Schifferkennung mit OBB | Fahrzeugerkennung mit OBB |
|---|---|
![]() | ![]() |
Link to this sectionModelle#
Hier sind die vortrainierten YOLO26 OBB-Modelle aufgeführt, die 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) | Parameter (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 Single-Model-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(), welches Conv- und BatchNorm-Layer zusammenführt und bei End-to-End-Modellen den zusätzlichen One-to-Many-Detection-Head entfernt. Vortrainierte Checkpoints behalten die vollständige Trainingsarchitektur bei und können höhere Anzahlen aufweisen.
Link to this sectionTrainieren#
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 Seite Konfiguration.
Eine OBB und ihre 180°-Drehung sind identisch, daher ist die Rotation modulo 180° definiert und die Box hat keine Richtung. Intern wird der Winkel im Bogenmaß gespeichert und auf [-π/4, 3π/4) ([-45°, 135°)) normalisiert; die Boxbreite w wird als die längere Seite genommen und der Winkel ist als der Winkel im Uhrzeigersinn von der positiven x-Achse zur Richtung von w definiert. Die Form [0°, 90°) ist die regularisierte DOTA-Konvention und wird nicht beim Training oder bei der Inferenz angewendet.
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
Link to this sectionDatensatzformat#
Das OBB-Datensatzformat findest du im Detail im Datensatz-Leitfaden. Das YOLO OBB-Format kennzeichnet 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 repräsentiert.
Link to this sectionValidieren#
Validiere die Genauigkeit des trainierten YOLO26n-obb-Modells auf dem DOTA8-Datensatz. Es werden keine Argumente benötigt, 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 FNLink to this sectionVorhersagen#
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.
Link to this sectionErgebnisausgabe#
Die Erkennung mit orientierten Bounding Boxes liefert ein Results-Objekt pro Bild. Das primäre Vorhersagefeld ist result.obb, welches rotierte Boxen, Klassen-IDs und Konfidenzwerte für jedes erkannte Objekt enthält.
| Attribut | Typ | Form | Beschreibung |
|---|---|---|---|
result.obb | OBB | (N) | Orientierte Boxen. |
result.obb.data | torch.float32 | (N,7/8) | Rohe rotierte Boxen mit Konfidenz/Klasse. |
result.obb.xywhr | torch.float32 | (N,5) | xywhr rotierte Boxen. |
result.obb.xyxyxyxy | torch.float32 | (N,4,2) | Vier Eckpunkte. |
result.obb.conf | torch.float32 | (N,) | Konfidenzwerte. |
Für aufgaben-spezifische Results-Felder für jede Aufgabe siehe den Abschnitt Vorhersageergebnisse nach Aufgabe.
Link to this sectionExportieren#
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")Die verfügbaren YOLO26-obb-Exportformate findest du in der folgenden Tabelle. Du kannst mit dem Argument format in jedes Format exportieren, 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, quantize, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-obb.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-obb_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-obb.engine | ✅ | imgsz, quantize, dynamic, simplify, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-obb.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz, keras, quantize, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-obb.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-obb.tflite | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-obb_edgetpu.tflite | ✅ | imgsz, quantize, data, fraction, device |
| TF.js | tfjs | yolo26n-obb_web_model/ | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-obb_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-obb.mnn | ✅ | imgsz, batch, quantize, device |
| NCNN | ncnn | yolo26n-obb_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-obb_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-obb_rknn_model/ | ✅ | imgsz, batch, name, quantize, data, fraction, device |
| ExecuTorch | executorch | yolo26n-obb_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-obb_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-obb_deepx_model/ | ✅ | imgsz, quantize, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-obb_qnn.onnx | ✅ | imgsz, batch, name, quantize, data, fraction, device |
Siehe vollständige export Details auf der Export Seite.
Link to this sectionAnwendungen in der Praxis#
Die OBB-Erkennung mit YOLO26 hat zahlreiche praktische Anwendungen in verschiedenen Branchen:
- Schifffahrt 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 Luftbildern.
- Landwirtschaft: Überwachung von Erntegut und landwirtschaftlichen Maschinen durch Drohnenaufnahmen.
- Energiesektor: Inspektion von Solarpaneelen und Windkraftanlagen in unterschiedlichen Ausrichtungen.
- Verkehrswesen: Verfolgung von Fahrzeugen auf Straßen und Parkplätzen aus verschiedenen Perspektiven.
Diese Anwendungen profitieren von der Fähigkeit von OBB, Objekte präzise in jedem Winkel zu erfassen, was eine genauere Erkennung als herkömmliche Bounding Boxes ermöglicht.
Link to this sectionFAQ#
Link to this sectionWas sind orientierte Bounding Boxes (OBB) und wie unterscheiden sie sich von regulären Bounding Boxes?#
Orientierte Bounding Boxes (OBB) enthalten einen zusätzlichen Winkel, um die Genauigkeit der Objektlokalisierung in Bildern zu verbessern. Im Gegensatz zu regulären Bounding Boxes, die achsenparallele Rechtecke sind, können OBBs rotieren, um sich besser an die Ausrichtung des Objekts anzupassen. Dies ist besonders nützlich für Anwendungen, die eine präzise Objektplatzierung erfordern, wie z. B. Luft- oder Satellitenbilder (Datensatz-Leitfaden).
Link to this sectionWie trainiere ich ein YOLO26n-obb-Modell mit einem eigenen Datensatz?#
Um ein YOLO26n-obb-Modell mit einem eigenen Datensatz zu trainieren, befolge das unten stehende Beispiel mit Python oder der 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)Weitere Trainingsargumente findest du im Abschnitt Konfiguration.
Link to this sectionWelche 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 Datensatz-Leitfaden.
Link to this sectionWie kann ich ein YOLO26-OBB-Modell in das ONNX-Format exportieren?#
Der Export eines YOLO26-OBB-Modells in das ONNX-Format ist einfach mit Python oder der CLI möglich:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Export the model
model.export(format="onnx")Weitere Exportformate und Details findest du auf der Export-Seite.
Link to this sectionWie validiere ich die Genauigkeit eines YOLO26n-obb-Modells?#
Um ein YOLO26n-obb-Modell zu validieren, kannst du Python oder CLI-Befehle wie unten gezeigt verwenden:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")Siehe die vollständigen Validierungsdetails im Abschnitt Val.

