バグ報告のための最小再現可能例(MRE)の作成
Ultralytics YOLO リポジトリにバグ報告を提出する際は、最小再現可能例(MRE: Minimum Reproducible Example)を提供することが不可欠です。MREとは、発生している問題を実証するための、小規模で自己完結型のコードです。MREを提供することで、メンテナーやコントリビューターが問題を理解し、より効率的に修正に取り組むことができます。本ガイドでは、Ultralytics YOLOリポジトリにバグ報告を提出する際のMREの作成方法を解説します。
問題の特定
MRE作成の第一歩は、問題を切り分けることです。問題に直接関係のない不要なコードや依存関係は削除してください。問題の原因となっているコードの特定部分に焦点を絞り、無関係なセクションを排除します。
公開されているモデルとデータセットの使用
MREを作成する際は、一般に公開されているモデルとデータセットを使用して問題を再現してください。例えば、yolo26n.ptモデルとcoco8.yamlデータセットを使用します。これにより、メンテナーやコントリビューターが、独自のデータやカスタムモデルにアクセスすることなく、簡単に例を実行して問題を調査できるようになります。
必要なすべての依存関係を含める
Ensure all necessary dependencies are included in your MRE. If your code relies on external libraries, specify the required packages and their versions. Ideally, list the dependencies in your bug report using yolo checks if you have ultralytics installed or pip list for other tools.
問題の明確な説明を書く
発生している問題について、明確かつ簡潔な説明を提供してください。期待される動作と、実際に発生している動作を説明します。該当する場合は、関連するエラーメッセージやログを含めてください。
コードを適切にフォーマットする
問題の説明内でコードブロックを使用して、コードを適切にフォーマットしてください。これにより、他人がコードを読み、理解しやすくなります。GitHubでは、コードを3つのバッククォート(```)で囲み、言語を指定することでコードブロックを作成できます。
```python
# Your Python code goes here
```MREをテストする
MREを提出する前に、それが正確に問題を再現できるかテストしてください。他人が何の支障や修正もなくあなたの例を実行できることを確認してください。
MREの例
以下は、仮のバグ報告に対するMREの例です。
バグの説明:
0チャネルの画像で推論を実行すると、入力テンソルの次元に関するエラーが発生します。
MRE:
import torch
from ultralytics import YOLO
# Load the model
model = YOLO("yolo26n.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.0ultralytics==8.2.0
In this example, the MRE demonstrates the issue with a minimal amount of code, uses a public model ("yolo26n.pt"), includes all necessary dependencies, and provides a clear description of the problem along with the error message.
これらのガイドラインに従うことで、Ultralytics YOLOリポジトリのメンテナーやコントリビューターが問題をより効率的に理解し、解決できるよう手助けすることになります。
FAQ
Ultralytics YOLOリポジトリのバグ報告のために、効果的な最小再現可能例(MRE)を作成するにはどうすればよいですか?
Ultralytics YOLOリポジトリのバグ報告に向けて効果的なMREを作成するには、以下の手順に従ってください。
- 問題の特定: 問題に直接関連のないコードや依存関係を削除します。
- 公開されているモデルとデータセットの使用: 再現性を高めるために、
yolo26n.ptやcoco8.yamlなどの公開リソースを活用します。 - Include All Necessary Dependencies: Specify required packages and their versions. You can list dependencies using
yolo checksif you haveultralyticsinstalled orpip list. - 問題の明確な説明を書く: 期待される動作と実際の動作を、エラーメッセージやログを含めて説明します。
- コードを適切にフォーマットする: コードブロックを使用してコードをフォーマットし、読みやすくします。
- MREをテストする: MREが修正なしで問題を再現することを確認します。
詳細なガイドについては、最小再現可能例の作成を参照してください。
Ultralytics YOLOのバグ報告のMREに、公開されているモデルとデータセットを使用すべきなのはなぜですか?
MREで公開されているモデルとデータセットを使用することで、メンテナーは独自のデータにアクセスすることなく、簡単に例を実行できるようになります。これにより、より迅速かつ効率的に問題を解決できます。例えば、yolo26n.ptモデルとcoco8.yamlデータセットを使用すると、デバッグプロセスが標準化され、簡素化されます。公開モデルとデータセットの詳細については、公開されているモデルとデータセットの使用セクションをご覧ください。
Ultralytics YOLOのバグ報告にはどのような情報を含めるべきですか?
Ultralytics YOLOへの包括的なバグ報告には、以下を含める必要があります。
- 明確な説明: 問題、期待される動作、実際の動作を説明してください。
- エラーメッセージ: 関連するエラーメッセージやログを含めてください。
- 依存関係: 必要な依存関係とそのバージョンをリストアップしてください。
- MRE: 最小再現可能例を提供してください。
- 再現手順: 問題を再現するために必要な手順を概説してください。
完全なチェックリストについては、問題の明確な説明を書くセクションを参照してください。
GitHubでバグ報告を提出する際、コードを適切にフォーマットするにはどうすればよいですか?
GitHubでバグ報告を提出する際にコードを正しくフォーマットするには:
- 3つのバッククォート(```)を使用してコードブロックを作成します。
- 構文強調表示のためにプログラミング言語を指定します(例: ```python)。
- 可読性を高めるため、コードが正しくインデントされていることを確認します。
例:
```python
# Your Python code goes here
```コードフォーマットのヒントについては、コードを適切にフォーマットするを参照してください。
バグ報告のためにMREを提出する前に確認すべき一般的なエラーは何ですか?
MREを提出する前に、必ず以下を確認してください。
- 問題が再現可能であることを確認する。
- すべての依存関係がリスト化されており、正しいことを確認する。
- 不要なコードを削除する。
- MREをテストし、修正なしで問題が再現することを確認する。
詳細なチェックリストについては、MREをテストするセクションをご覧ください。