Creazione di un esempio minimo riproducibile per le segnalazioni di bug#
Quando invii una segnalazione di bug per i repository Ultralytics YOLO, è essenziale fornire un esempio minimo riproducibile (MRE). Un MRE è una piccola porzione di codice autonoma che dimostra il problema che stai riscontrando. Fornire un MRE aiuta i maintainer e i contributori a comprendere il problema e a lavorare più efficientemente a una soluzione. Questa guida spiega come creare un MRE quando invii segnalazioni di bug per i repository Ultralytics YOLO.
1. Isola il problema#
Il primo passaggio per creare un MRE consiste nell'isolare il problema. Rimuovi qualsiasi codice o dipendenza non direttamente correlati al problema. Concentrati sulla parte specifica del codice che causa il problema ed elimina tutte le sezioni irrilevanti.
2. Usa modelli e dataset pubblici#
Quando crei un MRE, usa modelli e dataset disponibili pubblicamente per riprodurre il problema. Ad esempio, usa il modello yolo26n.pt e il dataset coco8.yaml. In questo modo, i maintainer e i contributori possono eseguire facilmente il tuo esempio e analizzare il problema senza dover accedere a dati proprietari o modelli personalizzati.
3. Includi tutte le dipendenze necessarie#
Assicurati che il tuo MRE includa tutte le dipendenze necessarie. Se il tuo codice dipende da librerie esterne, specifica i pacchetti richiesti e le relative versioni. Idealmente, elenca le dipendenze nella segnalazione di bug usando yolo checks se hai installato ultralytics oppure pip list per altri strumenti.
4. Scrivi una descrizione chiara del problema#
Fornisci una descrizione chiara e concisa del problema che stai riscontrando. Spiega il comportamento previsto e quello effettivo che stai osservando. Se applicabile, includi eventuali messaggi di errore o log pertinenti.
5. Formatta correttamente il codice#
Formatta correttamente il codice usando blocchi di codice nella descrizione del problema. Questo facilita la lettura e la comprensione del codice da parte degli altri. Su GitHub, puoi creare un blocco di codice racchiudendo il codice tra tre backtick (```) e specificando il linguaggio:
```python
# Your Python code goes here
```6. Testa il tuo MRE#
Prima di inviare il tuo MRE, testalo per assicurarti che riproduca accuratamente il problema. Assicurati che altri possano eseguire il tuo esempio senza problemi o modifiche.
Esempio di un MRE#
Ecco un esempio di MRE per una segnalazione di bug ipotetica:
Descrizione del bug:
Quando eseguo l'inferenza su un'immagine con 0 canali, ricevo un errore relativo alle dimensioni del tensore di input.
MRE:
import torch
from ultralytics import YOLO
# Load the model
model = YOLO("yolo26n.pt")
# Load a 0-channel image
image = torch.rand(1, 0, 640, 640)
# Run the model
results = model(image)Messaggio di errore:
RuntimeError: Expected input[1, 0, 640, 640] to have 3 channels, but got 0 channels insteadDipendenze:
torch==2.8.0ultralytics==8.4.142
In questo esempio, l'MRE dimostra il problema con una quantità minima di codice, usa un modello pubblico ("yolo26n.pt"), include tutte le dipendenze necessarie e fornisce una descrizione chiara del problema insieme al messaggio di errore.
Seguendo queste linee guida, aiuterai i maintainer e i contributori dei repository Ultralytics YOLO a comprendere e risolvere il problema in modo più efficiente.
FAQ#
Per creare un esempio minimo riproducibile (MRE) efficace per le segnalazioni di bug nei repository Ultralytics YOLO, segui questi passaggi:
- Isola il problema: rimuovi qualsiasi codice o dipendenza non direttamente correlati al problema.
- Usa modelli e dataset pubblici: utilizza risorse pubbliche come
yolo26n.ptecoco8.yamlper facilitare la riproducibilità. - Includi tutte le dipendenze necessarie: specifica i pacchetti richiesti e le relative versioni. Puoi elencare le dipendenze usando
yolo checksse hai installatoultralyticsoppurepip list. - Scrivi una descrizione chiara del problema: spiega il comportamento previsto e quello effettivo, includendo eventuali messaggi di errore o log.
- Formatta correttamente il codice: usa blocchi di codice per formattare il codice e facilitarne la lettura.
- Testa il tuo MRE: assicurati che il tuo MRE riproduca il problema senza modifiche.
Per una guida dettagliata, consulta Creazione di un esempio minimo riproducibile.
L'uso di modelli e dataset disponibili pubblicamente nel tuo MRE garantisce che i maintainer possano eseguire facilmente il tuo esempio senza dover accedere a dati proprietari. Questo consente di risolvere i problemi più rapidamente ed efficientemente. Ad esempio, l'uso del modello
yolo26n.pte del datasetcoco8.yamlaiuta a standardizzare e semplificare il processo di debug. Scopri di più sui modelli e dataset pubblici nella sezione Usa modelli e dataset pubblici.Una segnalazione di bug completa per Ultralytics YOLO dovrebbe includere:
- Descrizione chiara: spiega il problema, il comportamento previsto e quello effettivo.
- Messaggi di errore: includi eventuali messaggi di errore o log pertinenti.
- Dipendenze: elenca le dipendenze richieste e le relative versioni.
- MRE: fornisci un esempio minimo riproducibile.
- Passaggi per riprodurre il problema: descrivi i passaggi necessari per riprodurre il problema.
Per una checklist completa, consulta la sezione Scrivi una descrizione chiara del problema.
Per formattare correttamente il codice quando invii una segnalazione di bug su GitHub:
- Usa tre backtick (```) per creare blocchi di codice.
- Specifica il linguaggio di programmazione per l'evidenziazione della sintassi, ad esempio ```python.
- Assicurati che il codice sia indentato correttamente per facilitarne la lettura.
Esempio:
```python # Your Python code goes here ```Per ulteriori suggerimenti sulla formattazione del codice, consulta Formatta correttamente il codice.
Prima di inviare il tuo MRE, assicurati di:
- Verificare che il problema sia riproducibile.
- Assicurarti che tutte le dipendenze siano elencate e corrette.
- Rimuovere qualsiasi codice non necessario.
- Testare il MRE per assicurarti che riproduca il problema senza modifiche.
Per una checklist dettagliata, visita la sezione Testa il tuo MRE.