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 |
---|---|
![]() |
![]() |
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 durchyolo 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 durchyolo 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.