Risoluzione dei problemi comuni di YOLO

YOLO common training and deployment issues

Introduzione

Questa guida funge da aiuto completo per la risoluzione dei problemi comuni riscontrati durante il lavoro con YOLO26 sui tuoi progetti Ultralytics. Orientarsi tra questi problemi può essere un gioco da ragazzi con la giusta guida, assicurando che i tuoi progetti rimangano sulla strada giusta senza inutili ritardi.



Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues

Problemi comuni

Errori di installazione

Gli errori di installazione possono verificarsi per vari motivi, come versioni incompatibili, dipendenze mancanti o configurazioni dell'ambiente errate. Per prima cosa, controlla di eseguire quanto segue:

  • Stai usando Python 3.8 o versioni successive come raccomandato.
  • Assicurati di avere installata la versione corretta di PyTorch (1.8 o successiva).
  • Prendi in considerazione l'uso di ambienti virtuali per evitare conflitti.
  • Segui passo dopo passo la guida all'installazione ufficiale.

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

  • Errori di importazione o problemi di dipendenze - Se ricevi errori durante l'importazione di YOLO26, o se hai problemi legati alle dipendenze, prendi in considerazione i seguenti passaggi per la risoluzione dei problemi:

    • Installazione pulita: A volte, iniziare con un'installazione pulita può risolvere problemi imprevisti. Soprattutto con librerie come Ultralytics, dove gli aggiornamenti potrebbero introdurre modifiche alla struttura dell'albero dei file o alle funzionalità.

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

    • Controlla le dipendenze: Verifica che tutte le dipendenze richieste siano installate correttamente e siano delle versioni compatibili.

    • Revisiona i cambiamenti: Se inizialmente hai clonato o installato una versione precedente, tieni presente che aggiornamenti significativi potrebbero influire sulla struttura o sulle funzionalità della libreria. Fai sempre riferimento alla documentazione ufficiale o ai changelog per comprendere eventuali cambiamenti importanti.

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

  • Esecuzione di YOLO26 su GPU - Se hai problemi a eseguire YOLO26 su GPU, prendi in considerazione i seguenti passaggi per la risoluzione dei problemi:

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

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

    • Controlla la compatibilità della GPU: Il supporto per architetture GPU precedenti a Turing e compute capability (SM) < 7.5 è stato abbandonato da cuDNN 9.11.0. Quindi, se hai una GPU più vecchia - come una 1080Ti - potresti dover usare una versione di PyTorch compilata con una versione più vecchia di CUDA/cuDNN. Puoi verificarlo eseguendo import torch; cap = torch.cuda.get_device_capability(0) if torch.cuda.is_available() else (0, 0); cudnn = torch.backends.cudnn.version() or 0; ok = "not compatible" if cudnn >= 91100 and (cap[0] < 7 or (cap[0] == 7 and cap[1] < 5)) else "should be ok"; print(f"Compute capability: SM {cap[0]}.{cap[1]}, cuDNN: {cudnn} => {ok}")

    • Attivazione dell'ambiente: Assicurati di essere nell'ambiente corretto dove sono installati tutti i pacchetti necessari.

    • Aggiorna i tuoi pacchetti: I pacchetti obsoleti potrebbero non essere compatibili con la tua GPU. Mantienili aggiornati.

    • Configurazione del programma: Controlla se il programma o il codice specifica l'uso della GPU. In YOLO26, questo potrebbe essere nelle impostazioni o nella configurazione.

Problemi di addestramento del modello

Questa sezione affronterà i problemi comuni riscontrati durante l'addestramento e le relative spiegazioni e soluzioni.

Verifica delle impostazioni di configurazione

Problema: Non sei sicuro che le impostazioni di configurazione nel file .yaml vengano applicate correttamente durante l'addestramento del modello.

Soluzione: Le impostazioni di configurazione nel file .yaml dovrebbero essere applicate quando si utilizza la funzione model.train(). Per assicurarti che queste impostazioni siano applicate correttamente, segui questi passaggi:

  • Conferma che il percorso verso il tuo file di configurazione .yaml sia corretto.

  • Assicurati di passare il percorso del tuo file .yaml come argomento data quando chiami model.train(), come mostrato di seguito:

    model.train(data="/path/to/your/data.yaml", batch=4)

Accelerare l'addestramento con più GPU

Problema: L'addestramento è lento su una singola GPU e vuoi velocizzare il processo usando più GPU.

Soluzione: Aumentare la batch size può accelerare l'addestramento, ma è essenziale considerare la capacità di memoria della GPU. Per velocizzare l'addestramento con più GPU, segui questi passaggi:

  • Assicurati di avere più GPU disponibili.

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

  • Aumenta la batch size di conseguenza per utilizzare appieno le molteplici GPU senza superare i limiti di memoria.

  • Modifica il tuo 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)

