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 Minimum Reproducible Example (MRE). Un MRE è un frammento di codice piccolo e autonomo che dimostra il problema che stai riscontrando. Fornire un MRE aiuta i manutentori e i contributori a comprendere il problema e a lavorare su una correzione in modo più efficiente. Questa guida spiega come creare un MRE quando si inviano segnalazioni di bug ai repository Ultralytics YOLO.
Isola il problema#
Il primo passo per creare un MRE è isolare il problema. Rimuovi qualsiasi codice o dipendenza non necessaria che non sia direttamente correlata al problema. Concentrati sulla parte specifica del codice che sta causando il problema ed elimina eventuali sezioni irrilevanti.
Usa modelli e dataset pubblici#
Quando crei un MRE, utilizza modelli e dataset pubblicamente disponibili per riprodurre il problema. Ad esempio, usa il modello yolo26n.pt e il dataset coco8.yaml. Ciò garantisce che i manutentori e i contributori possano eseguire facilmente il tuo esempio e indagare sul problema senza aver bisogno di accesso a dati proprietari o modelli personalizzati.
Includi tutte le dipendenze necessarie#
Assicurati che tutte le dipendenze necessarie siano incluse nel tuo MRE. Se il tuo codice si basa su librerie esterne, specifica i pacchetti richiesti e le loro versioni. Idealmente, elenca le dipendenze nella tua segnalazione di bug usando yolo checks se hai installato ultralytics o pip list per altri strumenti.
Scrivi una descrizione chiara del problema#
Fornisci una descrizione chiara e concisa del problema che stai riscontrando. Spiega il comportamento previsto e quello reale che stai incontrando. Se applicabile, includi eventuali messaggi di errore o log pertinenti.
Formatta il tuo codice correttamente#
Formatta il tuo codice correttamente usando blocchi di codice nella descrizione del problema. Questo rende più facile per gli altri leggere e comprendere il tuo codice. Su GitHub, puoi creare un blocco di codice racchiudendo il tuo codice tra tre backtick (```) e specificando il linguaggio:
```python
# Your Python code goes here
```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 un MRE per una ipotetica segnalazione di bug:
Descrizione del bug:
Quando eseguo l'inferenza su un'immagine a 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.3.0ultralytics==8.2.0
In questo esempio, l'MRE dimostra il problema con una quantità minima di codice, utilizza un modello pubblico ("yolo26n.pt"), include tutte le dipendenze necessarie e fornisce una chiara descrizione del problema insieme al messaggio di errore.
Seguendo queste linee guida, aiuterai i manutentori e i contributori dei repository Ultralytics YOLO a comprendere e risolvere il tuo problema in modo più efficiente.
FAQ#
Per creare un Esempio Minimo Riproducibile (MRE) efficace per le segnalazioni di bug nei repository YOLO di Ultralytics, segui questi passaggi:
- Isola il problema: Rimuovi qualsiasi codice o dipendenza non direttamente correlata al problema.
- Usa modelli e dataset pubblici: Utilizza risorse pubbliche come
yolo26n.ptecoco8.yamlper una maggiore riproducibilità. - Includi tutte le dipendenze necessarie: Specifica i pacchetti richiesti e le loro versioni. Puoi elencare le dipendenze usando
yolo checksse hai installatoultralyticsopip list. - Scrivi una descrizione chiara del problema: Spiega il comportamento previsto e quello reale, includendo eventuali messaggi di errore o log.
- Formatta il tuo codice correttamente: Usa i blocchi di codice per formattare il tuo codice, rendendolo più facile da leggere.
- Testa il tuo MRE: Assicurati che il tuo MRE riproduca il problema senza modifiche.
Per una guida dettagliata, vedi Creating a Minimum Reproducible Example.
L'uso di modelli e dataset pubblicamente disponibili nel tuo MRE garantisce che i manutentori possano eseguire facilmente il tuo esempio senza la necessità di accedere a dati proprietari. Ciò consente una risoluzione dei problemi più rapida ed efficiente. Ad esempio, l'uso del modello
yolo26n.pte del datasetcoco8.yamlaiuta a standardizzare e semplificare il processo di debug. Scopri di più su modelli e dataset pubblici nella sezione Use Public Models and Datasets.Una segnalazione di bug completa per Ultralytics YOLO dovrebbe includere:
- Descrizione chiara: Spiega il problema, il comportamento previsto e il comportamento reale.
- Messaggi di errore: Includi eventuali messaggi di errore o log pertinenti.
- Dipendenze: Elenca le dipendenze richieste e le loro versioni.
- MRE: Fornisci un Esempio Minimo Riproducibile.
- Passaggi per riprodurre: Delinea i passaggi necessari per riprodurre il problema.
Per una checklist completa, fai riferimento alla sezione Write a Clear Description of the Issue.
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 tuo codice sia indentato correttamente per la leggibilità.
Esempio:
```python # Your Python code goes here ```Per ulteriori suggerimenti sulla formattazione del codice, vedi la sezione Format Your Code Properly.
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 l'MRE per assicurarti che riproduca il problema senza modifiche.
Per una checklist dettagliata, visita la sezione Test Your MRE.