Python Utilizzo
Benvenuto nella documentazione sull'uso di YOLOv8 Python ! Questa guida è stata pensata per aiutarti a integrare perfettamente YOLOv8 nei tuoi progetti Python per il rilevamento, la segmentazione e la classificazione degli oggetti. Qui imparerai a caricare e utilizzare i modelli pre-addestrati, ad addestrare nuovi modelli e a eseguire previsioni sulle immagini. L'interfaccia di Python , facile da usare, è una risorsa preziosa per chiunque voglia incorporare YOLOv8 nei propri progetti Python , consentendoti di implementare rapidamente funzionalità avanzate di rilevamento degli oggetti. Cominciamo!
Guarda: Mastering Ultralytics YOLOv8 : Python
Ad esempio, gli utenti possono caricare un modello, addestrarlo, valutarne le prestazioni su un set di validazione e persino esportarlo in formato ONNX con poche righe di codice.
Python
from ultralytics import YOLO
# Create a new YOLO model from scratch
model = YOLO('yolov8n.yaml')
# Load a pretrained YOLO model (recommended for training)
model = YOLO('yolov8n.pt')
# Train the model using the 'coco8.yaml' dataset for 3 epochs
results = model.train(data='coco8.yaml', epochs=3)
# Evaluate the model's performance on the validation set
results = model.val()
# Perform object detection on an image using the model
results = model('https://ultralytics.com/images/bus.jpg')
# Export the model to ONNX format
success = model.export(format='onnx')
Treno
La modalità Train è utilizzata per addestrare un modello YOLOv8 su un set di dati personalizzato. In questa modalità , il modello viene addestrato utilizzando il set di dati e gli iperparametri specificati. Il processo di addestramento prevede l'ottimizzazione dei parametri del modello in modo che possa prevedere con precisione le classi e le posizioni degli oggetti in un'immagine.
Treno
Val
La modalità Val è utilizzata per convalidare un modello YOLOv8 dopo che è stato addestrato. In questa modalità , il modello viene valutato su un set di validazione per misurarne l'accuratezza e le prestazioni di generalizzazione. Questa modalità può essere utilizzata per mettere a punto gli iperparametri del modello per migliorarne le prestazioni.
Val
Prevedere
La modalità Predict è utilizzata per fare previsioni utilizzando un modello YOLOv8 addestrato su nuove immagini o video. In questa modalità , il modello viene caricato da un file di checkpoint e l'utente può fornire immagini o video per eseguire l'inferenza. Il modello predice le classi e le posizioni degli oggetti nelle immagini o nei video in ingresso.
Prevedere
from ultralytics import YOLO
from PIL import Image
import cv2
model = YOLO("model.pt")
# accepts all formats - image/dir/Path/URL/video/PIL/ndarray. 0 for webcam
results = model.predict(source="0")
results = model.predict(source="folder", show=True) # Display preds. Accepts all YOLO predict arguments
# from PIL
im1 = Image.open("bus.jpg")
results = model.predict(source=im1, save=True) # save plotted images
# from ndarray
im2 = cv2.imread("bus.jpg")
results = model.predict(source=im2, save=True, save_txt=True) # save predictions as labels
# from list of PIL/ndarray
results = model.predict(source=[im1, im2])
# results would be a list of Results object including all the predictions by default
# but be careful as it could occupy a lot memory when there're many images,
# especially the task is segmentation.
# 1. return as a list
results = model.predict(source="folder")
# results would be a generator which is more friendly to memory by setting stream=True
# 2. return as a generator
results = model.predict(source=0, stream=True)
for result in results:
# Detection
result.boxes.xyxy # box with xyxy format, (N, 4)
result.boxes.xywh # box with xywh format, (N, 4)
result.boxes.xyxyn # box with xyxy format but normalized, (N, 4)
result.boxes.xywhn # box with xywh format but normalized, (N, 4)
result.boxes.conf # confidence score, (N, 1)
result.boxes.cls # cls, (N, 1)
# Segmentation
result.masks.data # masks, (N, H, W)
result.masks.xy # x,y segments (pixels), List[segment] * N
result.masks.xyn # x,y segments (normalized), List[segment] * N
# Classification
result.probs # cls prob, (num_class, )
# Each result is composed of torch.Tensor by default,
# in which you can easily use following functionality:
result = result.cuda()
result = result.cpu()
result = result.to("cpu")
result = result.numpy()
Esportazione
La modalità di esportazione è utilizzata per esportare un modello YOLOv8 in un formato utilizzabile per la distribuzione. In questa modalità , il modello viene convertito in un formato che può essere utilizzato da altre applicazioni software o dispositivi hardware. Questa modalità è utile per distribuire il modello in ambienti di produzione.
Esportazione
Esporta un modello ufficiale di YOLOv8n in ONNX con dimensioni dinamiche del lotto e dell'immagine.
Traccia
La modalità Track è utilizzata per tracciare gli oggetti in tempo reale utilizzando un modello YOLOv8 . In questa modalità , il modello viene caricato da un file di checkpoint e l'utente può fornire un flusso video in diretta per eseguire il tracciamento degli oggetti in tempo reale. Questa modalità è utile per applicazioni come i sistemi di sorveglianza o le auto a guida autonoma.
Traccia
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n.pt') # load an official detection model
model = YOLO('yolov8n-seg.pt') # load an official segmentation model
model = YOLO('path/to/best.pt') # load a custom model
# Track with the model
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")
Benchmark
La modalitĂ Benchmark viene utilizzata per tracciare un profilo della velocitĂ e della precisione dei vari formati di esportazione di YOLOv8. I benchmark forniscono informazioni sulle dimensioni del formato esportato, la sua velocitĂ e la sua precisione. mAP50-95
metriche (per il rilevamento e la segmentazione degli oggetti) o accuracy_top5
metriche (per la classificazione) e il tempo di inferenza in millisecondi per immagine nei vari formati di esportazione come ONNX, OpenVINO, TensorRT e altri. Queste informazioni possono aiutare gli utenti a scegliere il formato di esportazione ottimale per il loro caso d'uso specifico, in base ai loro requisiti di velocitĂ e accuratezza.
Benchmark
Esploratore
L'API Explorer può essere utilizzata per esplorare set di dati con ricerca semantica avanzata, similitudine vettoriale e SQL, oltre ad altre funzioni. Inoltre, ha permesso di ricercare immagini in base al loro contenuto utilizzando il linguaggio naturale e sfruttando la potenza degli LLM. L'API Explorer ti permette di scrivere i tuoi quaderni di esplorazione dei dataset o gli script per ottenere approfondimenti sui tuoi dataset.
Ricerca semantica con Explorer
from ultralytics import Explorer
# create an Explorer object
exp = Explorer(data='coco8.yaml', model='yolov8n.pt')
exp.create_embeddings_table()
similar = exp.get_similar(img='https://ultralytics.com/images/bus.jpg', limit=10)
print(similar.head())
# Search using multiple indices
similar = exp.get_similar(
img=['https://ultralytics.com/images/bus.jpg',
'https://ultralytics.com/images/bus.jpg'],
limit=10
)
print(similar.head())
from ultralytics import Explorer
# create an Explorer object
exp = Explorer(data='coco8.yaml', model='yolov8n.pt')
exp.create_embeddings_table()
similar = exp.get_similar(idx=1, limit=10)
print(similar.head())
# Search using multiple indices
similar = exp.get_similar(idx=[1,10], limit=10)
print(similar.head())
Utilizzo dei formatori
YOLO
La classe Model è un wrapper di alto livello per le classi Trainer. Ogni attività di YOLO ha il proprio trainer che eredita da BaseTrainer
.
Esempio di addestramento al rilevamento
```python
from ultralytics.models.yolo import DetectionTrainer, DetectionValidator, DetectionPredictor
# trainer
trainer = DetectionTrainer(overrides={})
trainer.train()
trained_model = trainer.best
# Validator
val = DetectionValidator(args=...)
val(model=trained_model)
# predictor
pred = DetectionPredictor(overrides={})
pred(source=SOURCE, model=trained_model)
# resume from last weight
overrides["resume"] = trainer.last
trainer = detect.DetectionTrainer(overrides=overrides)
```
Puoi personalizzare facilmente Trainers per supportare attivitĂ personalizzate o per esplorare idee di ricerca e sviluppo. Per saperne di piĂš sulla personalizzazione Trainers
, Validators
e Predictors
per soddisfare le esigenze del tuo progetto nella sezione Personalizzazione.
Creato 2023-11-12, Aggiornato 2024-04-18
Autori: glenn-jocher (9), AyushExel (1), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)