Link to this section为 Bug 报告创建最小可复现示例#
在为 Ultralytics YOLO 仓库提交 bug 报告时,提供一个 最小可复现示例 (MRE) 至关重要。MRE 是一段小巧、独立的程序代码,用于演示你所遇到的问题。提供 MRE 有助于维护者和贡献者理解问题,并更高效地进行修复。本指南介绍了在向 Ultralytics YOLO 仓库提交 bug 报告时如何创建 MRE。
Link to this section隔离问题#
创建 MRE 的第一步是隔离问题。移除任何与该问题无直接关联的多余代码或依赖项。集中精力于导致问题的特定代码部分,并剔除无关内容。
Link to this section使用公共模型和数据集#
在创建 MRE 时,请使用公开可用的模型和数据集来复现问题。例如,使用 yolo26n.pt 模型和 coco8.yaml 数据集。这可以确保维护者和贡献者能够轻松运行你的示例并调查问题,而无需获取专有数据或自定义模型。
Link to this section包含所有必要的依赖项#
Ensure all necessary dependencies are included in your MRE. If your code relies on external libraries, specify the required packages and their versions. Ideally, list the dependencies in your bug report using yolo checks if you have ultralytics installed or pip list for other tools.
Link to this section清晰描述问题#
对你所遇到的问题提供清晰简洁的描述。解释预期的行为以及你实际遇到的行为。如果适用,请附上任何相关的错误信息或日志。
Link to this section正确格式化代码#
在问题描述中使用代码块来正确格式化你的代码。这样可以让其他人更容易阅读和理解。在 GitHub 上,你可以通过使用三重反引号 (```) 包裹代码并指定语言来创建代码块:
```python
# Your Python code goes here
```Link to this section测试你的 MRE#
在提交 MRE 之前,请进行测试以确保它能够准确复现问题。确保其他人无需任何修改即可运行你的示例且不会出现任何问题。
Link to this sectionMRE 示例#
以下是一个假设的 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 仓库的维护者和 贡献者 更高效地理解和解决你的问题。
Link to this section常见问题解答#
Link to this section我该如何在 Ultralytics YOLO 仓库中为 bug 报告创建有效的最小可复现示例 (MRE)?#
要在 Ultralytics YOLO 仓库中为 bug 报告创建有效的最小可复现示例 (MRE),请遵循以下步骤:
- 隔离问题:移除任何与该问题无直接关联的代码或依赖项。
- 使用公共模型和数据集:利用像
yolo26n.pt和coco8.yaml这样的公共资源以便于复现。 - Include All Necessary Dependencies: Specify required packages and their versions. You can list dependencies using
yolo checksif you haveultralyticsinstalled orpip list. - 清晰描述问题:解释预期的行为和实际行为,并附上任何错误信息或日志。
- 正确格式化代码:使用代码块来格式化代码,使其更易于阅读。
- 测试你的 MRE:确保你的 MRE 无需修改即可复现问题。
详细指南请参阅 为 Bug 报告创建最小可复现示例。
Link to this section为什么我在 Ultralytics YOLO bug 报告的 MRE 中应使用公开可用的模型和数据集?#
在 MRE 中使用公开可用的模型和数据集,可以确保维护者无需访问专有数据即可轻松运行你的示例。这使得问题能够更快、更高效地得到解决。例如,使用 yolo26n.pt 模型和 coco8.yaml 数据集有助于标准化并简化调试过程。在 使用公共模型和数据集 一节中了解更多有关公共模型和数据集的信息。
Link to this section我的 Ultralytics YOLO bug 报告中应该包含哪些信息?#
一份全面的 Ultralytics YOLO bug 报告应包括:
- 清晰的描述:解释问题、预期行为和实际行为。
- 错误信息:附上任何相关的错误信息或日志。
- 依赖项:列出所需的依赖项及其版本。
- MRE:提供一个最小可复现示例。
- 复现步骤:概述复现该问题所需的步骤。
有关完整检查清单,请参阅 清晰描述问题 一节。
Link to this section在 GitHub 上提交 bug 报告时,我该如何正确格式化代码?#
在 GitHub 上提交 bug 报告时,若要正确格式化代码:
- 使用三重反引号 (```) 来创建代码块。
- 指定编程语言以进行语法高亮,例如 ```python。
- 确保你的代码缩进正确,以提高可读性。
示例:
```python
# Your Python code goes here
```有关代码格式化的更多提示,请参阅 正确格式化代码。
Link to this section在提交 bug 报告的 MRE 之前,有哪些常见的错误需要检查?#
在提交 MRE 之前,请确保:
- 验证问题是可复现的。
- 确保所有依赖项都已列出且正确无误。
- 移除任何不必要的代码。
- 测试 MRE 以确保它能够在无修改的情况下复现问题。
有关详细检查清单,请访问 测试你的 MRE 一节。