Parametri di monitoraggio continuo

Problema: Vuoi sapere quali parametri dovrebbero essere monitorati continuamente durante l'addestramento, oltre alla loss.

Soluzione: Sebbene la loss sia una metrica cruciale da monitorare, è anche essenziale tracciare altre metriche per l'ottimizzazione delle prestazioni del modello. Alcune metriche chiave da monitorare durante l'addestramento includono:

Puoi accedere a queste metriche dai log di addestramento o utilizzando strumenti come TensorBoard o wandb per la visualizzazione. Implementare l'early stopping basato su queste metriche può aiutarti a ottenere risultati migliori.

Strumenti per tracciare il progresso dell'addestramento

Problema: Stai cercando consigli su strumenti per tracciare il progresso dell'addestramento.

Soluzione: Per tracciare e visualizzare il progresso dell'addestramento, puoi prendere in considerazione l'utilizzo dei seguenti strumenti:

  • TensorBoard: TensorBoard è una scelta popolare per visualizzare le metriche di addestramento, tra cui loss, accuracy e altro ancora. Puoi integrarlo con il tuo processo di addestramento YOLO26.
  • Comet: Comet fornisce un kit di strumenti completo per il tracciamento e il confronto degli esperimenti. Ti consente di tracciare metriche, iperparametri e persino i pesi del modello. Anche l'integrazione con i modelli YOLO è semplice, fornendoti una panoramica completa del tuo ciclo sperimentale.
  • Ultralytics Platform: Ultralytics Platform offre un ambiente specializzato per tracciare i modelli YOLO, dandoti una piattaforma unica per gestire metriche, set di dati e persino collaborare con il tuo team. Dato il suo focus su misura per YOLO, offre opzioni di tracciamento più personalizzate.

Ognuno di questi strumenti offre i propri vantaggi, quindi potresti voler considerare le esigenze specifiche del tuo progetto quando fai una scelta.

Come controllare se l'addestramento sta avvenendo sulla GPU

Problema: Il valore 'device' nei log di addestramento è 'null' e non sei sicuro se l'addestramento stia avvenendo sulla GPU.

Soluzione: Il fatto che il valore 'device' sia 'null' significa tipicamente che il processo di addestramento è impostato per usare automaticamente una GPU disponibile, che è il comportamento predefinito. Per assicurarti che l'addestramento avvenga su una specifica GPU, puoi impostare manualmente il valore 'device' sull'indice della GPU (es. '0' per la prima GPU) nel tuo file di configurazione .yaml:

device: 0

Questo assegnerà esplicitamente il processo di addestramento alla GPU specificata. Se desideri addestrare sulla CPU, imposta 'device' su 'cpu'.

Tieni d'occhio la cartella 'runs' per i log e le metriche per monitorare efficacemente il progresso dell'addestramento.

Considerazioni chiave per un addestramento efficace del modello

Ecco alcune cose da tenere a mente, se stai affrontando problemi relativi all'addestramento del modello.

Formato del dataset ed etichette

  • Importanza: Le fondamenta di qualsiasi modello di machine learning risiedono nella qualità e nel formato dei dati su cui viene addestrato.
  • Raccomandazione: Assicurati che il tuo dataset personalizzato e le relative etichette aderiscano al formato previsto. È fondamentale verificare che le annotazioni siano accurate e di alta qualità. Annotazioni errate o scadenti possono compromettere il processo di apprendimento del modello, portando a risultati imprevedibili.

Convergenza del modello

  • Importanza: Raggiungere la convergenza del modello assicura che il modello abbia appreso a sufficienza dai training data.
  • Raccomandazione: Quando si addestra un modello 'da zero', è vitale assicurarsi che raggiunga un livello soddisfacente di convergenza. Ciò potrebbe necessitare di una durata di addestramento più lunga, con più epochs, rispetto a quando si sta facendo il fine-tuning di un modello esistente.

Learning Rate e batch size

  • Importanza: Questi iperparametri giocano un ruolo fondamentale nel determinare come il modello aggiorna i propri pesi durante l'addestramento.
  • Raccomandazione: Valuta regolarmente se il learning rate e la batch size scelti sono ottimali per il tuo specifico dataset. Parametri che non sono in armonia con le caratteristiche del dataset possono ostacolare le prestazioni del modello.

