Création d’un exemple minimal reproductible pour les rapports de bogues
Lors de la soumission d'un rapport de bug pour les référentiels Ultralytics YOLO, il est essentiel de fournir un exemple minimal reproductible (MRE). Un MRE est un petit morceau de code autonome qui démontre le problème que vous rencontrez. Fournir un MRE aide les mainteneurs et les contributeurs à comprendre le problème et à travailler plus efficacement sur un correctif. Ce guide explique comment créer un MRE lors de la soumission de rapports de bogues aux référentiels Ultralytics YOLO.
1. Isoler le problème
La première étape dans la création d'un MRE est d'isoler le problème. Supprimez tout code ou dépendances inutiles qui ne sont pas directement liés au problème. Concentrez-vous sur la partie spécifique du code qui cause le problème et éliminez toutes les sections non pertinentes.
2. Utiliser des modèles et des ensembles de données publics
Lors de la création d'un MRE, utilisez des modèles et des ensembles de données accessibles au public pour reproduire le problème. Par exemple, utilisez le yolov8n.pt
modèle et le coco8.yaml
jeu de données. Cela garantit que les mainteneurs et les contributeurs peuvent facilement exécuter votre exemple et étudier le problème sans avoir besoin d'accéder à des données propriétaires ou à des modèles personnalisés.
3. Inclure toutes les dépendances nécessaires
Assurez-vous que toutes les dépendances nécessaires sont incluses dans votre MRE. Si votre code dépend de bibliothèques externes, spécifiez les packages requis et leurs versions. Idéalement, listez les dépendances dans votre rapport de bug en utilisant yolo checks
si vous avez ultralytics
installé ou pip list
pour d'autres outils.
4. Rédiger une description claire du problème
Fournissez une description claire et concise du problème que vous rencontrez. Expliquez le comportement attendu et le comportement réel que vous constatez. Le cas échéant, incluez les messages d'erreur ou les journaux pertinents.
5. Formater correctement votre code
Formatez correctement votre code en utilisant des blocs de code dans la description du problème. Cela permet aux autres de lire et de comprendre plus facilement votre code. Dans GitHub, vous pouvez créer un bloc de code en encadrant votre code avec des triples backticks (```) et en spécifiant le langage :
```python
# Your Python code goes here
```
6. Testez votre MRE
Avant de soumettre votre MRE, testez-le pour vous assurer qu'il reproduit fidèlement le problème. Assurez-vous que d'autres peuvent exécuter votre exemple sans problème ni modification.
Exemple de MRE
Voici un exemple de MRE pour un rapport de bug hypothétique :
Description du bug :
Lors de l'exécution de l'inférence sur une image à 0 canal, je reçois une erreur liée aux dimensions du tenseur d'entrée.
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)
Message d'erreur :
RuntimeError: Expected input[1, 0, 640, 640] to have 3 channels, but got 0 channels instead
Dépendances :
torch==2.3.0
ultralytics==8.2.0
Dans cet exemple, le MRE démontre le problème avec une quantité minimale de code, utilise un modèle public ("yolov8n.pt"
), comprend toutes les dépendances nécessaires et fournit une description claire du problème ainsi que le message d'erreur.
En suivant ces directives, vous aiderez les mainteneurs et les contributeurs des référentiels Ultralytics YOLO à comprendre et à résoudre votre problème plus efficacement.
FAQ
Comment créer un exemple minimal reproductible (MRE) efficace pour les rapports de bogues dans les référentiels Ultralytics YOLO ?
Pour créer un exemple minimal reproductible (MRE) efficace pour les rapports de bogues dans les référentiels Ultralytics YOLO, suivez ces étapes :
- Isolez le problème : Supprimez tout code ou dépendances qui ne sont pas directement liés au problème.
- Utiliser des modèles et des jeux de données publics: Utilisez des ressources publiques comme
yolov8n.pt
etcoco8.yaml
pour une reproductibilité plus facile. - Inclure toutes les dépendances nécessaires: Spécifiez les paquets requis et leurs versions. Vous pouvez lister les dépendances en utilisant
yolo checks
si vous avezultralytics
installé oupip list
. - Rédigez une description claire du problème : Expliquez le comportement attendu et réel, y compris les messages d’erreur ou les journaux.
- Formatez correctement votre code : Utilisez des blocs de code pour formater votre code, le rendant plus facile à lire.
- Testez votre MRE : Assurez-vous que votre MRE reproduit le problème sans modifications.
Pour un guide détaillé, consultez Création d'un exemple minimal reproductible.
Pourquoi devrais-je utiliser des modèles et des ensembles de données accessibles au public dans mon MRE pour les rapports de bogues Ultralytics YOLO ?
L'utilisation de modèles et d'ensembles de données accessibles au public dans votre MRE garantit que les responsables de la maintenance peuvent facilement exécuter votre exemple sans avoir besoin d'accéder à des données propriétaires. Cela permet une résolution des problèmes plus rapide et plus efficace. Par exemple, l'utilisation du yolov8n.pt
modèle et coco8.yaml
dataset permet de standardiser et de simplifier le processus de débogage. Pour en savoir plus sur les modèles et les ensembles de données publics, consultez le Utiliser des modèles et des jeux de données publics section.
Quelles informations dois-je inclure dans mon rapport de bogue pour Ultralytics YOLO ?
Un rapport de bogue complet pour Ultralytics YOLO doit inclure :
- Description claire: Expliquez le problème, le comportement attendu et le comportement réel.
- Messages d'Erreur : Incluez tous les messages d'erreur ou journaux pertinents.
- Dépendances : Liste les dépendances requises et leurs versions.
- MRE : Fournissez un exemple minimal reproductible.
- Étapes pour reproduire : Décrivez les étapes nécessaires pour reproduire le problème.
Pour une liste de contrôle complète, consultez la section Rédiger une description claire du problème.
Comment puis-je formater correctement mon code lors de la soumission d'un rapport de bug sur GitHub ?
Pour formater correctement votre code lors de la soumission d’un rapport de bogue sur GitHub :
- Utilisez des triples backticks (```) pour créer des blocs de code.
- Spécifiez le langage de programmation pour la coloration syntaxique, par exemple, ```python.
- Assurez-vous que votre code est correctement indenté pour une meilleure lisibilité.
Exemple :
```python
# Your Python code goes here
```
Pour plus de conseils sur le formatage du code, consultez la section Formater correctement votre code.
Quelles sont les erreurs courantes à vérifier avant de soumettre mon MRE pour un rapport de bug ?
Avant de soumettre votre MRE, assurez-vous de :
- Vérifiez que le problème est reproductible.
- Assurez-vous que toutes les dépendances sont listées et correctes.
- Supprimer tout code inutile.
- Testez le MRE pour vous assurer qu'il reproduit le problème sans modifications.
Pour une liste de contrôle détaillée, consultez la section Testez votre MRE.