Utilizzo di Python#
Benvenuto nella documentazione sull'utilizzo di Ultralytics YOLO con Python! Questa guida è pensata per aiutarti a integrare facilmente Ultralytics YOLO nei tuoi progetti Python per il rilevamento degli oggetti, la segmentazione delle istanze, la segmentazione semantica, la stima della profondità e la classificazione. Qui imparerai a caricare e usare modelli pretrained, addestrare nuovi modelli ed eseguire predizioni sulle immagini. L'interfaccia Python intuitiva è una risorsa preziosa per chiunque voglia integrare YOLO nei propri progetti Python e consente di implementare rapidamente funzionalità avanzate di rilevamento degli oggetti. Iniziamo!
Guarda: Padroneggiare Ultralytics YOLO: Python
Ad esempio, gli utenti possono caricare un modello, addestrarlo, valutarne le prestazioni su un set di convalida e persino esportarlo in formato ONNX con poche righe di codice.
from ultralytics import YOLO
# Crea un nuovo modello YOLO da zero
model = YOLO("yolo26n.yaml")
# Carica un modello YOLO pretrained (consigliato per l'addestramento)
model = YOLO("yolo26n.pt")
# Addestra il modello usando il dataset 'coco8.yaml' per 3 epoche
results = model.train(data="coco8.yaml", epochs=3)
# Valuta le prestazioni del modello sul set di convalida
results = model.val()
# Esegui il rilevamento degli oggetti in un'immagine usando il modello
results = model("https://ultralytics.com/images/bus.jpg")
# Esporta il modello in formato ONNX
success = model.export(format="onnx")Addestra#
La modalità Train serve ad addestrare un modello YOLO su un dataset personalizzato. In questa modalità, il modello viene addestrato usando il dataset e gli iperparametri specificati. Il processo di addestramento prevede l'ottimizzazione dei parametri del modello affinché possa prevedere con precisione le classi e le posizioni degli oggetti in un'immagine.
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # passa qualsiasi tipo di modello
results = model.train(epochs=5)Convalida#
La modalità Val viene usata per convalidare un modello YOLO dopo l'addestramento. In questa modalità, il modello viene valutato su un set di convalida per misurarne l'accuratezza e le prestazioni di generalizzazione. Questa modalità può essere usata per ottimizzare gli iperparametri del modello e migliorarne le prestazioni.
from ultralytics import YOLO
# Carica un modello YOLO
model = YOLO("yolo26n.yaml")
# Addestra il modello
model.train(data="coco8.yaml", epochs=5)
# Convalida sulla suddivisione di convalida del set di dati di addestramento
model.val()Predici#
La modalità Predict viene usata per eseguire previsioni su nuove immagini o video con un modello YOLO addestrato. In questa modalità, il modello viene caricato da un file checkpoint e l'utente può fornire immagini o video su cui eseguire l'inferenza. Il modello prevede le classi e le posizioni degli oggetti nelle immagini o nei video di input.
import cv2
from PIL import Image
from ultralytics import YOLO
model = YOLO("model.pt")
# accetta tutti i formati: immagine/directory/Path/URL/video/PIL/ndarray. 0 per la webcam
results = model.predict(source="0")
results = model.predict(source="folder", show=True) # Visualizza le previsioni. Accetta tutti gli argomenti di YOLO Predict
# da PIL
im1 = Image.open("bus.jpg")
results = model.predict(source=im1, save=True) # salva le immagini con i grafici
# da ndarray
im2 = cv2.imread("bus.jpg")
results = model.predict(source=im2, save=True, save_txt=True) # salva le previsioni come etichette
# da un elenco di PIL/ndarray
results = model.predict(source=[im1, im2])Esporta#
La modalità Export viene usata per esportare un modello YOLO in un formato adatto alla distribuzione. In questa modalità, il modello viene convertito in un formato utilizzabile da altre applicazioni software o dispositivi hardware. Questa modalità è utile per distribuire il modello negli ambienti di produzione.
Esporta un modello YOLO ufficiale in ONNX con dimensioni dinamiche del batch e dell'immagine.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)Tracciamento#
La modalità Track viene usata per tracciare oggetti in tempo reale con un modello YOLO. In questa modalità, il modello viene caricato da un file 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.
from ultralytics import YOLO
# Carica un modello
model = YOLO("yolo26n.pt") # carica un modello di rilevamento ufficiale
model = YOLO("yolo26n-seg.pt") # carica un modello di segmentazione ufficiale
model = YOLO("path/to/best.pt") # carica un modello personalizzato
# Esegui il tracciamento con il modello
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 usata per profilare la velocità e l'accuratezza dei diversi formati di esportazione per YOLO. I benchmark forniscono informazioni sulle dimensioni del formato esportato, sulle metriche mAP50-95 (per il rilevamento e la segmentazione degli oggetti) o sulle metriche accuracy_top1 (per la classificazione) e sul 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 proprio caso d'uso, in base ai requisiti di velocità e accuratezza.
Esegui il benchmark di un modello YOLO ufficiale in tutti i formati di esportazione.
from ultralytics.utils.benchmarks import benchmark
# Benchmark
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Uso dei trainer#
La classe del modello YOLO funge da wrapper di alto livello per le classi Trainer. Ogni attività YOLO ha il proprio trainer, che eredita da BaseTrainer. Questa architettura offre maggiore flessibilità e possibilità di personalizzazione nei tuoi flussi di lavoro di machine learning.
from ultralytics.models.yolo.detect import DetectionPredictor, DetectionTrainer, DetectionValidator
overrides = {"model": "yolo26n.pt", "data": "coco8.yaml", "epochs": 3}
# Trainer
trainer = DetectionTrainer(overrides=overrides)
trainer.train()
trained_model = trainer.best # percorso di best.pt
# Validator
validator = DetectionValidator(args={"data": "coco8.yaml"})
validator(model=trained_model)
# Predictor
predictor = DetectionPredictor(overrides={"model": trained_model})
predictor(source="https://ultralytics.com/images/bus.jpg")
# Riprendi un'esecuzione di addestramento interrotta dall'ultimo checkpoint
trainer = DetectionTrainer(overrides={"resume": "path/to/last.pt"})
trainer.train()Puoi personalizzare facilmente i Trainer per supportare attività personalizzate o esplorare idee di ricerca e sviluppo. La struttura modulare di Ultralytics YOLO ti consente di adattare il framework alle tue esigenze specifiche, sia che tu stia lavorando a una nuova attività di visione artificiale, sia che tu stia ottimizzando modelli esistenti per ottenere prestazioni migliori.
Tutorial sulla personalizzazione
Domande frequenti#
Integrare Ultralytics YOLO nei tuoi progetti Python è semplice. Puoi caricare un modello preaddestrato o addestrarne uno nuovo da zero. Ecco come iniziare:
from ultralytics import YOLO # Carica un modello YOLO preaddestrato model = YOLO("yolo26n.pt") # Esegui il rilevamento degli oggetti su un'immagine results = model("https://ultralytics.com/images/bus.jpg") # Visualizza i risultati for result in results: result.show()Trovi altri esempi dettagliati nella sezione Modalità Predict.
Ultralytics YOLO offre diverse modalità per adattarsi ai vari flussi di lavoro di machine learning. Ecco quali:
- Train: addestra un modello usando set di dati personalizzati.
- Val: convalida le prestazioni del modello su un set di convalida.
- Predict: esegui previsioni su nuove immagini o flussi video.
- Export: esporta i modelli in vari formati, come ONNX e TensorRT.
- Track: traccia gli oggetti in tempo reale nei flussi video.
- Benchmark: valuta le prestazioni del modello con diverse configurazioni.
Ogni modalità è progettata per offrire funzionalità complete nelle diverse fasi dello sviluppo e della distribuzione dei modelli.
Per addestrare un modello YOLO personalizzato, devi specificare il set di dati e gli altri iperparametri. Ecco un breve esempio:
from ultralytics import YOLO # Carica il modello YOLO model = YOLO("yolo26n.yaml") # Addestra il modello con un set di dati personalizzato model.train(data="path/to/your/dataset.yaml", epochs=10)Per maggiori dettagli sull'addestramento e collegamenti ipertestuali a esempi d'uso, visita la nostra pagina Modalità Train.
Esportare i modelli YOLO in un formato adatto alla distribuzione è semplice con la funzione
export. Ad esempio, puoi esportare un modello in formato ONNX:from ultralytics import YOLO # Carica il modello YOLO model = YOLO("yolo26n.pt") # Esporta il modello in formato ONNX model.export(format="onnx")Per le varie opzioni di esportazione, consulta la documentazione della Modalità Export.
Sì, è possibile convalidare i modelli YOLO su set di dati diversi. Dopo l'addestramento, puoi usare la modalità di convalida per valutare le prestazioni:
from ultralytics import YOLO # Carica un modello YOLO model = YOLO("yolo26n.yaml") # Addestra il modello model.train(data="coco8.yaml", epochs=5) # Convalida il modello su un set di dati diverso model.val(data="path/to/separate/data.yaml")Consulta la pagina Modalità Val per esempi dettagliati e istruzioni d'uso.