提交错误报告的最佳实践

在为Ultralytics YOLO仓库提交错误报告时,提供一个最小可复现示例(MRE)至关重要。MRE是一段小的、自包含的代码,能够展示遇到的问题。MRE有助于维护者和贡献者理解问题并更高效地协作解决。本指南将解释如何在提交错误报告时创建MRE。

1. 问题隔离

创建MRE的第一步是隔离问题。移除与问题无直接关系的代码或依赖项,专注于引起问题的代码部分,并移除所有不相关的部分。

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

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

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

确保MRE中包含所有必需的依赖项。如果代码依赖于外部库,请指定所需的包及其版本。理想情况下,应在错误报告中列出依赖项,例如使用"yolo checks"如果安装了ultralytics,或者使用"pip list"对于其他工具。

4. 清晰描述问题

清晰而简洁地描述遇到的问题。解释期望的行为和实际观察到的行为。如果适用,包括所有相关的错误消息或日志。

5. 正确格式化代码

使用代码块在问题描述中正确格式化代码。这将使其他人更容易阅读和理解代码。在GitHub上,可以通过用三个反引号(```)包围代码并指定语言来创建代码块:

python # Your Python code goes here

6. 测试MRE

在提交MRE之前,应该测试它以确保它正确地复现了问题。确保其他人可以无需修改即可执行示例。

MRE示例

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

错误描述:

在0通道图像上执行推理时,收到了一个与输入张量尺寸相关的错误消息。

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.3.0 ultralytics==8.2.0

在这个示例中,MRE用最小的代码量展示了问题,使用了公共模型("yolov8n.pt"),包含了所有必需的依赖项,并提供了清晰的问题描述以及错误消息。

常见问题解答

如何为Ultralytics YOLO仓库的错误报告创建有效的MRE?

要为Ultralytics YOLO仓库的错误报告创建有效的MRE,请遵循以下步骤:

  • 隔离问题:移除所有与问题无直接关系的代码或依赖项。
  • 使用公共模型和数据集:利用公共资源如"yolov8n.pt"和"coco8.yaml"以提高可复现性。
  • 包含所有必要的依赖项:指定所需的包及其版本。可以使用"yolo checks"如果安装了ultralytics,或者使用"pip list"。
  • 清晰描述问题:解释期望的行为和实际行为,包括所有错误消息或日志。
  • 正确格式化代码:使用代码块格式化代码,以便更容易阅读。
  • 测试MRE:确保MRE无需修改即可复现问题。

有关创建最小可复现示例的详细指南,请参见。

为什么在Ultralytics YOLO错误报告的MRE中使用公共模型和数据集?

在MRE中使用公共模型和数据集可以确保维护者能够轻松执行示例,而无需访问专有数据。这有助于标准化和简化调试过程。例如,使用"yolov8n.pt"模型和"coco8.yaml"数据集有助于标准化和简化调试过程。更多关于公共模型和数据集的信息,请参见部分。

Ultralytics YOLO错误报告中应该提供哪些信息?

一个全面的Ultralytics YOLO错误报告应该包括:

  • 清晰的描述:解释问题、期望的行为和实际行为。
  • 错误消息:包括所有相关的错误消息或日志。
  • 依赖项:列出所需的依赖项及其版本。
  • MRE:提供一个最小可复现的示例。
  • 复现步骤:描述复现问题的步骤。

完整的检查列表,请参见部分。

在GitHub上提交错误报告时如何正确格式化代码?

在GitHub上提交错误报告时,正确格式化代码的方法是:

  • 使用三个反引号(```)创建代码块。
  • 指定代码块的编程语言,例如```python。
  • 确保代码正确缩进以提高可读性。

示例:

python # Your Python code goes here

更多代码格式化提示,请参见。

在提交错误报告的MRE之前,应该检查哪些常见错误?

在提交MRE之前,应该确保:

  • 检查问题是否可复现。
  • 确保所有依赖项已列出且正确。
  • 移除所有不必要的代码。
  • 测试MRE以确保它无需修改即可复现问题。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485