Vai al contenuto

Risoluzione dei problemi comuni di YOLO

YOLO Immagine dei problemi comuni

Introduzione

Questa guida è un aiuto completo per la risoluzione dei problemi più comuni riscontrati durante la collaborazione con YOLOv8 per i tuoi progetti Ultralytics . Con le giuste indicazioni, risolvere questi problemi può essere un gioco da ragazzi, assicurando che i tuoi progetti rimangano in linea senza inutili ritardi.



Guarda: Ultralytics YOLOv8 Problemi comuni | Errori di installazione, Problemi di formazione dei modelli

Problemi comuni

Errori di installazione

Gli errori di installazione possono essere dovuti a vari motivi, come versioni incompatibili, dipendenze mancanti o impostazioni errate dell'ambiente. Per prima cosa, controlla di aver eseguito le seguenti operazioni:

  • Stai utilizzando Python 3.8 o versione successiva, come raccomandato.

  • Assicurati di aver installato la versione corretta di PyTorch (1.8 o successiva).

  • Prendi in considerazione l'utilizzo di ambienti virtuali per evitare conflitti.

  • Segui passo dopo passo la guida ufficiale all'installazione.

Inoltre, ecco alcuni problemi comuni di installazione che gli utenti hanno riscontrato, insieme alle rispettive soluzioni:

  • Errori di importazione o problemi di dipendenza - Se ricevi degli errori durante l'importazione di YOLOv8 o se hai dei problemi legati alle dipendenze, considera i seguenti passaggi per la risoluzione dei problemi:

    • Installazione ex novo: A volte, iniziare con una nuova installazione può risolvere problemi inaspettati. Soprattutto nel caso di librerie come Ultralytics, dove gli aggiornamenti possono introdurre modifiche alla struttura ad albero dei file o alle funzionalità.

    • Aggiorna regolarmente: Assicurati di utilizzare l'ultima versione della libreria. Le versioni più vecchie potrebbero non essere compatibili con gli aggiornamenti recenti, causando potenziali conflitti o problemi.

    • Verifica le dipendenze: Verifica che tutte le dipendenze richieste siano installate correttamente e che abbiano una versione compatibile.

    • Revisione delle modifiche: Se all'inizio hai clonato o installato una versione precedente, sappi che gli aggiornamenti significativi potrebbero influenzare la struttura o le funzionalità della libreria. Fai sempre riferimento alla documentazione ufficiale o ai changelog per comprendere le modifiche più importanti.

    • Ricorda che mantenere aggiornate le librerie e le dipendenze è fondamentale per un'esperienza fluida e priva di errori.

  • Eseguire YOLOv8 su GPU - Se hai problemi a eseguire YOLOv8 su GPU, considera i seguenti passaggi per la risoluzione dei problemi:

    • Verifica la compatibilità e l'installazione di CUDA: Assicurati che GPU sia compatibile con CUDA e che CUDA sia installato correttamente. Utilizza il file nvidia-smi per verificare lo stato della versione di NVIDIA GPU e CUDA .

    • Controlla PyTorch e l'integrazione di CUDA: Assicurati che PyTorch possa utilizzare CUDA eseguendo import torch; print(torch.cuda.is_available()) in un terminale Python . Se restituisce "True", PyTorch è impostato per utilizzare CUDA.

    • Attivazione dell'ambiente: Assicurati di trovarti nell'ambiente corretto in cui sono installati tutti i pacchetti necessari.

    • Aggiorna i tuoi pacchetti: I pacchetti obsoleti potrebbero non essere compatibili con il tuo GPU. Tienili aggiornati.

    • Configurazione del programma: Controlla se il programma o il codice specifica l'utilizzo di GPU . In YOLOv8, questo potrebbe trovarsi nelle impostazioni o nella configurazione.

Problemi di formazione dei modelli

Questa sezione affronta i problemi più comuni che si incontrano durante la formazione e le relative spiegazioni e soluzioni.

Verifica delle impostazioni di configurazione

Problema: Non sei sicuro che le impostazioni di configurazione del sistema siano corrette. .yaml vengono applicate correttamente durante l'addestramento del modello.

Soluzione: Le impostazioni di configurazione della cartella .yaml deve essere applicato quando si utilizza il file model.train() funzione. Per assicurarti che queste impostazioni siano applicate correttamente, segui i seguenti passaggi:

  • Conferma che il percorso del tuo file .yaml il file di configurazione è corretto.
  • Assicurati di passare il percorso del tuo file .yaml come il file data quando si chiama model.train()come mostrato di seguito:
