YOLO Vision 2026:

Ausgerichtete Begrenzungsrahmen Objekterkennung#

Ultralytics YOLO oriented bounding box detection of boats in aerial imagery

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.

Tipp

YOLO26 OBB-Modelle verwenden das Suffix -obb, d. h. yolo26n-obb.pt, und sind auf DOTAv1 vorab trainiert.



Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢

Visuelle Beispiele#

Schifferkennung mit OBBFahrzeugerkennung mit OBB
Schiffserkennung mit OBBFahrzeugerkennung mit OBB

Models#

Hier sind vorab trainierte YOLO26 OBB-Modelle dargestellt, die auf dem DOTAv1-Dataset vorab trainiert wurden.

Modelle werden bei der ersten Verwendung automatisch aus dem neuesten Ultralytics-Release heruntergeladen.

ModellGröße
(Pixel)
mAPtest
50-95(e2e)
mAPtest
50(e2e)
Geschwindigkeit
CPU ONNX
(ms)
Geschwindigkeit
T4 TensorRT10
(ms)
Parameter
(M)
FLOPs
(B)
YOLO26n-obb102452.478.997.7 ± 0.92.8 ± 0.02.514.0
YOLO26s-obb102454.880.9218.0 ± 1.44.9 ± 0.19.855.1
YOLO26m-obb102455.381.0579.2 ± 3.810.2 ± 0.321.2183.3
YOLO26l-obb102456.281.6735.6 ± 3.113.0 ± 0.225.6230.0
YOLO26x-obb102456.781.71485.7 ± 11.530.5 ± 0.957.6516.5
  • mAPtest-Werte gelten für die Multiskalen-Auswertung eines einzelnen Modells auf dem DOTAv1-Dataset.
    Reproduziere dies mit yolo val obb data=DOTAv1.yaml device=0 split=test und reiche zusammengeführte Ergebnisse bei der DOTA-Auswertung ein.
  • Geschwindigkeit gemittelt über DOTAv1-Validierungsbilder unter Verwendung einer Amazon EC2 P4d-Instanz.
    Reproduziere dies mit yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu
  • Params- und FLOPs-Werte gelten für das fusionierte Modell nach model.fuse(), welches Conv- und BatchNorm-Schichten zusammenführt und bei End-to-End-Modellen den zusätzlichen One-to-Many-Erkennungskopf entfernt. Vorab trainierte Checkpoints behalten die vollständige Trainingsarchitektur bei und können höhere Anzahlen aufweisen.

Trainieren#

Trainiere YOLO26n-obb auf dem DOTA8-Dataset für 100 Epochen bei einer Bildgröße von 640. Eine vollständige Liste der verfügbaren Argumente findest du auf der Konfigurationsseite.

Hinweis

Ein OBB und seine Drehung um 180° sind identisch, daher ist die Drehung modulo 180° definiert und die Box hat keine Richtung. Trainings-Labels werden auf eine Langkantenform kanonisiert: Die Box-Breite w ist die längere Seite, der Winkel wird im Uhrzeigersinn von der positiven x-Achse zur Ausrichtung der w-Kante gemessen und in Bogenmaß in [-π/4, 3π/4) ([-45°, 135°)) gespeichert. Vorhersagen werden nicht kanonisiert, daher kann eine vorhergesagte Box die kurze Kante als w melden; siehe Ergebnisausgabe. Die Form [0°, 90°) ist die regulierte DOTA-Konvention und wird beim Training oder der Inferenz nicht angewendet.

Beispiel
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-Dataset-Format wird im Detail im Dataset-Leitfaden beschrieben. Das YOLO OBB-Format definiert Begrenzungsrahmen über ihre vier Eckpunkte mit zwischen 0 und 1 normierten Koordinaten gemäß dieser Struktur. Die Ultralytics Plattform-Annotation unterstützt OBB-Labels mit einem dedizierten Zeichenwerkzeug für ausgerichtete Begrenzungsrahmen:

class_index x1 y1 x2 y2 x3 y3 x4 y4

Intern verarbeitet YOLO Verluste und Ausgaben im Format xywhr, das den Mittelpunkt (xy), die Breite, die Höhe und die Rotation des Begrenzungsrahmens darstellt.

Validieren#

Validiere die Genauigkeit des trainierten YOLO26n-obb-Modells auf dem DOTA8-Dataset. Es sind keine Argumente erforderlich, da das model seine Trainings-data und -Argumente als Modellattribute behält.

Beispiel
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 FN

Vorhersagen#

Verwende ein trainiertes YOLO26n-obb-Modell, um Vorhersagen auf Bildern auszuführen.

