为错误报告创建最小可复现示例
在提交 Ultralytics YOLO 仓库的错误报告时,提供 最小可复现示例 (MRE) 至关重要。MRE 是一段简短、独立的代码,用于演示你遇到的问题。提供 MRE 有助于维护者和贡献者理解问题,并更高效地进行修复。本指南介绍了如何在向 Ultralytics YOLO 仓库提交错误报告时创建 MRE。
隔离问题
创建 MRE 的第一步是隔离问题。删除与该问题没有直接关系的任何不必要的代码或依赖项。集中精力于导致问题的特定代码部分,并消除任何不相关的部分。
使用公共模型和数据集
创建 MRE 时,请使用公开可用的模型和数据集来复现问题。例如,使用 yolo26n.pt 模型和 coco8.yaml 数据集。这可以确保维护者和贡献者能够轻松运行你的示例并调查问题,而无需访问私有数据或自定义模型。
包含所有必要的依赖项
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.
编写清晰的问题描述
提供你所遇到问题的清晰简洁的描述。解释预期行为以及你遇到的实际行为。如果适用,请附上任何相关的错误消息或日志。
正确格式化你的代码
在问题描述中使用代码块正确格式化你的代码。这使得其他人更容易阅读和理解你的代码。在 GitHub 中,你可以通过用三个反引号 (```) 包裹代码并指定语言来创建代码块:
```python
# Your Python code goes here
```测试你的 MRE
在提交 MRE 之前,请对其进行测试,以确保它能准确复现问题。确保其他人可以毫无问题地运行你的示例,无需进行任何修改。
MRE 示例
这是一个假设的错误报告的 MRE 示例:
错误描述:
在对 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 仓库的维护者和 贡献者 更高效地理解并解决你的问题。
常见问题 (FAQ)
如何为 Ultralytics YOLO 仓库中的错误报告创建有效的最小可复现示例 (MRE)?
要为 Ultralytics YOLO 仓库中的错误报告创建有效的最小可复现示例 (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 无需修改即可复现问题。
有关详细指南,请参阅 创建最小可复现示例。
为什么我在 Ultralytics YOLO 错误报告的 MRE 中应该使用公开可用的模型和数据集?
在 MRE 中使用公开可用的模型和数据集可确保维护者无需访问私有数据即可轻松运行你的示例。这有助于更快、更高效地解决问题。例如,使用 yolo26n.pt 模型和 coco8.yaml 数据集有助于标准化和简化调试过程。在 使用公共模型和数据集 部分了解更多关于公共模型和数据集的信息。
我的 Ultralytics YOLO 错误报告应该包含哪些信息?
一份全面的 Ultralytics YOLO 错误报告应包括:
- 清晰描述:解释问题、预期行为和实际行为。
- 错误消息:包含任何相关的错误消息或日志。
- 依赖项:列出所需的依赖项及其版本。
- MRE:提供一个最小可复现示例。
- 复现步骤:概述复现该问题所需的步骤。
有关完整检查清单,请参阅 编写清晰的问题描述 部分。
在 GitHub 上提交错误报告时,如何正确格式化我的代码?
在 GitHub 上提交错误报告时,正确格式化代码的方法:
- 使用三个反引号 (```) 创建代码块。
- 指定编程语言以进行语法高亮,例如 ```python。
- 确保你的代码缩进正确,以提高可读性。
示例:
```python
# Your Python code goes here
```有关代码格式化的更多提示,请参阅 正确格式化你的代码。
在提交错误报告的 MRE 之前,有哪些常见的错误需要检查?
在提交 MRE 之前,请确保:
- 验证问题是可复现的。
- 确保所有依赖项已列出且正确。
- 删除任何不必要的代码。
- 测试 MRE 以确保它在无需修改的情况下复现了问题。
有关详细检查清单,请访问 测试你的 MRE 部分。