如何为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上,可以通过将代码包裹在三个反引号(''')中并指定语言来创建代码块: 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"),包含了所有必要的依赖,并提供了清晰的问题描述以及错误消息。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485