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 genauer zu lokalisieren.
Die Ausgabe eines orientierten Objektdetektors ist eine Menge rotierter 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 in 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#
| Schiffserkennung mittels OBB | Fahrzeugerkennung mittels OBB |
|---|---|
![]() | ![]() |
Link to this sectionModelle#
Hier sind die vortrainierten YOLO26 OBB-Modelle aufgeführt, die auf dem DOTAv1-Datensatz trainiert 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 das Einzelmodell im Multiscale-Verfahren 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-Validierungsbilder unter Verwendung einer Amazon EC2 P4d-Instanz.
Reproduziere dies mityolo val obb data=DOTAv1.yaml batch=1 device=0|cpu - Parameter- und FLOPs-Werte beziehen sich auf das gefuste 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 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 Konfigurationsseite.
Eine OBB und ihre 180°-Rotation 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 Box-Breite w wird als die längere Seite angenommen 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 beim Training oder der Inferenz nicht 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 ist detailliert im Dataset Guide beschrieben. 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.
Link to this sectionValidierung#
Validiert die Genauigkeit eines 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 FNLink to this sectionVorhersage#
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 predict Modus-Details auf der Predict Seite.
Link to this sectionErgebnisausgabe#
Die Detektion 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 aufgabenspezifische Results Felder über alle Aufgaben hinweg, siehe den Abschnitt Predict Ergebnisse 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")Verfügbare YOLO26-obb-Exportformate sind in der Tabelle unten aufgeführt. Du kannst in jedes Format unter Verwendung des format-Arguments 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 nach Abschluss des Exports angezeigt.
| 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, int8, dynamic, simplify, opset, nms, batch, data, fraction, 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, int8, data, fraction, 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 |
| Qualcomm QNN | qnn | yolo26n-obb_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
Sieh dir die vollständigen export-Details auf der Export-Seite an.
Link to this sectionReale Anwendungen#
OBB-Detektion 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 aus Luftaufnahmen.
- Landwirtschaft: Überwachung von Nutzpflanzen und landwirtschaftlichen Geräten aus Drohnenaufnahmen.
- Energiesektor: Inspektion von Solarmodulen und Windkraftanlagen bei unterschiedlichen Ausrichtungen.
- Verkehr: Nachverfolgung von Fahrzeugen auf Straßen und Parkplätzen aus verschiedenen Perspektiven.
Diese Anwendungen profitieren von der Fähigkeit von OBB, Objekte in jedem beliebigen Winkel präzise zu umschließen, was eine genauere Erkennung als bei herkömmlichen Bounding Boxes ermöglicht.
Link to this sectionFAQ#
Link to this sectionWas sind Oriented Bounding Boxes (OBB) und wie unterscheiden sie sich von regulären Bounding Boxes?#
Oriented 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 sich OBBs drehen, 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 (Dataset Guide).
Link to this sectionWie 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)Weitere Trainingsargumente findest du im Abschnitt Configuration.
Link to this sectionWelche Datensätze kann ich zum Trainieren von YOLO26-OBB Modellen verwenden?#
YOLO26-OBB Modelle sind auf Datensätzen wie DOTAv1 vortrainiert, aber du kannst jeden für OBB formatierten Datensatz verwenden. Detaillierte Informationen zu OBB Datensatzformaten findest du im Dataset Guide.
Link to this sectionWie 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 ganz einfach:
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 die unten gezeigten Python oder CLI Befehle verwenden:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")Vollständige Validierungsdetails findest du im Val Abschnitt.

