Ultralytics YOLO27:

バグレポート用の最小再現可能例を作成する#

UltralyticsYOLO リポジトリにバグレポートを提出する際は、最小再現可能例(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.0
  • ultralytics==8.4.142

この例のMREは、最小限のコードで問題を示し、公開モデル("yolo26n.pt")を使用し、必要な依存関係をすべて含め、エラーメッセージとともに問題を明確に説明しています。

これらのガイドラインに従うことで、Ultralytics YOLOリポジトリのメンテナーやコントリビューターが問題をより効率的に理解し、解決できるようになります。

FAQ#

  • Ultralytics YOLOリポジトリのバグレポート用に効果的な最小再現可能例(MRE)を作成するには、次の手順に従います:

    1. 問題を切り分ける:問題に直接関係しないコードや依存関係を削除します。
    2. 公開モデルとデータセットを使用する:再現を容易にするため、yolo26n.ptcoco8.yaml などの公開リソースを利用します。
    3. 必要な依存関係をすべて含める:必要なパッケージとそのバージョンを指定します。ultralytics がインストールされている場合は yolo checks を使用し、それ以外の場合は pip list を使用して依存関係を一覧表示できます。
    4. 問題を明確に説明する:エラーメッセージやログがあれば含め、期待される動作と実際の動作を説明します。
    5. コードを適切にフォーマットする:コードブロックを使用してコードをフォーマットし、読みやすくします。
    6. MREをテストする:変更を加えずにMREが問題を再現することを確認します。

    詳細なガイドについては、最小再現可能例の作成を参照してください。

  • MREで公開されているモデルとデータセットを使用すると、メンテナーは専有データへのアクセスを必要とせずに、例を簡単に実行できます。これにより、問題をより迅速かつ効率的に解決できます。たとえば、yolo26n.pt モデルと coco8.yaml データセットを使用すると、デバッグプロセスの標準化と簡素化に役立ちます。公開モデルとデータセットについて詳しくは、公開モデルとデータセットを使用するセクションをご覧ください。

  • Ultralytics YOLOの包括的なバグレポートには、次の内容を含める必要があります:

    • 明確な説明:問題、期待される動作、実際の動作を説明します。
    • エラーメッセージ:関連するエラーメッセージやログを含めます。
    • 依存関係:必要な依存関係とそのバージョンを一覧表示します。
    • MRE:最小再現可能例を提供します。
    • 再現手順:問題の再現に必要な手順を説明します。

    完全なチェックリストについては、問題を明確に説明するセクションを参照してください。

  • GitHubでバグレポートを提出するときにコードを適切にフォーマットするには、次のようにします:

    • トリプルバッククォート(```)を使用してコードブロックを作成します。
    • 構文ハイライト用にプログラミング言語を指定します(例:```python)。
    • 読みやすさを確保するため、コードが正しくインデントされていることを確認します。

    例:

    ```python
    # Your Python code goes here
    ```

    コードのフォーマットに関するヒントについては、コードを適切にフォーマットするを参照してください。

  • MREを提出する前に、次の点を確認してください:

    • 問題が再現可能であることを確認します。
    • すべての依存関係が一覧表示され、正しいことを確認します。
    • 不要なコードを削除します。
    • MREをテストし、変更を加えずに問題を再現できることを確認します。

    詳細なチェックリストについては、MREをテストするセクションをご覧ください。

コメント