YOLO Vision 2026:

YOLOに関する一般的な問題のトラブルシューティング#

YOLO common training and deployment issues

このガイドでは、Ultralytics YOLO26の作業時に遭遇する最も一般的な問題を発生場所ごとに分類して説明します:installationmodel trainingpredictiondeployment。エラーに一致するカテゴリに移動するか、FAQでクイックアンサーを確認してください。各エントリには、問題と直接適用できる具体的な修正方法が記載されています。



Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues

一般的な問題#

インストールエラー#

インストールエラーは、互換性のないバージョン、依存関係の欠落、不適切な環境設定など、さまざまな理由で発生する可能性があります。まずは、以下を確認してください。

  • 推奨されているPython 3.8以降を使用していること。
  • PyTorchの正しいバージョン(1.8以降)がインストールされていることを確認してください。
  • 競合を避けるために仮想環境の使用を検討すること。
  • 公式インストールガイドに沿ってステップバイステップで進めてください。

さらに、一般的なインストール問題に対する解決策を以下に示します。

Ultralyticsとその依存関係を最新の状態に保つ

多くのインポート、GPU、エクスポートのエラーは、アップグレードするだけで修正されます。pip install -U ultralyticsを実行し、詳細なデバッグを行う前にPyTorchとCUDAのバージョン互換性を確認してください。

インポートエラーまたは依存関係の問題#

YOLO26のインポート時にエラーが発生したり、依存関係の競合に直面した場合は、以下の手順を試してください:

  • クリーンインストール: パッケージ構造や機能が変更されたアップデートの後など、予期せぬ問題を解決するために、新規インストールから開始することが有効です。
  • 定期的なアップデート: 古いリリースは最近のアップデートと互換性がない可能性があるため、常に最新バージョンのライブラリを使用してください。
  • 依存関係の確認: 必要なすべての依存関係が正しくインストールされ、互換性のあるバージョンであることを確認してください。
  • 変更点の確認: 古いバージョンをインストールした場合は、公式ドキュメントや変更履歴を参照し、構造上の大きな変更点がないか確認してください。

YOLO26をGPUで実行する#

YOLO26をGPUで実行する際に問題が発生した場合は、以下のトラブルシューティング手順を検討してください:

  • CUDAの互換性とインストールの確認: お使いのGPUがCUDAと互換性があり、CUDAが正しくインストールされていることを確認してください。nvidia-smiコマンドを使用して、NVIDIA GPUのステータスとCUDAバージョンを確認します。
  • PyTorchとCUDAの統合の確認: Pythonターミナルでimport torch; print(torch.cuda.is_available())を実行し、PyTorchがCUDAを利用できることを確認します。「True」が返された場合、PyTorchはCUDAを使用するようにセットアップされています。
  • 環境のアクティベーション: 必要なパッケージがすべてインストールされている正しい環境にいることを確認してください。
  • パッケージのアップデート: 古いパッケージはGPUと互換性がない可能性があります。常に最新の状態に保ってください。
  • プログラムの設定: コードがGPUの使用を要求しているかどうかを確認します。トレーニングや予測を実行する際に、device引数を設定できます(例:device=0)。
古いGPUとcuDNN 9.11.0以降

Turing以前のGPUアーキテクチャ(1080 Tiなど、計算能力(SM)が7.5未満)のサポートは、cuDNN 9.11.0で終了しました。古いGPUを使用している場合、以前のCUDA/cuDNNバージョンでコンパイルされたPyTorchのビルドが必要になることがあります。以下のコマンドでセットアップを確認してください:

import torch

cap = torch.cuda.get_device_capability(0) if torch.cuda.is_available() else (0, 0)
cudnn = torch.backends.cudnn.version() or 0
ok = "not compatible" if cudnn >= 91100 and (cap[0] < 7 or (cap[0] == 7 and cap[1] < 5)) else "should be ok"
print(f"Compute capability: SM {cap[0]}.{cap[1]}, cuDNN: {cudnn} => {ok}")

モデルトレーニングの問題#

学習における一般的な問題とその修正方法を以下に示します。

設定の確認#

問題: モデルのトレーニング中に、.yamlファイルの設定が正しく適用されているかどうかわかりません。

解決策: .yamlファイルの設定は、model.train()関数を使用する際に適用されます。これらの設定が正しく適用されていることを確認するには、次の手順に従います:

  • .yaml設定ファイルへのパスが正しいことを確認します。

  • 以下に示すように、model.train() を呼び出すときは、.yaml ファイルへのパスを data 引数として渡していることを確認してください。

    model.train(data="/path/to/your/data.yaml", batch=4)

