创建用于 Bug 报告的最小可复现示例
当为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. 正确格式化你的代码
请在 issue 描述中使用代码块正确格式化您的代码。这能让其他人更容易阅读和理解您的代码。在 GitHub 中,您可以使用三个反引号 (```) 包裹您的代码并指定语言来创建一个代码块:
```python
# Your Python code goes here
```
6. 测试你的最小可复现示例(MRE)
在提交您的 MRE 之前,请对其进行测试,以确保其准确地重现问题。确保其他人可以运行您的示例,而不会出现任何问题或修改。
MRE 示例
这是一个假设的错误报告的最小可复现示例 (MRE):
Bug 描述:
在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 通过最少量的代码演示了该问题,并使用了一个公共模型("yolov8n.pt"
),包括所有必要的依赖项,并清楚地描述了问题以及错误消息。
通过遵循这些指南,您将帮助 Ultralytics YOLO 仓库的维护者和 贡献者 更高效地理解和解决您的问题。
常见问题
如何在 Ultralytics YOLO 仓库中为 Bug 报告创建一个有效的最小可复现示例 (MRE)?
要在 Ultralytics YOLO 存储库中为错误报告创建一个有效的最小可复现示例 (MRE),请按照以下步骤操作:
- 隔离问题:删除任何与问题没有直接关系的代码或依赖项。
- 使用公共模型和数据集:利用公共资源,例如
yolov8n.pt
和coco8.yaml
为了更容易重现。 - 包括所有必要的依赖项:指定所需的包及其版本。您可以使用以下命令列出依赖项
yolo checks
如果您有ultralytics
已安装或pip list
. - 清晰描述问题: 解释预期行为和实际行为,包括任何错误消息或日志。
- 正确格式化您的代码: 使用代码块来格式化您的代码,使其更易于阅读。
- 测试您的 MRE: 确保您的 MRE 无需修改即可重现该问题。
有关详细指南,请参阅创建最小可复现示例。
为什么我应该在我的 Ultralytics YOLO 错误报告的 MRE 中使用公开可用的模型和数据集?
在您的 MRE 中使用公开可用的模型和数据集,可确保维护人员可以轻松运行您的示例,而无需访问专有数据。 这样可以更快、更有效地解决问题。 例如,使用 yolov8n.pt
模型和 coco8.yaml
数据集有助于标准化和简化调试过程。请在以下位置了解有关公共模型和数据集的更多信息 使用公共模型和数据集 部分。
我应该在 Ultralytics YOLO 的错误报告中包含哪些信息?
一个全面的 Ultralytics YOLO 错误报告应包括:
- 清晰的描述: 解释问题、预期行为和实际行为。
- 错误消息: 包括任何相关的错误消息或日志。
- 依赖项: 列出所需的依赖项及其版本。
- MRE: 提供一个最小可复现示例。
- 重现步骤:概述重现问题所需的步骤。
有关完整的检查清单,请参阅编写清晰的问题描述部分。
在 GitHub 上提交错误报告时,如何正确格式化我的代码?
在 GitHub 上提交错误报告时,要正确格式化您的代码,请执行以下操作:
- 使用三个反引号 (```) 来创建代码块。
- 指定语法高亮的编程语言,例如 ```python。
- 确保您的代码缩进正确,以提高可读性。
例子:
```python
# Your Python code goes here
```
有关代码格式化的更多技巧,请参见正确格式化您的代码。
在提交我的 MRE 以进行错误报告之前,应该检查哪些常见错误?
在提交您的 MRE 之前,请确保:
- 验证问题是否可重现。
- 确保所有依赖项都已列出且正确。
- 移除任何不必要的代码。
- 测试 MRE,确保它在没有修改的情况下重现问题。
有关详细的检查清单,请访问测试您的 MRE部分。