为 Bug 报告创建最小可复现示例#
当为 Ultralytics YOLO 仓库提交 Bug 报告时,提供一个最小可复现示例 (MRE) 至关重要。MRE 是一段简短、自包含的代码,用于演示你遇到的问题。提供 MRE 有助于维护者和贡献者更高效地理解问题并进行修复。本指南介绍了在向 Ultralytics YOLO 仓库提交 Bug 报告时如何创建 MRE。
隔离问题#
创建 MRE 的第一步是隔离问题。移除任何与该问题无直接关联的多余代码或依赖项。集中精力于导致问题的特定代码部分,并剔除无关内容。
使用公共模型和数据集#
在创建 MRE 时,请使用公开可用的模型和数据集来复现问题。例如,使用 yolo26n.pt 模型和 coco8.yaml 数据集。这可以确保维护者和贡献者能够轻松运行你的示例并调查问题,而无需访问私有数据或自定义模型。
包含所有必要的依赖项#
确保你的 MRE 中包含所有必要的依赖项。如果你的代码依赖外部库,请指定所需的软件包及其版本。理想情况下,如果你安装了 ultralytics,请在 Bug 报告中使用 yolo checks 列出依赖项,或者对于其他工具使用 pip list。
清晰描述问题#
对你所遇到的问题提供清晰简洁的描述。解释预期的行为以及你实际遇到的行为。如果适用,请附上任何相关的错误信息或日志。
正确格式化代码#
在问题描述中使用代码块来正确格式化你的代码。这样可以让其他人更容易阅读和理解。在 GitHub 上,你可以通过使用三重反引号 (```) 包裹代码并指定语言来创建代码块:
```python
# Your Python code goes here
```测试你的 MRE#
在提交 MRE 之前,请进行测试以确保它能够准确复现问题。确保其他人无需任何修改即可运行你的示例且不会出现任何问题。
MRE 示例#
以下是一个假设的 bug 报告的 MRE 示例:
Bug 描述:
在对 0 通道图像运行推理时,我收到一个与输入张量维度相关的错误。
MRE:
import torch
from ultralytics import YOLO
# Load the model
model = YOLO("yolo26n.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.3.0ultralytics==8.2.0
在此示例中,MRE 通过最少量的代码展示了问题,使用了公开模型("yolo26n.pt"),包含了所有必要的依赖项,并提供了对问题的清晰描述以及错误信息。
遵循这些准则,你将帮助 Ultralytics YOLO 仓库的维护者和贡献者更高效地理解和解决你的问题。
常见问题解答#
我该如何在 Ultralytics YOLO 仓库中为 bug 报告创建有效的最小可复现示例 (MRE)?#
要在 Ultralytics YOLO 仓库中为 bug 报告创建有效的最小可复现示例 (MRE),请遵循以下步骤:
- 隔离问题:移除任何与该问题无直接关联的代码或依赖项。
- 使用公共模型和数据集:利用
yolo26n.pt和coco8.yaml等公共资源以便更容易地复现。 - 包含所有必要的依赖项:指定所需的软件包及其版本。如果你安装了
ultralytics,你可以使用yolo checks列出依赖项,或者使用pip list。 - 清晰描述问题:解释预期的行为和实际行为,并附上任何错误信息或日志。
- 正确格式化代码:使用代码块来格式化代码,使其更易于阅读。
- 测试你的 MRE:确保你的 MRE 无需修改即可复现问题。
有关详细指南,请参阅创建最小可复现示例。
为什么我在 Ultralytics YOLO bug 报告的 MRE 中应使用公开可用的模型和数据集?#
在 MRE 中使用公开可用的模型和数据集可以确保维护者轻松运行你的示例,而无需访问私有数据。这可以更快、更高效地解决问题。例如,使用 yolo26n.pt 模型和 coco8.yaml 数据集有助于标准化和简化调试过程。在使用公共模型和数据集部分了解有关公共模型和数据集的更多信息。
我的 Ultralytics YOLO bug 报告中应该包含哪些信息?#
一份全面的 Ultralytics YOLO bug 报告应包括:
- 清晰的描述:解释问题、预期行为和实际行为。
- 错误信息:附上任何相关的错误信息或日志。
- 依赖项:列出所需的依赖项及其版本。
- MRE:提供一个最小可复现示例。
- 复现步骤:概述复现该问题所需的步骤。
有关完整的检查清单,请参考编写清晰的问题描述部分。
在 GitHub 上提交 bug 报告时,我该如何正确格式化代码?#
在 GitHub 上提交 bug 报告时,若要正确格式化代码:
- 使用三重反引号 (```) 来创建代码块。
- 指定编程语言以进行语法高亮,例如 ```python。
- 确保你的代码缩进正确,以提高可读性。
示例:
```python
# Your Python code goes here
```有关代码格式化的更多技巧,请参阅正确格式化代码。
在提交 bug 报告的 MRE 之前,有哪些常见的错误需要检查?#
在提交 MRE 之前,请确保:
- 验证问题是可复现的。
- 确保所有依赖项都已列出且正确无误。
- 移除任何不必要的代码。
- 测试 MRE 以确保它能够在无修改的情况下复现问题。
有关详细的检查清单,请访问测试你的 MRE部分。