model.train(data="/path/to/your/data.yaml", batch=4)

Accelerazione della formazione con più GPU

Problema: L'addestramento è lento su un singolo GPU e vuoi accelerare il processo utilizzando più GPU.

Soluzione: Aumentare le dimensioni del batch può accelerare la formazione, ma è fondamentale considerare la capacità di memoria di GPU . Per accelerare l'addestramento con più GPU, segui questi passaggi:

  • Assicurati di avere a disposizione più GPU.

  • Modifica il file di configurazione .yaml per specificare il numero di GPU da utilizzare, ad esempio gpus: 4.

  • Aumenta di conseguenza le dimensioni del batch per utilizzare appieno le GPU multiple senza superare i limiti di memoria.

  • Modifica il comando di allenamento per utilizzare più GPU:

# Adjust the batch size and other settings as needed to optimize training speed
model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)

Parametri di monitoraggio continuo

Problema: Vuoi sapere quali sono i parametri da monitorare costantemente durante l'allenamento, oltre alla perdita.

Soluzione: Sebbene la perdita sia una metrica fondamentale da monitorare, è anche essenziale tenere traccia di altre metriche per ottimizzare le prestazioni del modello. Alcune metriche chiave da monitorare durante l'addestramento sono:

  • Precisione
  • Richiamo
  • Precisione media (mAP)

Puoi accedere a queste metriche dai registri di allenamento o utilizzando strumenti come TensorBoard o wandb per la visualizzazione. L'implementazione di un arresto anticipato basato su queste metriche può aiutarti a ottenere risultati migliori.

Strumenti per monitorare i progressi della formazione

Problema: Stai cercando consigli sugli strumenti per monitorare i progressi della formazione.

Soluzione: Per monitorare e visualizzare i progressi dell'allenamento, puoi prendere in considerazione l'utilizzo dei seguenti strumenti:

  • TensorBoard: TensorBoard è una scelta popolare per visualizzare le metriche di formazione, tra cui la perdita, l'accuratezza e altro ancora. Puoi integrarlo con il tuo processo di formazione YOLOv8 .
  • Comet: Comet fornisce un ampio kit di strumenti per il monitoraggio e il confronto degli esperimenti. Ti permette di tenere traccia delle metriche, degli iperparametri e persino dei pesi dei modelli. Anche l'integrazione con i modelli di YOLO è semplice e ti offre una panoramica completa del tuo ciclo di esperimenti.
  • Ultralytics HUB: Ultralytics HUB offre un ambiente specializzato per il tracciamento dei modelli YOLO , fornendoti una piattaforma unica per gestire metriche, set di dati e persino collaborare con il tuo team. Grazie alla sua focalizzazione su YOLO, offre opzioni di tracciamento più personalizzate.

Ognuno di questi strumenti offre una serie di vantaggi, quindi è bene che tu prenda in considerazione le esigenze specifiche del tuo progetto al momento della scelta.

Come verificare se l'allenamento è in corso sul sito web GPU

Problema: Il valore "dispositivo" nei registri di formazione è "nullo" e non sei sicuro che la formazione stia avvenendo su GPU.

Soluzione: Il valore "device" che è "null" significa che il processo di formazione è impostato per utilizzare automaticamente un sito GPU disponibile, che è il comportamento predefinito. Per assicurarti che l'addestramento avvenga su uno specifico GPU, puoi impostare manualmente il valore "device" sull'indice GPU (ad esempio, "0" per il primo GPU) nel tuo file di configurazione .yaml:

device: 0

Questo assegnerà esplicitamente il processo di formazione al sito GPU specificato. Se vuoi allenarti su CPU, imposta "dispositivo" su "cpu".

Tieni d'occhio la cartella "corse" per i registri e le metriche per monitorare efficacemente i progressi dell'allenamento.

Considerazioni chiave per un addestramento efficace dei modelli

Ecco alcune cose da tenere a mente se stai affrontando problemi legati alla formazione dei modelli.

