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