Ein minimales reproduzierbares Beispiel für Fehlerberichte erstellen#
Wenn du einen Fehler in Ultralytics-YOLO-Repositories meldest, solltest du unbedingt ein minimales reproduzierbares Beispiel (MRE) bereitstellen. Ein MRE ist ein kleiner, eigenständiger Codeausschnitt, der das auftretende Problem veranschaulicht. Ein MRE hilft den Maintainerinnen und Maintainer sowie den Beitragenden, das Problem zu verstehen und effizienter an einer Lösung zu arbeiten. Diese Anleitung erklärt, wie du beim Melden von Fehlern in Ultralytics-YOLO-Repositories ein MRE erstellst.
1. Problem eingrenzen#
Der erste Schritt beim Erstellen eines MRE besteht darin, das Problem einzugrenzen. Entferne unnötigen Code und Abhängigkeiten, die nicht unmittelbar mit dem Problem zusammenhängen. Konzentriere dich auf den konkreten Codeabschnitt, der das Problem verursacht, und entferne alle irrelevanten Teile.
2. Öffentliche Modelle und Datensätze verwenden#
Verwende beim Erstellen eines MRE öffentlich verfügbare Modelle und Datensätze, um das Problem nachzustellen. Verwende zum Beispiel das Modell yolo26n.pt und den Datensatz coco8.yaml. So können Maintainerinnen und Maintainer sowie Beitragende dein Beispiel problemlos ausführen und das Problem untersuchen, ohne Zugriff auf proprietäre Daten oder benutzerdefinierte Modelle zu benötigen.
3. Alle erforderlichen Abhängigkeiten angeben#
Stelle sicher, dass dein MRE alle erforderlichen Abhängigkeiten enthält. Wenn dein Code auf externe Bibliotheken angewiesen ist, gib die benötigten Pakete und deren Versionen an. Führe die Abhängigkeiten in deinem Fehlerbericht idealerweise mit yolo checks auf, wenn ultralytics installiert ist, oder mit pip list für andere Tools.
4. Das Problem klar beschreiben#
Beschreibe das auftretende Problem klar und prägnant. Erläutere das erwartete und das tatsächlich beobachtete Verhalten. Füge gegebenenfalls relevante Fehlermeldungen oder Protokolle hinzu.
5. Code richtig formatieren#
Formatiere deinen Code in der Problembeschreibung mithilfe von Codeblöcken. So können andere deinen Code leichter lesen und verstehen. In GitHub kannst du einen Codeblock erstellen, indem du deinen Code in dreifache Backticks (```) einschließt und die Sprache angibst:
```python
# Your Python code goes here
```6. MRE testen#
Teste dein MRE vor dem Einreichen, um sicherzustellen, dass es das Problem genau reproduziert. Vergewissere dich, dass andere dein Beispiel ohne Probleme oder Änderungen ausführen können.
Beispiel für ein MRE#
Hier ist ein Beispiel für ein MRE zu einem hypothetischen Fehlerbericht:
Fehlerbeschreibung:
Beim Ausführen der Inferenz auf einem Bild mit 0 Kanälen erhalte ich einen Fehler im Zusammenhang mit den Dimensionen des Eingabetensors.
MRE:
import torch
from ultralytics import YOLO
# Das Modell laden
model = YOLO("yolo26n.pt")
# Ein Bild mit 0 Kanälen laden
image = torch.rand(1, 0, 640, 640)
# Das Modell ausführen
results = model(image)Fehlermeldung:
RuntimeError: Expected input[1, 0, 640, 640] to have 3 channels, but got 0 channels insteadAbhängigkeiten:
torch==2.8.0ultralytics==8.4.142
In diesem Beispiel veranschaulicht das MRE das Problem mit möglichst wenig Code, verwendet ein öffentliches Modell ("yolo26n.pt"), enthält alle erforderlichen Abhängigkeiten und beschreibt das Problem klar samt Fehlermeldung.
Wenn du diese Richtlinien befolgst, hilfst du den Maintainerinnen und Maintainer sowie den Beitragenden der Ultralytics-YOLO-Repositories, dein Problem besser zu verstehen und effizienter zu beheben.
Häufig gestellte Fragen#
Gehe folgendermaßen vor, um ein aussagekräftiges minimales reproduzierbares Beispiel (MRE) für Fehlerberichte in Ultralytics-YOLO-Repositories zu erstellen:
- Problem eingrenzen: Entferne Code und Abhängigkeiten, die nicht unmittelbar mit dem Problem zusammenhängen.
- Öffentliche Modelle und Datensätze verwenden: Nutze öffentliche Ressourcen wie
yolo26n.ptundcoco8.yaml, damit sich das Problem leichter reproduzieren lässt. - Alle erforderlichen Abhängigkeiten angeben: Gib die benötigten Pakete und deren Versionen an. Du kannst die Abhängigkeiten mit
yolo checksaufführen, wennultralyticsinstalliert ist, oder mitpip list. - Das Problem klar beschreiben: Erläutere das erwartete und das tatsächliche Verhalten, einschließlich etwaiger Fehlermeldungen oder Protokolle.
- Code richtig formatieren: Verwende Codeblöcke, damit dein Code leichter lesbar ist.
- MRE testen: Stelle sicher, dass dein MRE das Problem ohne Änderungen reproduziert.
Eine ausführliche Anleitung findest du unter Ein minimales reproduzierbares Beispiel erstellen.
Wenn du für dein MRE öffentlich verfügbare Modelle und Datensätze verwendest, können Maintainerinnen und Maintainer dein Beispiel problemlos ausführen, ohne Zugriff auf proprietäre Daten zu benötigen. So lassen sich Probleme schneller und effizienter beheben. Beispielsweise helfen das Modell
yolo26n.ptund der Datensatzcoco8.yamldabei, die Fehlersuche zu vereinheitlichen und zu vereinfachen. Weitere Informationen zu öffentlichen Modellen und Datensätzen findest du im Abschnitt Öffentliche Modelle und Datensätze verwenden.Ein umfassender Fehlerbericht für Ultralytics YOLO sollte Folgendes enthalten:
- Klare Beschreibung: Erläutere das Problem, das erwartete Verhalten und das tatsächliche Verhalten.
- Fehlermeldungen: Füge relevante Fehlermeldungen oder Protokolle hinzu.
- Abhängigkeiten: Führe die benötigten Abhängigkeiten und deren Versionen auf.
- MRE: Stelle ein minimales reproduzierbares Beispiel bereit.
- Schritte zur Reproduktion: Beschreibe die Schritte, mit denen sich das Problem reproduzieren lässt.
Eine vollständige Checkliste findest du im Abschnitt Das Problem klar beschreiben.
So formatierst du deinen Code richtig, wenn du einen Fehlerbericht auf GitHub einreichst:
- Verwende dreifache Backticks (```), um Codeblöcke zu erstellen.
- Gib die Programmiersprache für die Syntaxhervorhebung an, z. B. ```python.
- Achte auf die richtige Einrückung deines Codes, damit er gut lesbar ist.
Beispiel:
```python # Your Python code goes here ```Weitere Tipps zur Codeformatierung findest du unter Code richtig formatieren.
Bevor du dein MRE einreichst, solltest du Folgendes sicherstellen:
- Überprüfe, ob sich das Problem reproduzieren lässt.
- Stelle sicher, dass alle Abhängigkeiten aufgeführt und korrekt sind.
- Entferne unnötigen Code.
- Teste das MRE, um sicherzustellen, dass es das Problem ohne Änderungen reproduziert.
Eine ausführliche Checkliste findest du im Abschnitt MRE testen.