Formato del set di dati ed etichette

  • Importanza: La base di qualsiasi modello di apprendimento automatico risiede nella qualità e nel formato dei dati su cui viene addestrato.

  • Raccomandazione: Assicurati che il tuo set di dati personalizzato e le etichette associate rispettino il formato previsto. È fondamentale verificare che le annotazioni siano accurate e di alta qualità. Annotazioni errate o di qualità inferiore possono far deragliare il processo di apprendimento del modello, portando a risultati imprevedibili.

Convergenza del modello

  • Importanza: Il raggiungimento della convergenza del modello garantisce che il modello abbia appreso a sufficienza dai dati di formazione.

  • Raccomandazione: Quando si addestra un modello "da zero", è fondamentale assicurarsi che il modello raggiunga un livello di convergenza soddisfacente. Ciò potrebbe richiedere una durata dell'addestramento più lunga, con un maggior numero di epoche, rispetto a quando si sta mettendo a punto un modello esistente.

Tasso di apprendimento e dimensione del lotto

  • Importanza: Questi iperparametri giocano un ruolo fondamentale nel determinare come il modello aggiorna i suoi pesi durante l'addestramento.

  • Raccomandazione: Valuta regolarmente se il tasso di apprendimento e la dimensione del batch scelti sono ottimali per il tuo set di dati specifico. I parametri che non sono in armonia con le caratteristiche del set di dati possono ostacolare le prestazioni del modello.

Distribuzione delle classi

  • Importanza: La distribuzione delle classi nel tuo dataset può influenzare le tendenze di previsione del modello.

  • Raccomandazione: Valuta regolarmente la distribuzione delle classi all'interno del tuo set di dati. Se c'è uno squilibrio tra le classi, c'è il rischio che il modello sviluppi un pregiudizio verso la classe più diffusa. Questo pregiudizio può essere evidente nella matrice di confusione, dove il modello potrebbe prevedere prevalentemente la classe prevalente.

Controllo incrociato con i pesi preimpostati

  • Importanza: Sfruttare i pesi pre-addestrati può fornire un solido punto di partenza per l'addestramento del modello, soprattutto quando i dati sono limitati.

  • Raccomandazione: Come passo diagnostico, prendi in considerazione la possibilità di addestrare il tuo modello utilizzando gli stessi dati ma inizializzandolo con pesi pre-addestrati. Se questo approccio produce una matrice di confusione ben formata, potrebbe suggerire che il modello "da zero" potrebbe richiedere un ulteriore addestramento o aggiustamenti.

Questa sezione affronta i problemi comuni che si incontrano durante la previsione del modello.

Ottenere previsioni Bounding Box con il tuo modello personalizzato YOLOv8

Problema: Quando si eseguono le previsioni con un modello personalizzato di YOLOv8 , ci sono problemi con il formato e la visualizzazione delle coordinate del rettangolo di selezione.

Soluzione:

  • Formato coordinate: YOLOv8 Fornisce le coordinate del rettangolo di selezione in valori assoluti in pixel. Per convertirle in coordinate relative (comprese tra 0 e 1), è necessario dividere per le dimensioni dell'immagine. Ad esempio, supponiamo che la dimensione dell'immagine sia 640x640. Quindi dovresti fare quanto segue:
# Convert absolute coordinates to relative coordinates
x1 = x1 / 640  # Divide x-coordinates by image width
x2 = x2 / 640
y1 = y1 / 640  # Divide y-coordinates by image height
y2 = y2 / 640
  • Nome del file: Per ottenere il nome del file dell'immagine su cui stai facendo la previsione, accedi al percorso del file dell'immagine direttamente dall'oggetto risultato all'interno del tuo ciclo di previsione.

Filtrare gli oggetti nelle previsioni di YOLOv8

Problema: Problemi su come filtrare e visualizzare solo oggetti specifici nei risultati delle previsioni quando si esegue YOLOv8 utilizzando la libreria Ultralytics .

Soluzione: Per rilevare classi specifiche, usa l'argomento classi per specificare le classi che vuoi includere nell'output. Ad esempio, per rilevare solo le automobili (supponendo che "automobili" abbia un indice di classe 2):

yolo task=detect mode=segment model=yolov8n-seg.pt source='path/to/car.mp4' show=True classes=2

Comprendere le metriche di precisione in YOLOv8

Problema: C'è confusione sulla differenza tra precisione della casella, precisione della maschera e precisione della matrice di confusione in YOLOv8.