Distribuzione delle classi

  • Importanza: La distribuzione delle classi nel tuo dataset può influenzare le tendenze di predizione del modello.
  • Raccomandazione: Valuta regolarmente la distribuzione delle classi all'interno del tuo dataset. Se c'è uno squilibrio nelle classi, c'è il rischio che il modello sviluppi un bias verso la classe più prevalente. Questo bias può essere evidente nella matrice di confusione, dove il modello potrebbe predire prevalentemente la classe maggioritaria.

Cross-check con pesi preaddestrati

  • Importanza: Sfruttare pesi preaddestrati può fornire un solido punto di partenza per l'addestramento del modello, specialmente quando i dati sono limitati.
  • Raccomandazione: Come passaggio diagnostico, considera l'addestramento del tuo modello usando 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 ulteriore addestramento o aggiustamenti.

Problemi relativi alle predizioni del modello

Questa sezione affronterà i problemi comuni riscontrati durante la predizione del modello.

Ottenere predizioni di bounding box con il tuo modello personalizzato YOLO26

Problema: Quando si eseguono predizioni con un modello personalizzato YOLO26, ci sono sfide con il formato e la visualizzazione delle coordinate del bounding box.

Soluzione:

  • Formato delle coordinate: YOLO26 fornisce le coordinate del bounding box in valori assoluti di pixel. Per convertirle in coordinate relative (che vanno da 0 a 1), devi dividere per le dimensioni dell'immagine. Ad esempio, diciamo che la dimensione della tua immagine sia 640x640. Allora 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 file: Per ottenere il nome file dell'immagine su cui stai facendo la predizione, accedi direttamente al percorso del file immagine dall'oggetto risultato all'interno del tuo ciclo di predizione.

Filtrare gli oggetti nelle predizioni YOLO26

Problema: Affrontare problemi su come filtrare e visualizzare solo oggetti specifici nei risultati di predizione quando si esegue YOLO26 utilizzando la libreria Ultralytics.

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

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

Comprendere le metriche di precisione in YOLO26

Problema: Confusione riguardante la differenza tra box precision, mask precision e precision della confusion matrix in YOLO26.

Soluzione: La box precision misura l'accuratezza dei bounding box predetti rispetto ai box di ground truth effettivi usando lo IoU (Intersection over Union) come metrica. La mask precision valuta la concordanza tra le maschere di segmentazione predette e le maschere di ground truth nella classificazione degli oggetti a livello di pixel. La precision della matrice di confusione, d'altra parte, si concentra sull'accuratezza della classificazione complessiva tra tutte le classi e non considera l'accuratezza geometrica delle predizioni. È importante notare che un bounding box può essere geometricamente accurato (true positive) anche se la predizione della classe è errata, portando a differenze tra box precision e precision della matrice di confusione. Queste metriche valutano aspetti distinti delle prestazioni di un modello, riflettendo la necessità di metriche di valutazione differenti in vari compiti.

Estrarre le dimensioni degli oggetti in YOLO26

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

Soluzione: Per recuperare le dimensioni del bounding box, usa prima il modello YOLO26 di Ultralytics per predire gli oggetti in un'immagine. Quindi, estrai le informazioni su larghezza e altezza dei bounding box dai risultati della predizione.

from ultralytics import YOLO

# Load a pretrained YOLO26 model
model = YOLO("yolo26n.pt")

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

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

# 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 distribuzione

Problemi di distribuzione su GPU

Problema: Distribuire modelli in un ambiente multi-GPU può a volte portare a comportamenti imprevisti come un utilizzo della memoria inatteso, risultati incoerenti tra le GPU, ecc.

Soluzione: Controlla l'inizializzazione predefinita della GPU. Alcuni framework, come PyTorch, potrebbero inizializzare le operazioni CUDA su una GPU predefinita prima di passare alle GPU designate. Per evitare inizializzazioni predefinite impreviste, specifica la GPU direttamente durante la distribuzione e la predizione. Quindi, usa strumenti per monitorare l'utilizzo della GPU e l'utilizzo 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 del modello

Problema: Durante il processo di conversione o esportazione di modelli di machine learning verso formati o piattaforme diversi, gli utenti potrebbero riscontrare errori o comportamenti imprevisti.

