Overslaan naar inhoud

Objectdetectie met georiënteerde begrenzende vakken

Georiënteerde objectdetectie gaat een stap verder dan objectdetectie en introduceert een extra hoek om objecten nauwkeuriger te lokaliseren in een afbeelding.

De uitvoer van een georiënteerde objectdetector is een verzameling geroteerde begrenzende vakken die de objecten in de afbeelding precies omsluiten, samen met klasse-labels en vertrouwensscores voor elk vak. Objectdetectie is een goede keuze als je interessante objecten in een scène moet identificeren, maar niet precies hoeft te weten waar het object zich bevindt of wat de exacte vorm ervan is.

Tip

YOLOv8 OBB-modellen gebruiken de -obb achtervoegsel, dus yolov8n-obb.pt en zijn voorgetraind op DOTAv1.


Kijken: Objectdetectie met behulp van Ultralytics YOLOv8 Georiënteerde begrenzende vakken (YOLOv8-OBB)

Kijken: Objectdetectie met YOLOv8-OBB met Ultralytics HUB

Visuele voorbeelden

Scheepsdetectie met OBB Voertuigdetectie met OBB
Scheepsdetectie met OBB Voertuigdetectie met OBB

Modellen

YOLOv8 Hier worden voorgetrainde OBB-modellen getoond, die zijn voorgetraind op de DOTAv1 dataset.

Modellen worden bij het eerste gebruik automatisch gedownload van de nieuwste Ultralytics release.

Model grootte
(pixels)
mAPtest
50
Snelheid
CPU ONNX
(ms)
Snelheid
A100 TensorRT
(ms)
params
(M)
FLOP's
(B)
YOLOv8n-obb 1024 78.0 204.77 3.57 3.1 23.3
YOLOv8s-obb 1024 79.5 424.88 4.07 11.4 76.3
YOLOv8m-obb 1024 80.5 763.48 7.61 26.4 208.6
YOLOv8l-obb 1024 80.7 1278.42 11.83 44.5 433.8
YOLOv8x-obb 1024 81.36 1759.10 13.23 69.5 676.7
  • mAPtest waarden zijn voor één model multischaal op DOTAv1 test dataset.
    Reproduceren door yolo val obb data=DOTAv1.yaml device=0 split=test en stuur de samengevoegde resultaten naar DOTA evaluatie.
  • Snelheid gemiddeld over DOTAv1 val beelden met behulp van een Amazon EC2 P4d voorbeeld.
    Reproduceren door yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

Trein

Trein YOLOv8n-obb op de dota8.yaml dataset voor 100 epochs bij afbeeldingsgrootte 640. Voor een volledige lijst van beschikbare argumenten zie de Configuratie pagina.

Voorbeeld

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-obb.yaml")  # build a new model from YAML
model = YOLO("yolov8n-obb.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolov8n-obb.yaml").load("yolov8n.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=yolov8n-obb.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolov8n-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=yolov8n-obb.yaml pretrained=yolov8n-obb.pt epochs=100 imgsz=640

Formaat dataset

Het formaat van de OBB dataset is in detail te vinden in de Dataset Gids.

Val

Valideer de nauwkeurigheid van het getrainde YOLOv8n-obb model op de DOTA8 dataset. Er hoeft geen argument te worden doorgegeven als de model behoudt zijn opleiding data en argumenten als modelattributen.

Voorbeeld

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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=yolov8n-obb.pt data=dota8.yaml  # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml  # val custom model

Voorspel

Gebruik een getraind YOLOv8n-obb model om voorspellingen op afbeeldingen uit te voeren.

Voorbeeld

from ultralytics import YOLO

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

Bekijk volledig predict details over de modus in de Voorspel pagina.

Exporteer

Exporteer een YOLOv8n-obb model naar een ander formaat zoals ONNX, CoreML, enz.

Voorbeeld

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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=yolov8n-obb.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

De beschikbare YOLOv8-obb exportformaten staan in de tabel hieronder. Je kunt naar elk formaat exporteren met de format argument, d.w.z. format='onnx' of format='engine'. Je kunt direct voorspellen of valideren op geëxporteerde modellen, d.w.z. yolo predict model=yolov8n-obb.onnx. Gebruiksvoorbeelden worden getoond voor je model nadat het exporteren is voltooid.

Formaat format Argument Model Metagegevens Argumenten
PyTorch - yolov8n-obb.pt -
TorchScript torchscript yolov8n-obb.torchscript imgsz, optimize, batch
ONNX onnx yolov8n-obb.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n-obb_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n-obb.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n-obb.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n-obb_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n-obb.pb imgsz, batch
TF Lite tflite yolov8n-obb.tflite imgsz, half, int8, batch
TF Rand TPU edgetpu yolov8n-obb_edgetpu.tflite imgsz
TF.js tfjs yolov8n-obb_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n-obb_paddle_model/ imgsz, batch
NCNN ncnn yolov8n-obb_ncnn_model/ imgsz, half, batch

Bekijk volledig export details in de Exporteer pagina.

FAQ

Wat zijn Oriented Bounding Boxes (OBB) en waarin verschillen ze van gewone bounding boxes?

Oriented Bounding Boxes (OBB) bevatten een extra hoek om de nauwkeurigheid van de lokalisatie van objecten in afbeeldingen te verbeteren. In tegenstelling tot gewone bounding boxes, die rechthoeken zijn met een as uitgelijnd, kunnen OBB's roteren om beter aan te sluiten bij de oriëntatie van het object. Dit is vooral handig voor toepassingen die een precieze plaatsing van objecten vereisen, zoals lucht- of satellietbeelden(Dataset Gids).

Hoe train ik een YOLOv8n-obb model met een aangepaste dataset?

Om een YOLOv8n-obb model te trainen met een aangepaste dataset, volg je het onderstaande voorbeeld met Python of CLI:

Voorbeeld

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolov8n-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=yolov8n-obb.pt epochs=100 imgsz=640

Raadpleeg de sectie Configuratie voor meer trainingsargumenten.

Welke datasets kan ik gebruiken voor het trainen van YOLOv8-OBB modellen?

YOLOv8-OBB modellen zijn voorgetraind op datasets zoals DOTAv1, maar je kunt elke dataset gebruiken die geformatteerd is voor OBB. Gedetailleerde informatie over OBB dataset formaten kun je vinden in de Dataset Gids.

Hoe kan ik een YOLOv8-OBB model exporteren naar de indeling ONNX ?

Het exporteren van een YOLOv8-OBB model naar het formaat ONNX is eenvoudig met behulp van Python of CLI:

Voorbeeld

from ultralytics import YOLO

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

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

Raadpleeg de pagina Exporteren voor meer exportformaten en details.

Hoe valideer ik de nauwkeurigheid van een YOLOv8n-obb model?

Om een YOLOv8n-obb model te valideren, kun je de commando's Python of CLI gebruiken, zoals hieronder wordt weergegeven:

Voorbeeld

from ultralytics import YOLO

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

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

Zie de volledige validatiedetails in het gedeelte Val.



Aangemaakt 2024-01-05, Bijgewerkt 2024-07-04
Auteurs: glenn-jocher (22), Burhan-Q (4), Laughing-q (3), AyushExel (1)

Reacties