マルチGPUによるトレーニングの加速#

問題: シングルGPUではトレーニングが遅く、複数のGPUを使用してプロセスを高速化したい。

解決策: バッチサイズを大きくするとトレーニングを加速できますが、GPUのメモリ容量を考慮することが不可欠です。複数のGPUを使用してトレーニングを高速化するには、次の手順に従います:

  • 複数のGPUが利用可能であることを確認します。

  • device引数にGPUインデックスのリストを設定します(例:device=[0,1,2,3])。

  • メモリ制限を超えずに複数のGPUを最大限に活用できるよう、バッチサイズをそれに応じて増やします。

  • 複数のGPUを利用するようにトレーニングコマンドを変更します。

    # Adjust the batch size and other settings as needed to optimize training speed
    model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])

継続的な監視パラメータ#

問題: loss以外に、トレーニング中に継続的に監視すべきパラメータを知りたい。

解決策: lossは監視すべき重要な指標ですが、モデルのパフォーマンス最適化のために他の指標を追跡することも不可欠です。トレーニング中に監視すべき重要な指標には以下が含まれます。

これらの指標は、トレーニングログからアクセスするか、TensorBoardやwandbなどの可視化ツールを使用して取得できます。これらの指標に基づいてEarly Stoppingを実装することで、より良い結果を得ることができます。

トレーニングの進捗を追跡するツール#

問題: トレーニングの進捗を追跡するためのツールについて推奨事項を探している。

解決策: トレーニングの進捗を追跡・可視化するには、以下のツールを検討してください。

  • TensorBoard: TensorBoardは、損失や精度などのトレーニングメトリクスを視覚化するための一般的な選択肢です。YOLO26のトレーニングプロセスと統合できます。
  • Comet: Cometは、実験の追跡と比較のための豊富なツールキットを提供します。メトリクス、ハイパーパラメータ、さらにはモデルの重みを追跡できます。YOLOモデルとの統合も簡単で、実験サイクルの全体像を把握できます。
  • Ultralytics Platform: Ultralytics Platformは、YOLOモデルの追跡に特化した環境を提供し、メトリクスやデータセットの管理、チームとのコラボレーションをワンストップで行えるプラットフォームです。YOLOに特化しているため、よりカスタマイズされた追跡オプションを提供します。

トレーニングがGPUで行われているか確認する方法#

問題: トレーニングログの 'device' 値が 'null' であり、GPUでトレーニングが行われているかどうかわからない。

解決策: 'device'の値が'null'であることは通常、トレーニングプロセスが利用可能なGPUを自動的に選択するように設定されていることを意味し、これがデフォルトの動作です。特定のGPUでトレーニングするには、トレーニング開始時にdevice引数を設定します。deviceはトレーニング引数であるため、データセットの.yamlで設定しても効果はありません:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Use GPU 0; device=[0, 1] for multiple GPUs, device="cpu" for CPU
model.train(data="path/to/data.yaml", device=0)

トレーニングの進捗を効果的に監視するために、 'runs' フォルダ内のログと指標を注視してください。

効果的なモデルトレーニングのための重要な考慮事項#

モデルトレーニングに関連する問題に直面している場合は、以下の点に留意してください。

データセットの形式とラベル

  • 重要性: 機械学習モデルの基礎は、トレーニングに使用されるデータの品質とフォーマットにあります。
  • 推奨事項: カスタムデータセットとその関連ラベルが期待される形式に従っていることを確認してください。アノテーションが正確であり、高品質であることを検証することが重要です。不正確または低品質なアノテーションはモデルの学習プロセスを妨げ、予測できない結果につながる可能性があります。

モデルの収束

  • 重要性: モデルの収束を達成することで、モデルがトレーニングデータから十分に学習したことが保証されます。
  • 推奨事項: 「ゼロから」モデルをトレーニングする場合、モデルが満足のいくレベルの収束に達することを確認することが不可欠です。既存のモデルをファインチューニングする場合と比較して、より多くのエポックを伴う、より長いトレーニング時間が必要になる場合があります。

学習率とバッチサイズ

  • 重要性: これらのハイパーパラメータは、トレーニング中にモデルがどのように重みを更新するかを決定する上で極めて重要な役割を果たします。
  • 推奨事項: 選択した学習率とバッチサイズが特定のデータセットにとって最適であるかどうかを定期的に評価してください。データセットの特性と調和していないパラメータは、モデルのパフォーマンスを低下させる可能性があります。

