Zum Inhalt springen

Orientierte Bounding Boxes Objekterkennung

Die Erkennung von ausgerichteten Objekten 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 von rotierten Begrenzungsrahmen, die die Objekte im Bild präzise umschließen, zusammen mit Klassenbezeichnungen und Konfidenzwerten für jeden Rahmen. Orientierte Begrenzungsrahmen sind besonders nützlich, wenn Objekte in verschiedenen Winkeln erscheinen, wie z. B. in Luftaufnahmen, wo traditionelle achsenparallele Begrenzungsrahmen unnötigen Hintergrund enthalten können.

Tipp

YOLO11 OBB-Modelle verwenden die -obb Suffix, d.h. yolo11n-obb.pt und sind vortrainiert auf DOTAv1.



Ansehen: Objekterkennung mit Ultralytics YOLO Oriented Bounding Boxes (YOLO-OBB)

Visuelle Beispiele

Schiffserkennung mit OBB Fahrzeugerkennung mit OBB
Schiffserkennung mit OBB Fahrzeugerkennung mit OBB

Modelle

YOLO11 vortrainierte OBB-Modelle werden hier gezeigt, die auf dem DOTAv1-Datensatz vortrainiert sind.

Modelle werden beim ersten Gebrauch automatisch von der neuesten Ultralytics Version heruntergeladen.

Modell Größe
(Pixel)
mAPtest
50
Geschwindigkeit
CPU ONNX
(ms)
Geschwindigkeit
T4 TensorRT10
(ms)
Parameter
(M)
FLOPs
(B)
YOLO11n-obb 1024 78.4 117.6 ± 0.8 4.4 ± 0.0 2.7 17.2
YOLO11s-obb 1024 79.5 219.4 ± 4.0 5.1 ± 0.0 9.7 57.5
YOLO11m-obb 1024 80.9 562.8 ± 2.9 10.1 ± 0.4 20.9 183.5
YOLO11l-obb 1024 81.0 712.5 ± 5.0 13.5 ± 0.6 26.2 232.0
YOLO11x-obb 1024 81.3 1408.6 ± 7.7 28.6 ± 1.0 58.8 520.2
  • mAPtest Werte gelten für Single-Model Multiscale auf DOTAv1 Datensatz.
    Reproduzieren durch yolo val obb data=DOTAv1.yaml device=0 split=test und übermitteln zusammengeführte Ergebnisse an DOTA-Evaluierung.
  • Geschwindigkeit gemittelt über DOTAv1 val Bilder mit einem Amazon EC2 P4d Instanz.
    Reproduzieren durch yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

Trainieren

Trainieren Sie YOLO11n-obb auf dem DOTA8-Datensatz für 100 Epochen bei einer Bildgröße von 640. Eine vollständige Liste der verfügbaren Argumente finden Sie auf der Konfigurations-Seite.

Hinweis

