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.

Tipp

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 OBBFahrzeugerkennung mittels OBB
Schiffserkennung mittels OBBFahrzeugerkennung 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.

ModellGröße
(Pixel)
mAPtest
50-95(e2e)
mAPtest
50(e2e)
Geschwindigkeit
CPU ONNX
(ms)
Geschwindigkeit
T4 TensorRT10
(ms)
Params
(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 beziehen sich auf ein Einzelmodell mit Multiscale auf dem DOTAv1-Datensatz.
    Reproduziere dies mit yolo val obb data=DOTAv1.yaml device=0 split=test und 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 mit yolo 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.

Hinweis

OBB-Winkel sind auf den Bereich 0–90 Grad begrenzt (exklusive 90). Winkel von 90 Grad oder mehr werden nicht unterstützt.

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

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

Vorhersage

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

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.

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

Formatformat ArgumentModellMetadatenArgumente
PyTorch-yolo26n-obb.pt-
TorchScripttorchscriptyolo26n-obb.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-obb.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-obb_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-obb_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-obb.pbimgsz, batch, device
TF Litetfliteyolo26n-obb.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-obb_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/imgsz, batch, device
MNNmnnyolo26n-obb.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-obb_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-obb_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-obb_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-obb_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-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:

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)

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:

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

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

Kommentare