跳至内容

在Ultralytics YOLO Repositories 中为 Bug 报告创建最小可重现示例

在为Ultralytics YOLO 版本库提交错误报告时,必须提供一个最小可重现示例(MRE)。MRE 是一小段独立的代码,用于演示您遇到的问题。提供 MRE 有助于维护者和贡献者了解问题,并更高效地开展修复工作。本指南介绍了在向Ultralytics YOLO 资源库提交错误报告时如何创建 MRE。

1.隔离问题

创建 MRE 的第一步是隔离问题。这意味着要删除与问题无直接关系的任何不必要的代码或依赖项。重点关注导致问题的特定代码部分,并删除任何无关代码。

2.使用公共模型和数据集

创建 MRE 时,请使用公开可用的模型和数据集来重现问题。例如,使用 "yolov8n.pt "模型和 "coco8.yaml "数据集。这将确保维护者和贡献者可以轻松运行您的示例并调查问题,而无需访问专有数据或自定义模型。

3.包括所有必要的依赖项

确保在您的 MRE 中包含所有必要的依赖项。如果您的代码依赖于外部库,请指定所需的软件包及其版本。最好提供一个 requirements.txt 文件,或在错误报告中列出依赖关系。

4.撰写清晰的问题描述

简明扼要地描述您遇到的问题。解释您遇到的预期行为和实际行为。如果适用,请附上任何相关的错误信息或日志。

5.正确格式化代码

提交 MRE 时,请在问题描述中使用代码块正确格式化您的代码。这将使他人更容易阅读和理解您的代码。在 GitHub 中,您可以用三重反斜线 (````)封装代码并指定语言来创建代码块:

# Your Python code goes here

6.测试你的 MRE

在提交您的 MRE 之前,请对其进行测试,以确保它能准确地重现问题。确保其他人可以在没有任何问题或修改的情况下运行您的示例。

MRE 示例

下面是一个假设错误报告的 MRE 示例:

错误描述:

当运行 detect.py 脚本对 "coco8.yaml "数据集中的样本图像进行处理时,会出现与输入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)

错误信息:

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

依赖性:

  • torch==2.0.0
  • ultralytics==8.0.90

在此示例中,MRE 以最少的代码量演示了问题,使用了公共模型 ('yolov8n.pt'),包含了所有必要的依赖关系,并提供了清晰的问题描述和错误信息。

通过遵守这些准则,您可以帮助Ultralytics YOLO 软件仓库的维护者和贡献者更有效地了解和解决您的问题。



创建于 2023-11-12,更新于 2023-11-12
作者:glenn-jocher(1)

评论