OBB-Winkel sind auf den Bereich 0-90 Grad (ohne 90) beschränkt. Winkel von 90 Grad oder mehr werden nicht unterstützt.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.yaml")  # build a new model from YAML
model = YOLO("yolo11n-obb.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo11n-obb.yaml").load("yolo11n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolo11n-obb.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml pretrained=yolo11n-obb.pt epochs=100 imgsz=640



Ansehen: Wie man Ultralytics YOLO-OBB (Oriented Bounding Boxes) Modelle auf dem DOTA-Datensatz mit Ultralytics HUB trainiert

Datensatzformat

Das OBB-Datensatzformat wird im Datensatz-Leitfaden ausführlich beschrieben. Das YOLO-OBB-Format kennzeichnet Begrenzungsrahmen durch ihre vier Eckpunkte, deren Koordinaten zwischen 0 und 1 normalisiert sind, und folgt dieser Struktur:

class_index x1 y1 x2 y2 x3 y3 x4 y4

Intern verarbeitet YOLO Verluste und Ausgaben im xywhr Format, das den BegrenzungsrahmenMittelpunkt (xy), die Breite, die Höhe und die Drehung von 's darstellt.

Validieren

Validierung des trainierten YOLO11n-obb Modells Genauigkeit auf dem DOTA8-Datensatz. Es sind keine Argumente erforderlich, da die model behält sein Training data und Argumente als Modellattribute.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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 contains map50-95(B) of each category
yolo obb val model=yolo11n-obb.pt data=dota8.yaml         # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml # val custom model

Vorhersagen

Verwenden Sie ein trainiertes YOLO11n-obb-Modell, um Vorhersagen auf Bildern auszuführen.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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
yolo obb predict model=yolo11n-obb.pt source='https://ultralytics.com/images/boats.jpg'  # predict with official model
yolo obb predict model=path/to/best.pt source='https://ultralytics.com/images/boats.jpg' # predict with custom model



Ansehen: So erkennen und verfolgen Sie Lagertanks mit Ultralytics YOLO-OBB | Orientierte Begrenzungsrahmen | DOTA

Vollständige predict Details zum Modus finden Sie auf der Vorhersagen Seite.

Export

Exportieren Sie ein YOLO11n-obb-Modell in ein anderes Format wie ONNX, CoreML usw.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

Verfügbare YOLO11-obb-Exportformate sind in der Tabelle unten aufgeführt. Sie können in jedes Format exportieren, indem Sie die format Argument in ein beliebiges Format exportieren, z. B. format='onnx' oder format='engine'. Sie können direkt mit exportierten Modellen Vorhersagen treffen oder diese validieren, z. B. yolo predict model=yolo11n-obb.onnx. Anwendungsbeispiele werden nach Abschluss des Exports für Ihr Modell angezeigt.

Format format Argument Modell Metadaten Argumente
PyTorch - yolo11n-obb.pt -
TorchScript torchscript yolo11n-obb.torchscript imgsz, half, dynamic, optimize, nms, batch, device
ONNX onnx yolo11n-obb.onnx imgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINO openvino yolo11n-obb_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRT engine yolo11n-obb.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreML coreml yolo11n-obb.mlpackage imgsz, half, int8, nms, batch, device
TF SavedModel saved_model yolo11n-obb_saved_model/ imgsz, keras, int8, nms, batch, device
TF GraphDef pb yolo11n-obb.pb imgsz, batch, device
TF Lite tflite yolo11n-obb.tflite imgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPU edgetpu yolo11n-obb_edgetpu.tflite imgsz, device
TF.js tfjs yolo11n-obb_web_model/ imgsz, half, int8, nms, batch, device
PaddlePaddle paddle yolo11n-obb_paddle_model/ imgsz, batch, device
MNN mnn yolo11n-obb.mnn imgsz, batch, int8, half, device
NCNN ncnn yolo11n-obb_ncnn_model/ imgsz, half, batch, device
IMX500 imx yolo11n-obb_imx_model/ imgsz, int8, data, fraction, device
RKNN rknn yolo11n-obb_rknn_model/ imgsz, batch, name, device

Vollständige export Details auf der Export Seite.

Anwendungen in der realen Welt

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

  • Maritime und Hafenverwaltung: Erkennung von Schiffen und Booten in verschiedenen Winkeln für Flottenmanagement und -überwachung.
  • Stadtplanung: Analyse von Gebäuden und Infrastruktur aus Luftaufnahmen.
  • Landwirtschaft: Überwachung von Feldfrüchten und landwirtschaftlichen Geräten aus Drohnenaufnahmen.
  • Energiesektor: Inspektion von Solarmodulen und Windkraftanlagen in verschiedenen Ausrichtungen.
  • Transport: 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 anzupassen, was eine genauere Erkennung als herkömmliche Begrenzungsrahmen ermöglicht.

FAQ

Was sind Oriented Bounding Boxes (OBB) und wie unterscheiden sie sich von regulären Bounding Boxes?

Orientierte Begrenzungsrahmen (OBB) enthalten einen zusätzlichen Winkel, um die Genauigkeit der Objekterkennung in Bildern zu verbessern. Im Gegensatz zu regulären Begrenzungsrahmen, die achsenparallele Rechtecke sind, können OBBs gedreht werden, um sich besser an der 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).

Wie trainiere ich ein YOLO11n-obb-Modell mit einem benutzerdefinierten Datensatz?

Um ein YOLO11n-obb-Modell mit einem benutzerdefinierten Datensatz zu trainieren, folgen Sie dem unten stehenden Beispiel mit Python oder CLI:

Beispiel

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo11n-obb.pt")

# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)
yolo obb train data=path/to/custom_dataset.yaml model=yolo11n-obb.pt epochs=100 imgsz=640

Weitere Trainingsargumente finden Sie im Abschnitt Konfiguration.

Welche Datensätze kann ich für das Training von YOLO11-OBB-Modellen verwenden?

YOLO11-OBB-Modelle sind auf Datensätzen wie DOTAv1 vortrainiert, aber Sie können jeden für OBB formatierten Datensatz verwenden. Detaillierte Informationen zu OBB-Dataset-Formaten finden Sie im Dataset-Leitfaden.

Wie kann ich ein YOLO11-OBB-Modell in das ONNX-Format exportieren?

Das Exportieren eines YOLO11-OBB-Modells in das ONNX-Format ist unkompliziert, entweder mit Python oder CLI:

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.pt")

# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx

Weitere Exportformate und Details finden Sie auf der Export-Seite.

Wie validiere ich die Genauigkeit eines YOLO11n-obb-Modells?

Um ein YOLO11n-obb-Modell zu validieren, können Sie Python- oder CLI-Befehle verwenden, wie unten gezeigt:

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.pt")

# Validate the model
metrics = model.val(data="dota8.yaml")
yolo obb val model=yolo11n-obb.pt data=dota8.yaml

Vollständige Validierungsdetails finden Sie im Abschnitt Val.



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 5 Tagen

Kommentare