バグ報告用の最小再現例を作成する#
UltralyticsのYOLOリポジトリにバグを報告する際は、最小再現例(MRE)を提示することが重要です。MREは、発生している問題を示す、小規模で自己完結したコードです。MREを提示すると、メンテナーや貢献者が問題を理解し、より効率的に修正に取り組めます。このガイドでは、Ultralytics YOLOリポジトリにバグを報告する際のMREの作成方法を説明します。
1. 問題を切り分ける#
MREを作成する最初の手順は、問題を切り分けることです。問題に直接関係のないコードや依存関係を削除してください。問題の原因となっているコード部分に焦点を当て、関係のない箇所を取り除いてください。
2. 公開モデルとデータセットを使用する#
MREを作成するときは、公開されているモデルとデータセットを使用して問題を再現してください。たとえば、yolo26n.ptモデルとcoco8.yamlデータセットを使用してください。これにより、メンテナーや貢献者は、独自データやカスタムモデルへのアクセスがなくても、例を簡単に実行して問題を調査できます。
3. 必要な依存関係をすべて含める#
MREに必要な依存関係をすべて含めてください。コードが外部ライブラリに依存している場合は、必要なパッケージとそのバージョンを明記してください。理想的には、yolo checksを使用してバグレポートに依存関係を記載し、ultralyticsがインストールされている場合はその方法を、その他のツールにはpip listを使用してください。
4. 問題を明確に説明する#
発生している問題を明確かつ簡潔に説明してください。期待される動作と、実際に発生している動作を説明してください。該当する場合は、関連するエラーメッセージやログも記載してください。
5. コードを適切にフォーマットする#
問題の説明では、コードブロックを使用してコードを適切にフォーマットしてください。これにより、他の人がコードを読み、理解しやすくなります。GitHubでは、コードを3つのバッククォート(```)で囲み、言語を指定してコードブロックを作成できます。
```python
# Your Python code goes here
```6. MREをテストする#
MREを提出する前にテストし、問題を正確に再現することを確認してください。他の人が問題や変更を加えずに例を実行できることを確認してください。
MREの例#
以下は、仮想的なバグ報告におけるMREの例です。
バグの説明:
0チャンネルの画像で推論を実行すると、入力テンソルの次元に関するエラーが発生します。
MRE:
import torch
from ultralytics import YOLO
# モデルを読み込みます
model = YOLO("yolo26n.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依存関係:
torch==2.8.0ultralytics==8.4.142
この例のMREは、最小限のコードで問題を示し、公開モデル("yolo26n.pt")を使用し、必要な依存関係をすべて含み、エラーメッセージとともに問題を明確に説明しています。
これらのガイドラインに従うことで、Ultralytics YOLOリポジトリのメンテナーや貢献者が、問題をより効率的に理解し、解決できるようになります。
よくある質問#
Ultralytics YOLOリポジトリのバグ報告に効果的な最小再現例(MRE)を作成するには、次の手順に従ってください。
- 問題を切り分ける:問題に直接関係のないコードや依存関係を削除してください。
- 公開モデルとデータセットを使用する:再現を容易にするため、
yolo26n.ptやcoco8.yamlなどの公開リソースを使用してください。 - 必要な依存関係をすべて含める:必要なパッケージとそのバージョンを明記してください。
ultralyticsをインストールしている場合はyolo checksを、それ以外の場合はpip listを使用して依存関係を記載できます。 - 問題を明確に説明する:エラーメッセージやログも含め、期待される動作と実際の動作を説明してください。
- コードを適切にフォーマットする:コードブロックを使ってコードをフォーマットし、読みやすくしてください。
- MREをテストする:変更を加えなくてもMREで問題を再現できることを確認してください。
詳しいガイドについては、最小再現例の作成をご覧ください。
MREに公開されているモデルやデータセットを使用すると、メンテナーは独自データにアクセスすることなく、例を簡単に実行できます。そのため、問題をより迅速かつ効率的に解決できます。たとえば、
yolo26n.ptモデルとcoco8.yamlデータセットを使用すると、デバッグの手順を標準化し、簡素化できます。公開モデルとデータセットについて詳しくは、公開モデルとデータセットを使用するセクションをご覧ください。Ultralytics YOLOの包括的なバグ報告には、次の内容を含めてください。
- 明確な説明:問題、期待される動作、実際の動作を説明してください。
- エラーメッセージ:関連するエラーメッセージやログを記載してください。
- 依存関係:必要な依存関係とそのバージョンを列挙してください。
- MRE:最小再現例を提示してください。
- 再現手順:問題の再現に必要な手順を説明してください。
チェックリスト全体については、問題を明確に説明するセクションをご覧ください。
GitHubでバグを報告するときにコードを適切にフォーマットするには、次のようにします。
- 3つのバッククォート(```)を使ってコードブロックを作成します。
- 構文をハイライト表示するため、```pythonのようにプログラミング言語を指定します。
- 読みやすさを考慮して、コードが正しくインデントされていることを確認します。
例:
```python # Your Python code goes here ```コードのフォーマットに関するヒントについては、コードを適切にフォーマットするをご覧ください。
MREを提出する前に、次の点を確認してください。
- 問題を再現できることを確認します。
- すべての依存関係が正しく記載されていることを確認します。
- 不要なコードを削除します。
- 変更を加えなくても問題を再現できることを確認するため、MREをテストします。
詳しいチェックリストについては、MREをテストするセクションをご覧ください。