Overslaan naar inhoud

Een minimaal reproduceerbaar voorbeeld maken voor bugrapporten in Ultralytics YOLO Repositories

Bij het indienen van een bugrapport voor Ultralytics YOLO repositories, is het essentieel om een minimaal reproduceerbaar voorbeeld (MRE) te geven. Een MRE is een klein, zelfstandig stukje code dat het probleem demonstreert dat je ervaart. Het leveren van een MRE helpt beheerders en bijdragers om het probleem te begrijpen en efficiënter aan een oplossing te werken. Deze handleiding legt uit hoe je een MRE maakt bij het indienen van bugrapporten bij Ultralytics YOLO repositories.

1. Isoleer het probleem

De eerste stap bij het maken van een MRE is het isoleren van het probleem. Dit betekent het verwijderen van onnodige code of afhankelijkheden die niet direct gerelateerd zijn aan het probleem. Richt je op het specifieke deel van de code dat het probleem veroorzaakt en verwijder alle irrelevante code.

2. Openbare modellen en datasets gebruiken

Gebruik bij het maken van een MRE openbaar beschikbare modellen en datasets om het probleem te reproduceren. Gebruik bijvoorbeeld het 'yolov8n.pt' model en de 'coco8.yaml' dataset. Dit zorgt ervoor dat de beheerders en bijdragers gemakkelijk je voorbeeld kunnen uitvoeren en het probleem kunnen onderzoeken zonder dat ze toegang nodig hebben tot beschermde gegevens of aangepaste modellen.

3. Neem alle noodzakelijke afhankelijkheden op

Zorg ervoor dat je alle benodigde afhankelijkheden opneemt in je MRE. Als je code afhankelijk is van externe bibliotheken, specificeer dan de benodigde pakketten en hun versies. Geef bij voorkeur een requirements.txt bestand of vermeld de afhankelijkheden in je bugrapport.

4. Schrijf een duidelijke beschrijving van het probleem

Geef een duidelijke en beknopte beschrijving van het probleem dat je ondervindt. Leg uit wat het verwachte gedrag is en wat het werkelijke gedrag is. Voeg indien van toepassing relevante foutmeldingen of logboeken toe.

5. Formatteer je code goed

Als je een MRE indient, formatteer je code dan op de juiste manier door codeblokken te gebruiken in de beschrijving van het probleem. Dit maakt het makkelijker voor anderen om je code te lezen en te begrijpen. In GitHub kun je een codeblok maken door je code te omhullen met driedubbele backticks (```) en de taal te specificeren:

# Your Python code goes here

6. Test je MRE

Test je MRE voordat je hem instuurt om er zeker van te zijn dat hij het probleem nauwkeurig reproduceert. Zorg ervoor dat anderen je voorbeeld zonder problemen of aanpassingen kunnen uitvoeren.

Voorbeeld van een MRE

Hier is een voorbeeld van een MRE voor een hypothetisch bugrapport:

Bug beschrijving:

Wanneer je de detect.py script op de voorbeeldafbeelding uit de 'coco8.yaml' dataset, krijg ik een fout die te maken heeft met de afmetingen van de invoer 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)

Foutmelding:

RuntimeError: Expected input[1, 0, 640, 640] to have 3 channels, but got 0 channels instead

Afhankelijkheden:

  • torch==2.0.0
  • ultralytics==8.0.90

In dit voorbeeld demonstreert de MRE het probleem met een minimale hoeveelheid code, gebruikt een openbaar model ('yolov8n.pt'), bevat alle benodigde afhankelijkheden en geeft een duidelijke beschrijving van het probleem samen met de foutmelding.

Door deze richtlijnen te volgen, help je de beheerders en bijdragers van Ultralytics YOLO repositories om je probleem te begrijpen en efficiënter op te lossen.



Gemaakt op 2023-11-12, Bijgewerkt op 2023-11-12
Auteurs: glenn-jocher (1)

Reacties