在向Ultralytics YOLO项目的代码库提交错误报告时,提供一个最小可复现示例(MRE)是至关重要的。MRE是一个小型且独立的代码片段,它展示了遇到的问题。提供MRE可以帮助维护者和贡献者更有效地理解问题并寻找解决方案。以下是创建MRE的指南。
1. 隔离问题
创建MRE的第一步是隔离问题。移除任何与问题无直接关系的代码或依赖项。专注于引起问题的代码部分,并删除不相关的部分。
2. 使用公共模型和数据集
在创建MRE时,使用公开可用的模型和数据集来复现问题。例如,使用命令和模型以及数据集。这样可以确保维护者和贡献者能够轻松地运行示例并调查问题,而无需访问专有数据或自定义模型。
3. 包含所有必要的依赖项
确保MRE中包含了所有必要的依赖项。如果代码依赖于外部库,请指定所需的包及其版本。理想情况下,应在错误报告中列出依赖项,例如使用命令检查。
4. 编写清晰的主题描述
提供清晰简洁的问题描述。解释预期的行为和遇到的实际行为。如果适用,包括任何错误消息或相关日志。
5. 正确格式化代码
通过在问题描述中使用代码块来正确格式化代码。这使得其他人更容易阅读和理解代码。在GitHub上,可以通过将代码用三个反引号包围并指定语言来创建代码块:
python
# Python代码放在这里
6. 测试MRE
在提交MRE之前,测试它以确保它准确地复现了问题。确保其他人可以无问题地运行示例,无需任何修改。
MRE示例
以下是一个假设错误报告的MRE示例:
故障描述:
在执行0通道图像的推理时,遇到了一个与输入张量尺寸相关的错误。
MRE:
import torch
from ultralytics import YOLO
# 加载模型
model = YOLO("yolov8n.pt")
# 加载一个0通道的图像
image = torch.rand(1, 0, 640, 640)
# 运行模型
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用最少的代码展示了问题,使用了公共模型,包括了所有必要的依赖项,并提供了清晰的问题描述以及错误消息。
常见问题解答
如何为Ultralytics YOLO项目的错误报告创建有效的最小可复现示例(EMR)?
要为Ultralytics YOLO项目的错误报告创建有效的最小可复现示例(EMR),请按照以下步骤操作:
隔离问题:移除任何与问题无直接关系的代码或依赖项。
使用公共模型和数据集:使用资源如和以便于复现。
包含所有必要的依赖项:指定所需的包及其版本。可以使用命令检查如果有ultralytics安装或pip list对于其他工具。
编写清晰的问题的描述:解释预期的行为和实际行为,包括任何错误消息或日志。
正确格式化代码:使用代码块来格式化代码,以便于阅读。
测试MRE:确保MRE可以无修改地复现问题。
有关详细指南,请参考创建最小可复现示例。
为什么要在Ultralytics YOLO错误报告的MRE中使用公共模型和数据集?
在Ultralytics YOLO错误报告的MRE中使用公共模型和数据集可以确保维护者能够轻松地运行示例,而无需访问专有数据。这允许更快速和有效的故障排除。例如,如果使用模型和,它有助于标准化和简化调试过程。有关公共模型和数据集的更多信息,请访问使用公共模型和数据集部分。
应该在Ultralytics YOLO错误报告中包含哪些信息?
完整的Ultralytics YOLO错误报告应包括:
清晰的描述:解释问题,预期的行为和实际行为。
错误消息:包括任何错误消息或日志。
依赖项:列出所需的依赖项及其版本。
MRE:提供一个最小可复现示例。
复现步骤:概述复现问题所需的步骤。
有关完整检查列表,请参考撰写清晰的主题描述部分。
如何在GitHub上正确格式化错误报告中的代码?
要在GitHub上正确格式化错误报告中的代码,请使用三个悬挂点(```)创建代码块。指定编程语言以进行语法突出显示,例如```python。确保代码有正确的缩进,以便于阅读。示例:
python
# Python代码放在这里
有关代码格式化的更多建议,请参考正确格式化代码。
在提交错误报告的MRE之前,应该注意哪些常见错误?
在提交MRE之前,请确保:
检查问题是否可复现。
确保所有依赖项都已列出并且正确。
移除任何不必要的代码。
测试MRE以确保它无修改地复现问题。