Soluzione: La precisione dei riquadri misura l'accuratezza dei riquadri di delimitazione previsti rispetto ai riquadri effettivi della verità a terra utilizzando come metrica IoU (Intersection over Union). La precisione delle maschere valuta l'accordo tra le maschere di segmentazione previste e le maschere di verità a terra nella classificazione degli oggetti in base ai pixel. La precisione della matrice di confusione, invece, si concentra sull'accuratezza complessiva della classificazione in tutte le classi e non considera l'accuratezza geometrica delle previsioni. È importante notare che un riquadro di delimitazione può essere geometricamente accurato (vero positivo) anche se la previsione della classe è sbagliata, il che porta a differenze tra la precisione del riquadro e la precisione della matrice di confusione. Queste metriche valutano aspetti distinti delle prestazioni di un modello, il che riflette la necessità di avere metriche di valutazione diverse per i vari compiti.

Estrazione delle dimensioni degli oggetti in YOLOv8

Problema: Difficoltà nel recuperare la lunghezza e l'altezza degli oggetti rilevati in YOLOv8, soprattutto quando vengono rilevati più oggetti in un'immagine.

Soluzione: Per recuperare le dimensioni dei riquadri di delimitazione, utilizza innanzitutto il modello Ultralytics YOLOv8 per prevedere gli oggetti in un'immagine. Quindi, estrai le informazioni sulla larghezza e sull'altezza dei riquadri di delimitazione dai risultati della previsione.

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.pt")

# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.5)

# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
    x, y, w, h = box
    print(f"Width of Box: {w}, Height of Box: {h}")

Sfide dell'implementazione

GPU Problemi di distribuzione

Problema: L'implementazione di modelli in un ambiente multiGPU può talvolta portare a comportamenti inaspettati, come l'utilizzo inaspettato della memoria, risultati incoerenti tra le varie GPU, ecc.

Soluzione: Controlla l'inizializzazione predefinita di GPU . Alcuni framework, come PyTorch, potrebbero inizializzare le operazioni di CUDA su un GPU predefinito prima di passare alle GPU designate. Per evitare inizializzazioni predefinite inaspettate, specifica direttamente GPU durante la distribuzione e la previsione. Quindi, utilizza gli strumenti per monitorare l'utilizzo di GPU e l'uso della memoria per identificare eventuali anomalie in tempo reale. Inoltre, assicurati di utilizzare l'ultima versione del framework o della libreria.

Problemi di conversione/esportazione dei modelli

Problema: Durante il processo di conversione o esportazione di modelli di apprendimento automatico in diversi formati o piattaforme, gli utenti potrebbero riscontrare errori o comportamenti inaspettati.

Soluzione:

  • Verifica della compatibilità: Assicurati di utilizzare versioni di librerie e framework compatibili tra loro. Versioni non corrispondenti possono causare errori imprevisti durante la conversione.

  • Ripristino dell'ambiente: Se utilizzi un ambiente interattivo come Jupyter o Colab, prendi in considerazione l'idea di riavviare il tuo ambiente dopo aver apportato modifiche o installazioni significative. Un nuovo inizio può talvolta risolvere i problemi sottostanti.

  • Documentazione ufficiale: Fai sempre riferimento alla documentazione ufficiale dello strumento o della libreria che stai utilizzando per la conversione. Spesso contiene linee guida specifiche e buone pratiche per l'esportazione dei modelli.

  • Supporto della comunità: Controlla il repository ufficiale della libreria o del framework per trovare problemi simili segnalati da altri utenti. I manutentori o la comunità potrebbero aver fornito soluzioni o workaround nei thread di discussione.

  • Aggiornati regolarmente: Assicurati di utilizzare l'ultima versione dello strumento o della libreria. Gli sviluppatori rilasciano spesso aggiornamenti che risolvono bug noti o migliorano le funzionalità.

  • Esegui test incrementali: Prima di eseguire una conversione completa, testa il processo con un modello o un set di dati più piccolo per identificare subito i potenziali problemi.

Comunità e supporto

L'incontro con una comunità di persone che la pensano allo stesso modo può migliorare significativamente la tua esperienza e il tuo successo nel lavoro con YOLOv8. Di seguito trovi alcuni canali e risorse che potrebbero esserti utili.

Forum e canali per ottenere aiuto

Problemi su GitHub: Il repository YOLOv8 su GitHub ha una scheda Issues dove puoi fare domande, segnalare bug e suggerire nuove funzionalità. La comunità e i manutentori sono molto attivi ed è un luogo ideale per ricevere aiuto per problemi specifici.