Beispiel
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 box


Watch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA

Weitere Details zum predict-Modus findest du auf der Predict-Seite.

Ergebnisausgabe#

Die Erkennung ausgerichteter Begrenzungsrahmen gibt ein Results-Objekt pro Bild zurück. Das primäre Vorhersagefeld ist result.obb, welches gedrehte Boxen, Klassen-IDs und Konfidenzwerte für jedes erkannte Objekt enthält.

AttributTypFormBeschreibung
result.obbOBB(N)Orientierte Boxen.
result.obb.datatorch.float32(N,7/8)Rohe rotierte Boxen mit Konfidenz/Klasse.
result.obb.xywhrtorch.float32(N,5)xywhr gedrehte Boxen.
result.obb.xyxyxyxytorch.float32(N,4,2)Vier Eckpunkte.
result.obb.conftorch.float32(N,)Konfidenzwerte.

Labels werden auf die Langkantenkonvention kanonisiert, Vorhersagen jedoch nicht, weshalb result.obb.xywhr möglicherweise einen Wert w ausgibt, der kleiner als h ist, wobei die Rotation von der kurzen Kante aus gemessen wird. Beide Formen beschreiben dasselbe Rechteck, sodass result.obb.xyxyxyxy in beiden Fällen korrekt ist. Konvertiere die Ecken zurück, wenn nachfolgender Code die Langkantenform benötigt, und bedenke dabei, dass das Umschreiben der Box-Parameter die Reihenfolge der Ecken zyklisch verschieben kann:

from ultralytics.utils.ops import xyxyxyxy2xywhr

xywhr = xyxyxyxy2xywhr(result.obb.xyxyxyxy)  # w >= h, rotation in [-pi/4, 3pi/4)

Aufgabenspezifische Results-Felder für alle Aufgaben findest du im Abschnitt Predict Results by Task.

Exportieren#

Exportiere ein YOLO26n-obb-Modell in ein anderes Format wie ONNX, CoreML usw.

Beispiel
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 exportieren, indem du das Argument format verwendest, d. h. format='onnx' oder format='engine'. Du kannst direkt mit exportierten Modellen Vorhersagen treffen oder sie validieren, d. h. yolo predict model=yolo26n-obb.onnx. Anwendungsbeispiele werden für dein Modell nach Abschluss des Exports angezeigt.

Formatformat-ArgumentModellMetadatenArgumente
PyTorch-yolo26n-obb.pt-
TorchScripttorchscriptyolo26n-obb.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-obb.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-obb_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-obb_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-obb.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/imgsz, batch, device
MNNmnnyolo26n-obb.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-obb_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-obb_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-obb_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-obb_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-obb_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-obb_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-obb.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-obb_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-obb_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n-obb.aimodelimgsz, batch, quantize

Weitere Details zum export-Modus findest du auf der Export-Seite.

Anwendungen in der Praxis#

Die OBB-Erkennung mit YOLO26 hat zahlreiche praktische Anwendungen in verschiedenen Branchen:

  • Schifffahrts- und Hafenmanagement: Erkennung von Schiffen und Wasserfahrzeugen unter verschiedenen Winkeln für Flottenmanagement und Ü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.

FAQ#

  • Ausgerichtete Begrenzungsrahmen (OBB) beinhalten einen zusätzlichen Winkel, um die Genauigkeit der Lokalisierung von Objekten in Bildern zu verbessern. Im Gegensatz zu regulären Begrenzungsrahmen, bei denen es sich um achsenparallele Rechtecke handelt, können OBBs gedreht werden, um sich besser an die Ausrichtung des Objekts anzupassen. Dies ist besonders nützlich für Anwendungen, die eine präzise Objektplatzierung erfordern, wie etwa Luft- oder Satellitenbilder (Dataset-Leitfaden).

  • Um ein YOLO26n-obb-Modell mit einem eigenen Datensatz zu trainieren, befolge das unten stehende Beispiel mit Python oder der CLI:

    Beispiel
    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.

  • YOLO26-OBB-Modelle werden auf Datasets wie DOTAv1 vorab trainiert, aber du kannst jedes für OBB formatierte Dataset verwenden. Detaillierte Informationen zu OBB-Dataset-Formaten findest du im Dataset-Leitfaden.

  • Der Export eines YOLO26-OBB-Modells in das ONNX-Format ist einfach mit Python oder der CLI möglich:

    Beispiel
    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.

  • Um ein YOLO26n-obb-Modell zu validieren, kannst du Python oder CLI-Befehle wie unten gezeigt verwenden:

    Beispiel
    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 Abschnitt Val.

Kommentare