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