Ultralytics Server Discord: Ultralytics ha un server Discord dove puoi interagire con gli altri utenti e con gli sviluppatori.

Documentazione e risorse ufficiali

Ultralytics YOLOv8 Documenti: La documentazione ufficiale fornisce una panoramica completa di YOLOv8, oltre a guide sull'installazione, l'utilizzo e la risoluzione dei problemi.

Queste risorse dovrebbero fornire una solida base per la risoluzione dei problemi e il miglioramento dei tuoi progetti YOLOv8 , oltre che per connetterti con gli altri membri della comunità di YOLOv8 .

Conclusione

La risoluzione dei problemi è parte integrante di qualsiasi processo di sviluppo ed essere dotati delle giuste conoscenze può ridurre significativamente il tempo e l'impegno spesi per risolvere i problemi. Questa guida si propone di affrontare i problemi più comuni degli utenti del modello YOLOv8 all'interno dell'ecosistema Ultralytics . Comprendendo e affrontando questi problemi comuni, potrai garantire un avanzamento più fluido del progetto e ottenere risultati migliori nelle tue attività di computer vision.

Ricorda che la comunità di Ultralytics è una risorsa preziosa. Il confronto con altri sviluppatori ed esperti può fornire ulteriori spunti e soluzioni che potrebbero non essere coperte dalla documentazione standard. Continua a imparare, sperimentare e condividere le tue esperienze per contribuire alla conoscenza collettiva della comunità.

Buona risoluzione dei problemi!

DOMANDE FREQUENTI

Come posso risolvere gli errori di installazione con YOLOv8?

Gli errori di installazione possono spesso essere dovuti a problemi di compatibilità o a dipendenze mancanti. Assicurati di utilizzare Python 3.8 o successivo e di avere installato PyTorch 1.8 o successivo. È consigliabile utilizzare ambienti virtuali per evitare conflitti. Per una guida all'installazione passo-passo, segui la nostra guida ufficiale all'installazione. Se riscontri errori di importazione, prova a fare una nuova installazione o aggiorna la libreria all'ultima versione.

Perché la formazione del mio modello YOLOv8 è lenta su un singolo GPU?

L'addestramento su un singolo GPU potrebbe essere lento a causa delle grandi dimensioni dei batch o della memoria insufficiente. Per accelerare la formazione, usa più GPU. Assicurati che il tuo sistema abbia a disposizione più GPU e regola la tua .yaml per specificare il numero di GPU, ad es, gpus: 4. Aumenta la dimensione del batch di conseguenza per utilizzare completamente le GPU senza superare i limiti di memoria. Esempio di comando:

model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)

Come posso assicurarmi che il mio modello YOLOv8 si stia formando su GPU?

Se il valore "dispositivo" appare "nullo" nei registri di formazione, significa che il processo di formazione è impostato per utilizzare automaticamente un sito GPU disponibile. Per assegnare in modo esplicito uno specifico GPU, imposta il valore "dispositivo" nel tuo .yaml file di configurazione. Ad esempio:

device: 0

Questo imposta il processo di formazione al primo GPU. Consulta la sezione nvidia-smi per confermare la configurazione di CUDA .

Come posso monitorare e seguire i miei progressi nell'allenamento del modello YOLOv8 ?

Il monitoraggio e la visualizzazione dei progressi della formazione possono essere gestiti in modo efficiente attraverso strumenti come TensorBoard, Comete Ultralytics HUB. Questi strumenti ti permettono di registrare e visualizzare metriche come perdita, precisione, richiamo e mAP. L'implementazione di un arresto precoce in base a queste metriche può anche aiutare a ottenere risultati migliori nella formazione.

Cosa devo fare se YOLOv8 non riconosce il formato del mio set di dati?

Assicurati che il tuo set di dati e le etichette siano conformi al formato previsto. Verifica che le annotazioni siano accurate e di alta qualità. In caso di problemi, consulta la Guida alla raccolta e all'annotazione dei dati per conoscere le migliori pratiche. Per ulteriori indicazioni specifiche sul set di dati, consulta la sezione Set di dati della documentazione.



Creato 2023-11-12, Aggiornato 2024-07-05
Autori: glenn-jocher (6), RizwanMunawar (1)

Commenti