Vai al contenuto

Creare un esempio minimo riproducibile per le segnalazioni di bug nei repository di Ultralytics YOLO

Quando si invia una segnalazione di bug per i repository di Ultralytics YOLO , è essenziale fornire un esempio minimo riproducibile (MRE). Un MRE è un piccolo pezzo di codice autonomo che dimostra il problema che stai riscontrando. Fornire un MRE aiuta i manutentori e i collaboratori a comprendere il problema e a lavorare alla sua risoluzione in modo più efficiente. Questa guida spiega come creare un MRE quando si inviano segnalazioni di bug ai repository di Ultralytics YOLO .

1. Isolare il problema

Il primo passo per creare un MRE è isolare il problema. Questo significa rimuovere tutto il codice non necessario o le dipendenze che non sono direttamente collegate al problema. Concentrati sulla parte specifica del codice che sta causando il problema e rimuovi tutto il codice irrilevante.

2. Utilizzare modelli e dataset pubblici

Quando crei un MRE, utilizza modelli e set di dati disponibili pubblicamente per riprodurre il problema. Ad esempio, usa il modello 'yolov8n.pt' e il dataset 'coco8.yaml'. In questo modo i manutentori e i collaboratori potranno facilmente eseguire il tuo esempio e indagare sul problema senza dover accedere a dati proprietari o a modelli personalizzati.

3. Includere tutte le dipendenze necessarie

Assicurati di includere tutte le dipendenze necessarie nel tuo MRE. Se il tuo codice si basa su librerie esterne, specifica i pacchetti necessari e le loro versioni. Idealmente, fornisci un file requirements.txt oppure elenca le dipendenze nella tua segnalazione di bug.

4. Scrivi una chiara descrizione del problema

Fornisci una descrizione chiara e concisa del problema che stai riscontrando. Spiega il comportamento previsto e quello effettivo che stai riscontrando. Se applicabile, includi tutti i messaggi di errore o i log rilevanti.

5. Formatta il tuo codice in modo corretto

Quando invii un MRE, formatta il tuo codice in modo corretto utilizzando i blocchi di codice nella descrizione del problema. In questo modo sarà più facile per gli altri leggere e capire il tuo codice. In GitHub, puoi creare un blocco di codice avvolgendo il tuo codice con tripli backtick (```) e specificando la lingua:

# Your Python code goes here

6. Prova il tuo MRE

Prima di inviare il tuo MRE, testalo per assicurarti che riproduca accuratamente il problema. Assicurati che gli altri possano eseguire il tuo esempio senza problemi o modifiche.

Esempio di MRE

Ecco un esempio di MRE per un'ipotetica segnalazione di bug:

Descrizione del bug:

Quando si esegue il programma detect.py sull'immagine campione del dataset 'coco8.yaml', ottengo un errore relativo alle dimensioni dell'input tensor.

MRE:

import torch
from ultralytics import YOLO

# Load the model
model = YOLO("yolov8n.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 instead

Dipendenze:

  • torch==2.0.0
  • ultralytics==8.0.90

In questo esempio, l'MRE dimostra il problema con una quantità minima di codice, utilizza un modello pubblico ('yolov8n.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 collaboratori dei repository di Ultralytics YOLO a comprendere e risolvere il tuo problema in modo più efficiente.



Creato 2023-11-12, Aggiornato 2023-11-12
Autori: glenn-jocher (1)

Commenti