クラス分布

  • 重要性: データセット内のクラスの分布は、モデルの予測傾向に影響を与える可能性があります。
  • 推奨事項: データセット内のクラス分布を定期的に評価してください。クラスの不均衡がある場合、モデルがより頻繁なクラスに対してバイアスを持つリスクがあります。このバイアスは混同行列に現れる可能性があり、モデルが過半数のクラスを主に予測するようになるかもしれません。

事前学習済みウェイトとのクロスチェック

  • 重要性: 事前学習済みウェイトを活用することで、特にデータが限られている場合に、モデルトレーニングの堅実な出発点を提供できます。
  • 推奨事項: 診断ステップとして、同じデータを使用してモデルをトレーニングし、事前学習済みのウェイトで初期化することを検討してください。このアプローチで正常な混同行列が得られる場合、「ゼロから」トレーニングしたモデルにはさらなるトレーニングや調整が必要である可能性があることを示唆しています。

モデル予測に関連する問題#

モデル予測中に発生する一般的な問題とその修正方法を以下に示します。

YOLO26カスタムモデルでバウンディングボックス予測を取得する#

問題: カスタムYOLO26モデルで予測を実行する際、バウンディングボックス座標の形式と可視化に課題がある。

解決策:

  • 座標形式: YOLO26は絶対ピクセル値でバウンディングボックス座標を提供します。これらを相対座標(0から1の範囲)に変換するには、画像サイズで割る必要があります。例えば、画像サイズが640x640の場合、以下のようになります:

    # Convert absolute coordinates to relative coordinates
    x1 = x1 / 640  # Divide x-coordinates by image width
    x2 = x2 / 640
    y1 = y1 / 640  # Divide y-coordinates by image height
    y2 = y2 / 640
  • ファイル名: 予測中の画像のファイル名を取得するには、予測ループ内のresultオブジェクトから直接画像ファイルパスにアクセスしてください。

YOLO26予測におけるオブジェクトのフィルタリング#

問題: Ultralyticsライブラリを使用してYOLO26を実行する際、予測結果の中で特定のオブジェクトのみをフィルタリングして表示する方法に問題がある。

解決策: 特定のクラスを検出するには、classes引数を使用して出力に含めたいクラスを指定します。例えば、車のみを検出するには( 'cars' がクラスインデックス2であると仮定):

yolo task=segment mode=predict model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2

YOLO26における精度指標の理解#

問題: YOLO26における、ボックス精度、マスク精度、および混同行列精度の違いに関する混乱。

Solution: Box precision measures the accuracy of predicted bounding boxes compared to the actual ground truth boxes using IoU (Intersection over Union) as the metric. Mask precision assesses the agreement between predicted segmentation masks and ground truth masks in pixel-wise object classification. Confusion matrix precision, on the other hand, focuses on overall classification accuracy across all classes and does not consider the geometric accuracy of predictions. It's important to note that a bounding box can be geometrically accurate (true positive) even if the class prediction is wrong, leading to differences between box precision and confusion matrix precision. These metrics evaluate distinct aspects of a model's performance, reflecting the need for different evaluation metrics in various tasks.

YOLO26におけるオブジェクト寸法の抽出#

問題: YOLO26で検出されたオブジェクトの長さと高さを取得するのが難しい(特に画像内に複数のオブジェクトが検出された場合)。

解決策: バウンスボックス(バウンディングボックス)の寸法を取得するには、まずUltralytics YOLO26モデルを使用して画像内のオブジェクトを予測します。次に、予測結果からバウンディングボックスの幅と高さの情報を抽出します。

from ultralytics import YOLO

# Load a pretrained YOLO26 model
model = YOLO("yolo26n.pt")

# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.25)

# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
    x, y, w, h = box
    print(f"Width of Box: {w}, Height of Box: {h}")

デプロイメントの課題#

GPUデプロイメントの問題#

問題: マルチGPU環境でモデルをデプロイすると、予期しないメモリ使用量やGPU間での一貫性のない結果など、予期しない動作が発生することがあります。

解決策: デフォルトのGPU初期化を確認してください。PyTorchなどの一部のフレームワークでは、指定されたGPUに移行する前に、デフォルトのGPUでCUDA操作を初期化する場合があります。予期しないデフォルトの初期化を回避するには、デプロイメントと予測中にGPUを直接指定してください。次に、ツールを使用してGPU使用率とメモリ使用量を監視し、リアルタイムで異常を特定してください。また、フレームワークまたはライブラリの最新バージョンを使用していることを確認してください。

モデル変換/エクスポートの問題#

問題: 機械学習モデルをさまざまな形式やプラットフォームに変換またはエクスポートするプロセス中に、ユーザーはエラーや予期しない動作に遭遇することがあります。