Soluzione:

  • Controllo di compatibilità: Assicurati di utilizzare versioni di librerie e framework che siano compatibili tra loro. Versioni non corrispondenti possono portare a errori imprevisti durante la conversione.
  • Ripristino dell'ambiente: Se stai utilizzando un ambiente interattivo come Jupyter o Colab, prendi in considerazione il riavvio del tuo ambiente dopo aver effettuato modifiche o installazioni significative. Un nuovo inizio può talvolta risolvere problemi sottostanti.
  • Documentazione ufficiale: Fai sempre riferimento alla documentazione ufficiale dello strumento o della libreria che stai utilizzando per la conversione. Contiene spesso linee guida specifiche e best practice per l'esportazione del modello.
  • Supporto della community: Controlla il repository ufficiale della libreria o del framework per problemi simili segnalati da altri utenti. I manutentori o la community potrebbero aver fornito soluzioni o workaround nei thread di discussione.
  • Aggiorna regolarmente: Assicurati di utilizzare l'ultima versione dello strumento o della libreria. Gli sviluppatori rilasciano frequentemente aggiornamenti che correggono bug noti o migliorano le funzionalità.
  • Testa in modo incrementale: Prima di eseguire una conversione completa, testa il processo con un modello o un dataset più piccolo per identificare potenziali problemi fin dall'inizio.

Community e supporto

Interagire con una community di persone con interessi simili può migliorare significativamente la tua esperienza e il tuo successo nel lavorare con YOLO26. Di seguito sono riportati alcuni canali e risorse che potresti trovare utili.

Forum e canali per ottenere aiuto

GitHub Issues: Il repository YOLO26 su GitHub ha una scheda Issues dove puoi porre domande, segnalare bug e suggerire nuove funzionalità. La community e i manutentori sono attivi qui, ed è un ottimo posto per ottenere aiuto con problemi specifici.

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

Documentazione ufficiale e risorse

Documentazione di Ultralytics YOLO26: La documentazione ufficiale fornisce una panoramica completa di YOLO26, insieme a guide su installazione, utilizzo e risoluzione dei problemi.

Queste risorse dovrebbero fornire una solida base per la risoluzione dei problemi e il miglioramento dei tuoi progetti YOLO26, oltre a connetterti con altri membri della community YOLO26.

Conclusione

La risoluzione dei problemi è parte integrante di qualsiasi processo di sviluppo ed essere dotati della giusta conoscenza può ridurre significativamente il tempo e lo sforzo spesi nella risoluzione dei problemi. Questa guida mira ad affrontare le sfide più comuni riscontrate dagli utenti del modello YOLO26 all'interno dell'ecosistema Ultralytics. Comprendendo e affrontando questi problemi comuni, puoi garantire un progresso più fluido del progetto e ottenere risultati migliori con i tuoi compiti di computer vision.

Ricorda, la community di Ultralytics è una risorsa preziosa. Interagire con colleghi sviluppatori ed esperti può fornire approfondimenti e soluzioni aggiuntive che potrebbero non essere trattati nella documentazione standard. Continua sempre a imparare, sperimentare e condividere le tue esperienze per contribuire alla conoscenza collettiva della community.

FAQ

Come risolvo gli errori di installazione con YOLO26?

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

Perché l'addestramento del mio modello YOLO26 è lento su una singola GPU?

L'addestramento su una singola GPU potrebbe essere lento a causa di dimensioni dei batch elevate o memoria insufficiente. Per velocizzare l'addestramento, usa più GPU. Assicurati che il tuo sistema abbia più GPU disponibili e regola il tuo file di configurazione .yaml per specificare il numero di GPU, ad esempio gpus: 4. Aumenta la dimensione del batch di conseguenza per utilizzare appieno le GPU senza superare i limiti di memoria. Esempio di comando:

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

Come posso assicurarmi che il mio modello YOLO26 stia effettuando l'addestramento sulla GPU?

Se il valore 'device' mostra 'null' nei log di addestramento, significa generalmente che il processo di addestramento è impostato per utilizzare automaticamente una GPU disponibile. Per assegnare esplicitamente una specifica GPU, imposta il valore 'device' nel tuo file di configurazione .yaml. Ad esempio:

device: 0

Questo imposta il processo di addestramento sulla prima GPU. Consulta il comando nvidia-smi per confermare la tua configurazione CUDA.

Come posso monitorare e tracciare il progresso dell'addestramento del mio modello YOLO26?

Il tracciamento e la visualizzazione del progresso dell'addestramento possono essere gestiti in modo efficiente tramite strumenti come TensorBoard, Comet e Ultralytics Platform. Questi strumenti ti permettono di registrare e visualizzare metriche come loss, precision, recall e mAP. Implementare l'early stopping basato su queste metriche può anche aiutare a ottenere risultati di addestramento migliori.

Cosa devo fare se YOLO26 non riconosce il formato del mio dataset?

Assicurati che il tuo dataset e le etichette siano conformi al formato previsto. Verifica che le annotazioni siano accurate e di alta qualità. Se riscontri problemi, fai riferimento alla guida Data Collection and Annotation per le migliori pratiche. Per ulteriori indicazioni specifiche sui dataset, controlla la sezione Datasets nella documentazione.

Commenti