在向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上,可以通过将代码包裹在三个反引号(''')中并指定语言来创建代码块:
python
# Your Python code goes here
6. 测试MRE
在提交MRE之前,测试它以确保它准确地复现了问题。确保其他人可以无问题或修改地运行示例。
MRE示例
以下是一个假设的错误报告的MRE示例:
错误描述:
在执行单通道图像的推理时,遇到了一个与输入张量尺寸相关的错误。
MRE:
python
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)
Error message:
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"),包含了所有必要的依赖,并提供了清晰的问题描述以及错误消息。