解決策: エクスポートモードのドキュメントでサポートされているフォーマットとフォーマットごとのオプションを確認し、次のチェックを実行してください:

  • 互換性チェック: 互いに互換性のあるバージョンのライブラリとフレームワークを使用していることを確認してください。バージョンの不一致は、変換中に予期しないエラーを引き起こす可能性があります。
  • 環境のリセット: JupyterやColabなどのインタラクティブな環境を使用している場合は、重要な変更やインストールを行った後に環境を再起動することを検討してください。クリーンな開始により、根本的な問題が解決することがあります。
  • 公式ドキュメント: 変換に使用しているツールやライブラリの公式ドキュメントを常に参照してください。多くの場合、モデルエクスポートに関する特定のガイドラインやベストプラクティスが記載されています。
  • コミュニティサポート: 他のユーザーから報告された類似の問題について、ライブラリやフレームワークの公式リポジトリを確認してください。メンテナーやコミュニティがディスカッションスレッドで解決策や回避策を提供している場合があります。
  • 定期的なアップデート: ツールやライブラリの最新バージョンを使用していることを確認してください。開発者は、既知のバグを修正したり機能を改善したりするアップデートを頻繁にリリースしています。
  • 段階的なテスト: 全面的な変換を実行する前に、より小さなモデルやデータセットでプロセスをテストし、潜在的な問題を早期に特定してください。

コミュニティとサポート#

以下のチャネルやリソースを通じて、ヘルプを得たり解決策を共有したりできます。

ヘルプを得るためのフォーラムとチャンネル#

GitHubのIssues: GitHubのYOLO26リポジトリにはIssuesタブがあり、質問、バグの報告、新機能の提案を行うことができます。コミュニティやメンテナーがここで活動しており、特定の問題についてのヘルプを得るのに最適な場所です。

Ultralytics Discordサーバー: Ultralyticsには、他のユーザーや開発者と交流できるDiscordサーバーがあります。

公式ドキュメントとリソース#

Ultralytics YOLO26 Docs: 公式ドキュメントには、YOLO26の包括的な概要のほか、インストール、使用方法、トラブルシューティングに関するガイドが記載されています。

結論#

ほとんどのYOLO26の問題は、バージョンの不一致、データセットのフォーマット、GPUの設定など、少数の原因に起因します。エラーがここに記載されていない場合は、GitHub Issuesタブを検索するか、Discordサーバーで質問してください。誰かがすでに解決している可能性が高いです。トレーニングに関するより詳細な問題については、モデルトレーニングのヒントガイドを参照して、コンピュータービジョンプロジェクトでより良い結果を得るための実用的なアドバイスを確認してください。

よくある質問 (FAQ)#

  • インストールエラーは、多くの場合、互換性の問題や依存関係の不足が原因で発生します。Python 3.8以降を使用し、PyTorch 1.8以降がインストールされていることを確認してください。競合を避けるために仮想環境を使用すると便利です。ステップバイステップのインストールガイドについては、公式インストールガイドに従ってください。インポートエラーが発生した場合は、クリーンインストールを試みるか、ライブラリを最新バージョンにアップデートしてください。

  • 単一のGPUでのトレーニングは、大きなバッチサイズや不十分なメモリが原因で遅くなる可能性があります。トレーニングを高速化するには、複数のGPUを使用します。システムで複数のGPUが利用可能であることを確認し、device引数(例:device=[0,1,2,3])を設定します。メモリ制限を超えずにGPUを完全に活用できるように、それに応じてバッチサイズを大きくします。コマンド例:

    model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])
  • トレーニングログで'device'の値が「null」と表示されている場合、通常、トレーニングプロセスが利用可能なGPUを自動的に選択するように設定されていることを意味します。特定のGPUを明示的に割り当てるには、トレーニングの開始時にdevice引数を渡します(例:最初のGPUの場合はyolo train data=path/to/data.yaml device=0)。CUDAのセットアップを確認するには、nvidia-smiコマンドを参照してください。

  • トレーニングの進捗状況の追跡と視覚化は、TensorBoardCometUltralytics Platformなどのツールを使用して効率的に管理できます。これらのツールを使用すると、損失、精度再現率、mAPなどのメトリクスを記録して視覚化できます。これらのメトリクスに基づいて早期終了(アーリーストッピング)を実装することも、より良いトレーニング成果を達成するのに役立ちます。

  • データセットとラベルが期待されるフォーマットに準拠していることを確認してください。アノテーションが正確であり、高品質であることを確認してください。問題が発生した場合は、ベストプラクティスについてデータ収集とアノテーションガイドを参照してください。データセット固有の詳細なガイダンスについては、ドキュメントのデータセットセクションを確認してください。

コメント