Vai al contenuto

Rilevamento di oggetti con Bounding Box orientate

Il rilevamento di oggetti orientati fa un passo avanti rispetto al rilevamento di oggetti e introduce un angolo in più per individuare con maggiore precisione gli oggetti 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)

Guarda: Rilevamento di oggetti con YOLOv8-OBB utilizzando Ultralytics HUB

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 dimensioni dell'immagine 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 sua 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 formato diverso 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 seguente. Puoi esportare in qualsiasi formato utilizzando l'opzione format argomento, vale a dire format='onnx' o format='engine'. Puoi prevedere 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, 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 Bordo TPU edgetpu yolov8n-obb_edgetpu.tflite imgsz, batch
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

Vedi tutto export dettagli nella sezione Esportazione pagina.



Creato 2024-01-05, Aggiornato 2024-05-08
Autori: Burhan-Q (3), glenn-jocher (16), Laughing-q (3), AyushExel (1)

Commenti