Vai al contenuto

Rilevamento di oggetti con Bounding Box orientati

Il rilevamento di oggetti orientati fa un passo avanti rispetto al rilevamento di oggetti e introduce un angolo in più per individuare gli oggetti in modo più preciso in un'immagine.

L'output di un rilevatore di oggetti orientato è un insieme di caselle di delimitazione ruotate che racchiudono esattamente gli oggetti nell'immagine, insieme alle etichette di classe e ai punteggi di confidenza per ogni casella. Il rilevamento di oggetti è una buona scelta quando devi identificare gli oggetti di interesse in una scena, ma non hai bisogno di sapere esattamente dove si trova l'oggetto o la sua forma esatta.

Suggerimento

YOLOv8 I modelli OBB utilizzano il metodo -obb suffisso, cioè yolov8n-obb.pt e sono preaddestrati su DOTAv1.



Guarda: Rilevamento di oggetti utilizzando Ultralytics YOLOv8 Oriented Bounding Boxes (YOLOv8-OBB)

Campioni visivi

Rilevamento delle navi tramite OBB Rilevamento del veicolo tramite OBB
Rilevamento delle navi tramite OBB Rilevamento del veicolo tramite OBB

Modelli

YOLOv8 Qui vengono mostrati i modelli OBB preaddestrati sul dataset DOTAv1.

I modelli vengono scaricati automaticamente dall'ultimarelease di Ultralytics al primo utilizzo.

Modello dimensione
(pixel)
mAPtest
50
Velocità
CPU ONNX
(ms)
Velocità
A100 TensorRT
(ms)
params
(M)
FLOP
(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 I valori sono per il modello singolo multiscala su Test DOTAv1 set di dati.
    Riproduci da yolo val obb data=DOTAv1.yaml device=0 split=test e inviare i risultati unificati a Valutazione DOTA.
  • Velocità mediata sulle immagini DOTAv1 val utilizzando una Amazon EC2 P4d istanza.
    Riproduci da yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

Treno

Treno YOLOv8n-obb sul dota8.yaml per 100 epoche con immagini di dimensioni 640. Per un elenco completo degli argomenti disponibili, consulta la sezione Configurazione pagina.

Esempio

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

Formato del set di dati

Il formato del set di dati OBB è descritto in dettaglio nella Guida ai set di dati.

Val

Convalida l'accuratezza del modello addestrato YOLOv8n-obb sul dataset DOTA8. Non è necessario passare alcun argomento in quanto il modello model mantiene la formazione data e gli argomenti come attributi del modello.

Esempio

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

Prevedere

Utilizza un modello YOLOv8n-obb addestrato per eseguire previsioni sulle immagini.

Esempio

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

Vedi tutto predict i dettagli della modalità nella sezione Prevedere pagina.

Esportazione

Esporta un modello YOLOv8n-obb in un altro formato come ONNX, CoreML, ecc.

Esempio

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

I formati di esportazione disponibili di YOLOv8-obb sono riportati nella tabella sottostante. Puoi fare previsioni o convalidare direttamente i modelli esportati, ad es. yolo predict model=yolov8n-obb.onnx. Al termine dell'esportazione vengono mostrati degli esempi di utilizzo per il tuo modello.

Formato format Argomento Modello Metadati Argomenti
PyTorch - yolov8n-obb.pt -
TorchScript torchscript yolov8n-obb.torchscript imgsz, optimize
ONNX onnx yolov8n-obb.onnx imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n-obb_openvino_model/ imgsz, half, int8
TensorRT engine yolov8n-obb.engine imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n-obb.mlpackage imgsz, half, int8, nms
TF SavedModel saved_model yolov8n-obb_saved_model/ imgsz, keras
TF GraphDef pb yolov8n-obb.pb imgsz
TF Lite tflite yolov8n-obb.tflite imgsz, half, int8
TF Bordo TPU edgetpu yolov8n-obb_edgetpu.tflite imgsz
TF.js tfjs yolov8n-obb_web_model/ imgsz, half, int8
PaddlePaddle paddle yolov8n-obb_paddle_model/ imgsz
NCNN ncnn yolov8n-obb_ncnn_model/ imgsz, half

Vedi tutto export dettagli nella sezione Esportazione pagina.



Creato 2024-01-05, Aggiornato 2024-03-03
Autori: glenn-jocher (12), Laughing-q (3), AyushExel (1)

Commenti