在提交代码问题时,提供一个最小可复现示例(MRE)是至关重要的。MRE是一个自包含的、最小的代码片段,能够展示遇到的问题。以下是为Ultralytics YOLO仓库创建MRE的步骤:
分离问题
创建MRE的第一步是将问题分离。移除所有与问题无关的代码和依赖关系,专注于引起问题的代码特定部分,并删除无关的部分。
使用公开模型和数据集
在创建MRE时,使用公开的模型和数据集来重现问题。例如,使用yolov8n.pt
模型和coco8.yaml
数据集。这样,维护者和贡献者可以在不访问自己的数据或自定义模型的情况下,轻松地运行示例并调查问题。
包含所有必要的依赖关系
确保MRE中包含了所有必要的依赖关系。如果代码依赖于外部库,请指定所需的包及其版本。理想情况下,应在bug报告中列出依赖关系。
编写清晰的问题描述
请清晰而简洁地描述遇到的问题。说明预期的行为和实际发生的行为。如果适用,包括相关错误消息或日志。
正确格式化代码
使用代码块来适当地格式化代码,使其易于阅读和理解。在GitHub上,可以通过用三个反引号(''')包围代码并指定语言来创建代码块。
python
# Your Python code goes here
测试MRE
在提交MRE之前,请测试以确保问题能够被准确重现。确保其他人可以在无需任何修改的情况下运行示例并遇到问题。
MRE示例
以下是一个假设的bug报告的MRE示例:
问题描述:在0通道的图像上执行推理时,会出现与输入尺寸相关的错误tensor。
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用最小的代码展示了问题,并且包含了所有必要的依赖关系和清晰的错误消息。
遵循这些指南
遵循这些指南,Ultralytics YOLO仓库的维护者和贡献者将能够理解问题,并更有效地解决它。
常见问题解答
如何为Ultralytics YOLO仓库的bug报告创建有效的最小可复现示例(MRE)?
要为Ultralytics YOLO仓库的bug报告创建有效的MRE,请按照以下步骤操作:
- 分离问题:移除与问题无关的代码或依赖关系。
- 使用公开模型和数据集:利用如
yolov8n.pt
和coco8.yaml
这样的公共资源来提高重现性。 - 包含所有必要的依赖关系:指定所需的包及其版本。
- 编写清晰的问题描述:包括错误消息或日志,并说明预期的行为和实际行为。
- 正确格式化代码:使用代码块来格式化代码,使其易于阅读。
- 测试MRE:确保MRE能够无需修改即可重现问题。
有关创建最小可复现示例的详细指南,请参考。
为什么在Ultralytics YOLO的bug报告的MRE中使用公开模型和数据集是必要的?
使用公开模型和数据集可以使得维护者在无需访问私有数据的情况下轻松运行示例。这有助于快速而高效地解决问题。例如,yolov8n.pt
模型和coco8.yaml
数据集有助于标准化和简化调试过程。有关公开模型和数据集的更多信息,请参考部分。
在Ultralytics YOLO的bug报告中应该包含哪些信息?
一个全面的Ultralytics YOLO bug报告应该包括以下内容:
- 清晰的描述:说明问题、预期的行为和实际的行为。
- 错误消息:包括相关的错误消息或日志。
- 依赖关系:列出所需的依赖关系及其版本。
- MRE:提供一个最小可复现的示例。
- 重现步骤:概述重现问题所需的步骤。
有关详细信息,请参考部分。
如何在GitHub上正确格式化bug报告中的代码?
在GitHub上提交bug报告时,可以通过以下方式正确格式化代码:
- 使用三重反引号(```)创建代码块。
- 指定用于语法高亮的编程语言,例如```python。
- 确保代码正确缩进,以提高可读性。
python
# Your Python code goes here
有关代码格式化的更多提示,请参考。
在提交MRE之前,应该检查哪些常见的错误?
在提交MRE之前,请检查以下内容:
- 确保问题可以重现。
- 确保所有依赖关系都已列出并且正确。
- 删除不必要的代码。
- 测试MRE,确保问题可以无需修改即可重现。