为Ultralytics YOLO仓库中的错误报告创建最小可复现示例
在为Ultralytics YOLO仓库提交错误报告时,提供一个最小可复现示例(MRE)至关重要。MRE是一个小型的、自包含的代码片段,展示了您遇到的问题。提供MRE有助于维护者和贡献者更好地理解问题,并更高效地进行修复。本指南解释了在向Ultralytics YOLO仓库提交错误报告时如何创建MRE。
1. 隔离问题
创建MRE的第一步是隔离问题。移除任何与问题无关的不必要代码或依赖项。专注于导致问题的代码部分,并消除任何无关的代码段。
2. 使用公开模型和数据集
在创建MRE时,使用公开可用的模型和数据集来复现问题。例如,使用yolov8n.pt
模型和coco8.yaml
数据集。这确保了维护者和贡献者可以轻松运行您的示例并调查问题,而无需访问专有数据或自定义模型。
3. 包含所有必要的依赖项
确保您的MRE中包含所有必要的依赖项。如果您的代码依赖于外部库,请指定所需的包及其版本。理想情况下,使用yolo checks
列出依赖项(如果您已安装ultralytics
)或使用pip list
列出其他工具的依赖项。
4. 清晰描述问题
提供清晰简洁的问题描述。解释预期的行为和您实际遇到的行为。如果适用,请包含任何相关的错误消息或日志。
5. 正确格式化代码
在问题描述中使用代码块正确格式化您的代码。这使得其他人更容易阅读和理解您的代码。在GitHub中,您可以通过用三个反引号(```)包裹代码并指定语言来创建代码块:
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)
错误消息:
依赖项:
torch==2.3.0
ultralytics==8.2.0
在这个示例中,MRE用最少的代码量展示了问题,使用了公开模型("yolov8n.pt"
),包含了所有必要的依赖项,并提供了清晰的问题描述和错误消息。
通过遵循这些指南,您将帮助Ultralytics YOLO仓库的维护者和贡献者更高效地理解和解决您的问题。
常见问题
如何在Ultralytics YOLO仓库中为错误报告创建有效的最小可复现示例(MRE)?
要为Ultralytics YOLO仓库中的错误报告创建有效的最小可复现示例(MRE),请遵循以下步骤:
- 隔离问题:移除任何与问题无关的代码或依赖项。
- 使用公开模型和数据集:利用公开资源如
yolov8n.pt
和coco8.yaml
以方便复现。 - 包含所有必要的依赖项:指定所需的包及其版本。您可以使用
yolo checks
列出依赖项(如果您已安装ultralytics
)或使用pip list
列出其他工具的依赖项。 - 清晰描述问题:解释预期的和实际的行为,包括任何错误消息或日志。
- 正确格式化代码:使用代码块格式化您的代码,使其更易读。
- 测试您的MRE:确保您的MRE无需修改即可复现问题。
有关详细指南,请参阅创建最小可复现示例。
为什么在Ultralytics YOLO错误报告中使用公开可用的模型和数据集?
在您的MRE中使用公开可用的模型和数据集确保了维护者可以轻松运行您的示例,而无需访问专有数据。这有助于更快、更高效地解决问题。例如,使用yolov8n.pt
模型和coco8.yaml
数据集有助于标准化和简化调试过程。了解更多关于公共模型和数据集的信息,请参阅使用公共模型和数据集部分。
在Ultralytics YOLO的错误报告中应包含哪些信息?
Ultralytics YOLO的全面错误报告应包括:
- 清晰描述:解释问题、预期行为和实际行为。
- 错误信息:包含任何相关的错误信息或日志。
- 依赖项:列出所需的依赖项及其版本。
- MRE:提供一个最小可复现示例。
- 复现步骤:概述复现问题所需的步骤。
完整的检查清单,请参阅撰写清晰的问题描述部分。
在GitHub上提交错误报告时如何正确格式化代码?
在GitHub上提交错误报告时正确格式化代码:
- 使用三重反引号(```)创建代码块。
- 指定编程语言以进行语法高亮,例如,```python。
- 确保代码正确缩进以提高可读性。
示例:
更多代码格式化技巧,请参阅正确格式化您的代码。
在提交MRE进行错误报告之前,应检查哪些常见错误?
在提交MRE之前,请确保:
- 验证问题是否可复现。
- 确保所有依赖项已列出且正确。
- 移除任何不必要的代码。
- 测试MRE以确保它无需修改即可复现问题。
详细的检查清单,请访问测试您的MRE部分。