Risoluzione dei problemi comuni di YOLO
Introduzione
Questa guida è un aiuto completo per la risoluzione dei problemi più comuni riscontrati durante la collaborazione con YOLO11 per i progetti Ultralytics . Con le giuste indicazioni è possibile risolvere questi problemi in modo semplice, assicurando che i progetti rimangano in linea senza inutili ritardi.
Guarda: Ultralytics YOLO11 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, verificare che si stia eseguendo quanto segue:
-
Si sta utilizzando Python 3.8 o versione successiva, come raccomandato.
-
Assicurarsi di avere installato la versione corretta di PyTorch (1.8 o successiva).
-
Considerate l'utilizzo di ambienti virtuali per evitare conflitti.
-
Seguire passo dopo passo la guida ufficiale all'installazione.
Inoltre, ecco alcuni problemi comuni di installazione riscontrati dagli utenti, con le rispettive soluzioni:
-
Errori di importazione o problemi di dipendenza - Se si verificano errori durante l'importazione di YOLO11 o se si verificano problemi legati alle dipendenze, considerare i seguenti passaggi per la risoluzione dei problemi:
-
Installazione ex novo: A volte, iniziare con una nuova installazione può risolvere problemi inaspettati. Soprattutto con librerie come Ultralytics, dove gli aggiornamenti possono introdurre modifiche alla struttura ad albero dei file o alle funzionalità.
-
Aggiornare regolarmente: Assicurarsi di utilizzare l'ultima versione della libreria. Le versioni più vecchie potrebbero non essere compatibili con gli aggiornamenti recenti, causando potenziali conflitti o problemi.
-
Controllare le dipendenze: Verificare che tutte le dipendenze richieste siano installate correttamente e che abbiano le versioni compatibili.
-
Revisione delle modifiche: Se inizialmente avete clonato o installato una versione precedente, sappiate che gli aggiornamenti significativi possono influire sulla struttura o sulle funzionalità della libreria. Fare sempre riferimento alla documentazione ufficiale o ai changelog per comprendere le modifiche più importanti.
-
Ricordate che mantenere aggiornate le librerie e le dipendenze è fondamentale per un'esperienza fluida e priva di errori.
-
-
Esecuzione di YOLO11 su GPU - Se si riscontrano problemi nell'esecuzione di YOLO11 su GPU, considerare i seguenti passaggi per la risoluzione dei problemi:
-
Verificare la compatibilità e l'installazione di CUDA: Assicurarsi che GPU sia compatibile con CUDA e che CUDA sia installato correttamente. Utilizzare il file
nvidia-smi
per verificare lo stato delle versioni NVIDIA GPU e CUDA . -
Controllare PyTorch e CUDA Integrazione: Assicurarsi 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: Assicurarsi di trovarsi nell'ambiente corretto in cui sono installati tutti i pacchetti necessari.
-
Aggiornare i pacchetti: I pacchetti obsoleti potrebbero non essere compatibili con il vostro GPU. Manteneteli aggiornati.
-
Configurazione del programma: Verificare se il programma o il codice specifica l'uso di GPU . In YOLO11, 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 si è sicuri che le impostazioni di configurazione del sistema siano corrette. .yaml
vengono applicati correttamente durante l'addestramento del modello.
Soluzione: Le impostazioni di configurazione del programma .yaml
deve essere applicato quando si utilizza il file model.train()
funzione. Per assicurarsi che queste impostazioni siano applicate correttamente, procedere come segue:
- Confermate che il percorso del vostro file
.yaml
è corretto. - Assicurarsi di passare il percorso al file
.yaml
come filedata
quando si chiamamodel.train()
come mostrato di seguito:
Accelerazione della formazione con più GPU
Problema: L'addestramento è lento su un singolo GPU e si desidera accelerare il processo utilizzando più GPU.
Soluzione: L'aumento delle dimensioni del batch può accelerare la formazione, ma è essenziale considerare la capacità di memoria di GPU . Per accelerare l'addestramento con più GPU, seguite questi passaggi:
-
Assicuratevi di avere a disposizione più GPU.
-
Modificare il file di configurazione .yaml per specificare il numero di GPU da usare, ad esempio, gpus: 4.
-
Aumentare di conseguenza le dimensioni del batch per utilizzare completamente le GPU multiple senza superare i limiti di memoria.
-
Modificare il comando di addestramento 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: Si vuole sapere quali parametri devono essere monitorati 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)
È possibile accedere a queste metriche dai registri di allenamento o utilizzando strumenti come TensorBoard o wandb per la visualizzazione. L'implementazione di un arresto precoce basato su queste metriche può aiutare a ottenere risultati migliori.
Strumenti per monitorare i progressi della formazione
Problema: Siete alla ricerca di consigli sugli strumenti per monitorare i progressi della formazione.
Soluzione: Per tenere traccia e visualizzare i progressi dell'allenamento, si possono utilizzare i seguenti strumenti:
- TensorBoard: TensorBoard è una scelta popolare per la visualizzazione delle metriche di addestramento, tra cui la perdita, l'accuratezza e altro ancora. È possibile integrarlo con il processo di formazione di YOLO11 .
- Comet: Comet fornisce un ampio kit di strumenti per il monitoraggio e il confronto degli esperimenti. Permette di tracciare metriche, iperparametri e persino pesi del modello. Anche l'integrazione con i modelli di YOLO è semplice e fornisce una panoramica completa del ciclo di esperimenti.
- Ultralytics HUB: Ultralytics HUB offre un ambiente specializzato per il tracciamento dei modelli YOLO , fornendo una piattaforma unica per gestire metriche, set di dati e persino collaborare con il proprio team. Dato che si concentra su YOLO, offre opzioni di tracciamento più personalizzate.
Ognuno di questi strumenti offre una serie di vantaggi, per cui è bene considerare le esigenze specifiche del vostro progetto al momento della scelta.
Come verificare se l'addestramento è in corso sul sito web GPU
Problema: Il valore "device" nei registri di formazione è "null" e non si è sicuri che la formazione stia avvenendo sul sito GPU.
Soluzione: Il valore "device" che è "null" significa in genere che il processo di addestramento è impostato per usare automaticamente un GPU disponibile, che è il comportamento predefinito. Per garantire che l'addestramento avvenga su uno specifico GPU, è possibile impostare manualmente il valore 'device' sull'indice GPU (ad esempio, '0' per il primo GPU) nel file di configurazione .yaml:
Questo assegnerà esplicitamente il processo di addestramento al sito GPU specificato. Se si desidera addestrare su CPU, impostare 'device' su 'cpu'.
Tenete d'occhio la cartella "corse" per i registri e le metriche per monitorare efficacemente i progressi dell'allenamento.
Considerazioni chiave per una formazione efficace dei modelli
Ecco alcune cose da tenere a mente, se vi trovate di fronte a problemi legati all'addestramento 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: Assicurarsi che il dataset personalizzato e le etichette associate siano conformi al 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 addestramento.
-
Raccomandazione: Quando si addestra un modello "da zero", è fondamentale assicurarsi che il modello raggiunga un livello di convergenza soddisfacente. Ciò potrebbe richiedere una durata di addestramento più lunga, con un maggior numero di epoche, rispetto a quando si mette a punto un modello esistente.
Tasso di apprendimento e dimensione del lotto
-
Importanza: Questi iperparametri svolgono un ruolo fondamentale nel determinare come il modello aggiorna i suoi pesi durante l'addestramento.
-
Raccomandazione: Valutare regolarmente se il tasso di apprendimento e la dimensione del batch scelti sono ottimali per il dataset specifico. 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 dataset può influenzare le tendenze di previsione del modello.
-
Raccomandazione: Valutare regolarmente la distribuzione delle classi all'interno del dataset. Se c'è uno squilibrio tra le classi, c'è il rischio che il modello sviluppi una distorsione verso la classe più prevalente. Questa distorsione può essere evidente nella matrice di confusione, dove il modello potrebbe prevedere prevalentemente la classe prevalente.
Controllo incrociato con i pesi preimpostati
-
Importanza: L'utilizzo di pesi preaddestrati può fornire un solido punto di partenza per l'addestramento del modello, soprattutto quando i dati sono limitati.
-
Raccomandazione: Come passo diagnostico, si può considerare di addestrare il modello utilizzando gli stessi dati ma inizializzandolo con pesi preaddestrati. Se questo approccio produce una matrice di confusione ben formata, potrebbe suggerire che il modello "da zero" potrebbe richiedere un ulteriore addestramento o aggiustamenti.
Problemi legati alle previsioni del modello
Questa sezione affronta i problemi comuni che si incontrano durante la previsione del modello.
Ottenere previsioni Bounding Box con il modello personalizzato YOLO11
Problema: Quando si eseguono le previsioni con un modello personalizzato di YOLO11 , ci sono problemi con il formato e la visualizzazione delle coordinate del rettangolo di selezione.
Soluzione:
- Formato delle coordinate: YOLO11 fornisce le coordinate del rettangolo di selezione in valori assoluti di pixel. Per convertirle in coordinate relative (da 0 a 1), è necessario dividerle per le dimensioni dell'immagine. Ad esempio, supponiamo che le dimensioni dell'immagine siano 640x640. Si procederà come 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 si sta facendo la previsione, accedere al percorso del file dell'immagine direttamente dall'oggetto risultato all'interno del ciclo di previsione.
Filtrare gli oggetti nelle previsioni di YOLO11
Problema: Problemi su come filtrare e visualizzare solo oggetti specifici nei risultati della predizione quando si esegue YOLO11 utilizzando la libreria Ultralytics .
Soluzione: Per rilevare classi specifiche, utilizzare l'argomento classi per specificare le classi che si desidera includere nell'output. Ad esempio, per rilevare solo le auto (assumendo che 'auto' abbia l'indice di classe 2):
Comprendere le metriche di precisione in YOLO11
Problema: Confusione sulla differenza tra precisione della casella, precisione della maschera e precisione della matrice di confusione in YOLO11.
Soluzione: La precisione dei riquadri misura l'accuratezza dei riquadri di delimitazione previsti rispetto ai riquadri effettivi di verità a terra, utilizzando come parametro 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, riflettendo la necessità di metriche di valutazione diverse per i vari compiti.
Estrazione delle dimensioni degli oggetti in YOLO11
Problema: Difficoltà nel recuperare la lunghezza e l'altezza degli oggetti rilevati in YOLO11, soprattutto quando vengono rilevati più oggetti in un'immagine.
Soluzione: Per recuperare le dimensioni dei riquadri di delimitazione, utilizzare innanzitutto il modello Ultralytics YOLO11 per prevedere gli oggetti in un'immagine. Quindi, estrarre le informazioni sulla larghezza e sull'altezza dei riquadri di delimitazione dai risultati della previsione.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.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 di implementazione
GPU Problemi di distribuzione
Problema: La distribuzione dei modelli in un ambiente multiGPU può talvolta portare a comportamenti inaspettati, come l'utilizzo imprevisto della memoria, risultati incoerenti tra le GPU, ecc.
Soluzione: Verificare 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, specificare direttamente GPU durante la distribuzione e la previsione. Quindi, utilizzare strumenti per monitorare l'utilizzo di GPU e l'uso della memoria per identificare eventuali anomalie in tempo reale. Inoltre, assicurarsi 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 formati o piattaforme diverse, gli utenti potrebbero riscontrare errori o comportamenti inaspettati.
Soluzione:
-
Verifica della compatibilità: Assicurarsi di utilizzare versioni di librerie e framework compatibili tra loro. Versioni non corrispondenti possono causare errori imprevisti durante la conversione.
-
Ripristino dell'ambiente: Se utilizzate un ambiente interattivo come Jupyter o Colab, prendete in considerazione la possibilità di riavviare l'ambiente dopo aver apportato modifiche o installazioni significative. Un nuovo inizio può talvolta risolvere i problemi sottostanti.
-
Documentazione ufficiale: Fare sempre riferimento alla documentazione ufficiale dello strumento o della libreria che si sta utilizzando per la conversione. Spesso contiene linee guida specifiche e buone pratiche per l'esportazione dei modelli.
-
Supporto della comunità: Controllare 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.
-
Aggiornare regolarmente: Assicurarsi di utilizzare l'ultima versione dello strumento o della libreria. Gli sviluppatori rilasciano spesso aggiornamenti che risolvono bug noti o migliorano le funzionalità.
-
Test incrementali: Prima di eseguire una conversione completa, testate il processo con un modello o un set di dati più piccolo per identificare tempestivamente i potenziali problemi.
Comunità e supporto
Impegnarsi con una comunità di persone che la pensano allo stesso modo può migliorare significativamente la vostra esperienza e il vostro successo nel lavoro con YOLO11. Di seguito sono riportati alcuni canali e risorse che potrebbero esservi utili.
Forum e canali per ottenere aiuto
Problemi su GitHub: Il repository YOLO11 su GitHub ha una scheda Issues dove è possibile porre domande, segnalare bug e suggerire nuove funzionalità. La comunità e i manutentori sono attivi qui ed è un ottimo posto per ottenere aiuto con problemi specifici.
Ultralytics Server Discord: Ultralytics ha un server Discord dove è possibile interagire con altri utenti e con gli sviluppatori.
Documentazione e risorse ufficiali
Ultralytics YOLO11 Documenti: La documentazione ufficiale fornisce una panoramica completa di YOLO11, oltre a guide sull'installazione, l'uso e la risoluzione dei problemi.
Queste risorse dovrebbero fornire una solida base per la risoluzione dei problemi e il miglioramento dei progetti di YOLO11 , nonché per la connessione con altri membri della comunità di YOLO11 .
Conclusione
La risoluzione dei problemi è parte integrante di qualsiasi processo di sviluppo ed essere dotati delle giuste conoscenze può ridurre significativamente il tempo e lo sforzo spesi per risolvere i problemi. Questa guida si propone di affrontare i problemi più comuni che gli utenti del modello YOLO11 si trovano ad affrontare all'interno dell'ecosistema Ultralytics . Comprendendo e affrontando questi problemi comuni, è possibile garantire un avanzamento più fluido del progetto e ottenere risultati migliori con le attività di computer vision.
Ricordate 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 coperti dalla documentazione standard. Continuate a imparare, a sperimentare e a condividere le vostre esperienze per contribuire alla conoscenza collettiva della comunità.
Buona risoluzione dei problemi!
FAQ
Come si risolvono gli errori di installazione con YOLO11?
Gli errori di installazione possono spesso essere dovuti a problemi di compatibilità o a dipendenze mancanti. Assicurarsi di utilizzare Python 3.8 o successivo e di avere installato PyTorch 1.8 o successivo. È utile usare ambienti virtuali per evitare conflitti. Per una guida all'installazione passo passo, seguite la nostra guida ufficiale all'installazione. Se si riscontrano errori di importazione, provare una nuova installazione o aggiornare la libreria all'ultima versione.
Perché l'addestramento del mio modello YOLO11 è lento su un singolo GPU?
L'addestramento su un singolo GPU potrebbe essere lento a causa di batch di grandi dimensioni o di memoria insufficiente. Per accelerare la formazione, utilizzare più GPU. Assicurarsi che il sistema disponga di più GPU e regolare le impostazioni di .yaml
per specificare il numero di GPU, ad es, gpus: 4
. Aumentare di conseguenza la dimensione del batch per utilizzare completamente le GPU senza superare i limiti di memoria. Esempio di comando:
Come posso assicurarmi che il mio modello YOLO11 si stia allenando su GPU?
Se il valore "device" è "null" nei registri di allenamento, in genere significa che il processo di allenamento è impostato per utilizzare automaticamente un GPU disponibile. Per assegnare esplicitamente uno specifico GPU, impostare il valore di 'device' nel proprio .yaml
file di configurazione. Ad esempio:
Questo imposta il processo di formazione al primo GPU. Consultare il file nvidia-smi
per confermare la configurazione di CUDA .
Come posso monitorare e seguire i miei progressi nell'allenamento del modello YOLO11 ?
Il monitoraggio e la visualizzazione dei progressi dell'allenamento possono essere gestiti in modo efficiente attraverso strumenti come TensorBoard, Comete Ultralytics HUB. Questi strumenti consentono di registrare e visualizzare metriche quali perdita, precisione, richiamo e mAP. L'implementazione di un arresto precoce basato su queste metriche può anche aiutare a ottenere migliori risultati di formazione.
Cosa devo fare se YOLO11 non riconosce il formato del mio set di dati?
Assicurarsi che il set di dati e le etichette siano conformi al formato previsto. Verificare che le annotazioni siano accurate e di alta qualità. In caso di problemi, consultare la guida Raccolta dati e annotazione per le migliori pratiche. Per ulteriori indicazioni specifiche sui set di dati, consultare la sezione Set di dati nella documentazione.