一般的なYOLOの問題のトラブルシューティング
はじめに
このガイドは、UltralyticsプロジェクトでYOLO26を使用する際に遭遇する一般的な問題のトラブルシューティングを行うための包括的なサポートとなります。適切なガイダンスがあれば、これらの問題をスムーズに解決し、不要な遅延を避けてプロジェクトを順調に進めることができます。
Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues
一般的な問題
インストールエラー
インストールエラーは、互換性のないバージョン、不足している依存関係、または不適切な環境設定など、さまざまな理由で発生する可能性があります。まず、以下を実行していることを確認してください。
- 推奨されているPython 3.8以降を使用していること。
- 正しいバージョンのPyTorch(1.8以降)がインストールされていることを確認すること。
- 競合を避けるために仮想環境の使用を検討すること。
- 公式インストールガイドの手順に従うこと。
さらに、ユーザーが遭遇した一般的なインストール問題と、それぞれの解決策を以下に示します。
-
インポートエラーまたは依存関係の問題 - YOLO26のインポート中にエラーが発生したり、依存関係に関連する問題が発生したりする場合は、以下のトラブルシューティング手順を検討してください。
-
クリーンインストール: 場合によっては、クリーンインストールからやり直すことで予期しない問題が解決することがあります。特に、アップデートによってファイルツリー構造や機能が変更される可能性があるUltralyticsのようなライブラリでは有効です。
-
定期的なアップデート: ライブラリの最新バージョンを使用していることを確認してください。古いバージョンは最近のアップデートと互換性がなく、潜在的な競合や問題を引き起こす可能性があります。
-
依存関係の確認: 必要なすべての依存関係が正しくインストールされており、互換性のあるバージョンであることを確認してください。
-
変更点の確認: 最初から古いバージョンをクローンまたはインストールした場合は、重要なアップデートがライブラリの構造や機能に影響を与える可能性があることに注意してください。主要な変更点を理解するために、常に公式ドキュメントや変更履歴を参照してください。
-
ライブラリと依存関係を最新の状態に保つことは、スムーズでエラーのない環境のために非常に重要です。
-
-
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互換性の確認: Turing以前のGPUアーキテクチャおよび7.5未満の計算能力(SM)に対するサポートは、cuDNN 9.11.0以降で廃止されました。そのため、1080Tiのような古い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}")を実行してください。 -
環境の有効化: 必要なパッケージがすべてインストールされている正しい環境にいることを確認してください。
-
パッケージのアップデート: 古いパッケージはGPUと互換性がない場合があります。最新の状態に保ってください。
-
プログラムの設定: プログラムやコードでGPUの使用が指定されているか確認してください。YOLO26の場合、設定ファイルやコンフィグ内に含まれている可能性があります。
-
モデルトレーニングの問題
このセクションでは、トレーニング中に直面する一般的な問題と、それぞれの説明および解決策について説明します。
設定の確認
問題: モデルトレーニング中に .yaml ファイルの設定が正しく適用されているかどうかが不明である。
解決策: .yaml ファイル内の設定は、model.train() 関数を使用する際に適用される必要があります。これらの設定が正しく適用されていることを確認するには、以下の手順に従ってください。
-
.yaml設定ファイルへのパスが正しいことを確認してください。 -
Make sure you pass the path to your
.yamlfile as thedataargument when callingmodel.train(), as shown below:model.train(data="/path/to/your/data.yaml", batch=4)
マルチGPUによるトレーニングの高速化
問題: 単一GPUではトレーニングが遅く、マルチGPUを使用してプロセスを高速化したい。
解決策: バッチサイズを増やすことでトレーニングを加速できますが、GPUのメモリ容量を考慮することが不可欠です。マルチGPUでトレーニングを高速化するには、以下の手順に従ってください。
-
複数のGPUが使用可能であることを確認してください。
-
使用するGPUの数を指定するように
.yaml設定ファイルを変更します。例:gpus: 4。 -
メモリ制限を超えずにマルチ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)
継続的なモニタリングパラメータ
問題: 損失以外に、トレーニング中に継続的に監視すべきパラメータを知りたい。
解決策: 損失は監視すべき重要な指標ですが、モデルのパフォーマンスを最適化するために他の指標を追跡することも不可欠です。トレーニング中に監視すべき主要な指標には以下が含まれます。
- 精度
- 再現率
- 平均適合率 (mAP)
これらの指標は、トレーニングログからアクセスするか、TensorBoardやwandbなどのツールを使用して可視化することができます。これらの指標に基づいて早期終了(early stopping)を実装すると、より良い結果を得るのに役立ちます。
トレーニングの進行状況を追跡するツール
問題: トレーニングの進行状況を追跡するためのツールの推奨事項を探している。
解決策: トレーニングの進行状況を追跡および可視化するには、以下のツールの使用を検討してください。
- TensorBoard: TensorBoardは、損失、精度など、トレーニング指標を可視化するための一般的な選択肢です。YOLO26のトレーニングプロセスと統合することができます。
- Comet: Cometは、実験の追跡と比較のための広範なツールキットを提供します。指標、ハイパーパラメータ、さらにはモデルの重みを追跡できます。YOLOモデルとの統合も簡単で、実験サイクルの全体像を把握できます。
- Ultralytics Platform: Ultralytics Platformは、YOLOモデルを追跡するための専用環境を提供し、指標、データセットの管理、チームとのコラボレーションのためのワンストッププラットフォームを提供します。YOLOに特化しているため、よりカスタマイズされた追跡オプションを提供します。
これらの各ツールには独自の利点があるため、選択する際にはプロジェクトの特定のニーズを考慮してください。
トレーニングがGPUで行われているか確認する方法
問題: トレーニングログの 'device' 値が 'null' であり、トレーニングがGPUで行われているかどうかが不明である。
解決策: 'device' 値が 'null' であるということは、通常、トレーニングプロセスが利用可能なGPUを自動的に使用するように設定されていることを意味します(これがデフォルトの動作です)。特定のGPUでトレーニングが行われることを確実にするには、.yaml 設定ファイルで 'device' 値をGPUインデックスに手動で設定できます(例: 最初のGPUの場合は '0')。
device: 0これにより、トレーニングプロセスが指定されたGPUに明示的に割り当てられます。CPUでトレーニングしたい場合は、'device' を 'cpu' に設定してください。
トレーニングの進行状況を効果的に監視するために、'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 -
ファイル名: 予測中の画像のファイル名を取得するには、予測ループ内の結果オブジェクトから直接画像ファイルパスにアクセスします。
YOLO26予測におけるオブジェクトのフィルタリング
問題: Ultralyticsライブラリを使用してYOLO26を実行する際、予測結果内の特定のオブジェクトのみをフィルタリングして表示する方法に問題がある。
Solution: To detect specific classes use the classes argument to specify the classes you want to include in the output. For instance, to detect only cars (assuming 'cars' have class index 2):
yolo task=detect mode=segment model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2YOLO26における精度指標の理解
問題: YOLO26におけるボックス適合率(box precision)、マスク適合率(mask precision)、混同行列適合率の間の違いについての混乱。
解決策: ボックス適合率は、IoU(Intersection over Union)を指標として、予測されたバウンディングボックスと実際の正解(Ground Truth)ボックスを比較して精度を測定します。マスク適合率は、予測されたセグメンテーションマスクと正解マスクの一致を画素単位のオブジェクト分類で評価します。一方、混同行列適合率は、すべてのクラスにわたる全体的な分類精度に焦点を当てており、予測の幾何学的精度は考慮しません。バウンディングボックスは、クラス予測が間違っていても幾何学的に正確(真陽性)である可能性があり、その結果、ボックス適合率と混同行列適合率の間に違いが生じることに注意することが重要です。これらの指標はモデルのパフォーマンスの異なる側面を評価しており、さまざまなタスクで異なる評価指標が必要であることを示しています。
YOLO26でのオブジェクトサイズの抽出
問題: 特に1つの画像内に複数のオブジェクトが検出された場合に、検出されたオブジェクトの長さと高さを取得するのが難しい。
解決策: バウンディングボックスのサイズを取得するには、まず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などのインタラクティブな環境を使用している場合は、重要な変更やインストールを行った後に環境を再起動することを検討してください。クリーンなスタートによって、根底にある問題が解決することがあります。
- 公式ドキュメント: 変換に使用しているツールまたはライブラリの公式ドキュメントを常に参照してください。多くの場合、モデルのエクスポートに関する具体的なガイドラインやベストプラクティスが含まれています。
- コミュニティサポート: ライブラリやフレームワークの公式リポジトリで、他のユーザーが報告した同様の問題がないか確認してください。メンテナーやコミュニティが、ディスカッションスレッドで解決策や回避策を提供している場合があります。
- 定期的なアップデート: 使用しているツールやライブラリの最新バージョンを使用していることを確認してください。開発者は、既知のバグを修正したり機能を改善したりするアップデートを頻繁にリリースしています。
- 段階的なテスト: 完全な変換を実行する前に、より小さなモデルやデータセットでプロセスをテストし、潜在的な問題を早期に特定してください。
コミュニティとサポート
志を同じくする人々のコミュニティと交流することは、YOLO26を使用する際の経験と成功を大幅に高めることができます。以下に役立つチャンネルとリソースをいくつか挙げます。
ヘルプを得るためのフォーラムとチャンネル
GitHub Issues: GitHub上のYOLO26リポジトリにはIssuesタブがあり、質問やバグ報告、新機能の提案が可能です。コミュニティとメンテナーがここで活発に活動しており、特定の課題に対してヘルプを得るのに最適な場所です。
Ultralytics Discordサーバー: UltralyticsにはDiscordサーバーがあり、他のユーザーや開発者と交流できます。
公式ドキュメントとリソース
Ultralytics YOLO26 ドキュメント: 公式ドキュメントでは、YOLO26の包括的な概要に加え、インストール、使用方法、トラブルシューティングに関するガイドを提供しています。
これらのリソースは、YOLO26プロジェクトのトラブルシューティングや改善、そしてYOLO26コミュニティの他のメンバーとのつながりを築くための強固な基盤となるはずです。
結論
トラブルシューティングは開発プロセスの不可欠な部分であり、適切な知識を備えることで、問題解決に費やす時間と労力を大幅に削減できます。このガイドは、Ultralyticsエコシステム内のYOLO26モデルを使用するユーザーが直面する最も一般的な課題に対処することを目的としています。これらの一般的な問題を理解し解決することで、プロジェクトを円滑に進め、コンピュータビジョンタスクでより良い結果を達成できます。
Ultralyticsコミュニティが貴重なリソースであることを忘れないでください。仲間の開発者や専門家と関わることで、標準的なドキュメントには記載されていない追加の洞察や解決策を得られる可能性があります。常に学び、実験し、経験を共有して、コミュニティの集合知に貢献してください。
FAQ
YOLO26のインストールエラーを解決するにはどうすればよいですか?
インストールエラーは、多くの場合、互換性の問題や依存関係の欠如が原因です。Python 3.8以降を使用し、PyTorch 1.8以降がインストールされていることを確認してください。競合を避けるために仮想環境を使用することをお勧めします。ステップバイステップのインストールガイドについては、公式インストールガイドに従ってください。インポートエラーが発生した場合は、クリーンインストールを試みるか、ライブラリを最新バージョンに更新してください。
単一のGPUでYOLO26モデルの学習が遅いのはなぜですか?
単一GPUでの学習は、バッチサイズが大きい、またはメモリ不足が原因で遅くなる可能性があります。学習を高速化するには、複数のGPUを使用してください。システムに複数のGPUが搭載されていることを確認し、.yaml設定ファイルを調整して、gpus: 4のようにGPU数を指定します。メモリ制限を超えずにGPUを最大限に活用できるよう、それに応じてバッチサイズを増やしてください。コマンド例:
model.train(data="/path/to/your/data.yaml", batch=32)YOLO26モデルがGPUで学習していることを確認するにはどうすればよいですか?
学習ログの「device」値が「null」と表示される場合、通常は学習プロセスが利用可能なGPUを自動的に使用するように設定されていることを意味します。特定のGPUを明示的に割り当てるには、.yaml設定ファイルで「device」値を設定します。例:
device: 0これにより、学習プロセスが最初のGPUに設定されます。nvidia-smiコマンドを参照して、CUDAの設定を確認してください。
YOLO26モデルの学習進捗を監視および追跡するにはどうすればよいですか?
TensorBoard、Comet、Ultralytics Platformなどのツールを使用することで、学習進捗の追跡と可視化を効率的に管理できます。これらのツールを使用すると、損失、精度、再現率、mAPなどの指標をログに記録し可視化できます。これらの指標に基づいて早期停止(early stopping)を実装することも、より良い学習結果を得るのに役立ちます。
YOLO26がデータセット形式を認識しない場合はどうすればよいですか?
データセットとラベルが期待される形式に準拠していることを確認してください。アノテーションが正確で高品質であることを確認します。問題が発生した場合は、ベストプラクティスについてデータ収集とアノテーションガイドを参照してください。データセット固有のガイダンスについては、ドキュメントのデータセットセクションを確認してください。