コンテンツへスキップ

YOLO よくある問題のトラブルシューティング

YOLO よくある問題イメージ

はじめに

このガイドは、Ultralytics のプロジェクトでYOLOv8 を使用しているときに遭遇する一般的な問題のトラブルシューティングを行うための包括的な支援となります。適切なガイダンスがあれば、これらの問題を簡単に解決することができ、プロジェクトが不必要な遅延なしに軌道に乗ることを保証します。



見るんだ: Ultralytics YOLOv8 一般的な問題|インストールエラー、モデルトレーニングの問題

よくある問題

インストールエラー

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

  • 推奨されているPython 3.8以降を使用しています。

  • 正しいバージョンのPyTorch (1.8以降)がインストールされていることを確認してください。

  • コンフリクトを避けるため、仮想環境の利用を検討する。

  • 公式のインストールガイドに従ってステップバイステップでインストールしてください。

さらに、ユーザーが遭遇した一般的なインストールの問題と、それぞれの解決策をご紹介します:

  • インポートエラーまたは依存関係の問題 -YOLOv8 のインポート中にエラーが発生した場合、または依存関係に関連する問題が発生した場合は、以下のトラブルシューティング手順を検討してください:

    • 新規インストール:新規インストールから始めることで、予期せぬ問題が解決することがあります。特に、Ultralytics のようなライブラリでは、アップデートによってファイルツリー構造や機能に変更が加えられる可能性があります。

    • 定期的なアップデート:ライブラリの最新バージョンを使用していることを確認してください。古いバージョンは最近のアップデートと互換性がなく、コンフリクトや問題が発生する可能性があります。

    • 依存関係をチェックする:すべての必要な依存関係が正しくインストールされ、互換性のあるバージョンであることを確認します。

    • 変更点の確認最初に古いバージョンをクローンまたはインストールした場合、重要なアップデートがライブラリの構造や機能に影響を与える可能性があることに注意してください。主要な変更点を理解するために、常に公式ドキュメントや変更履歴を参照してください。

    • ライブラリと依存関係を常に最新に保つことは、スムーズでエラーのないエクスペリエンスのために非常に重要であることを忘れないでください。

  • GPUでYOLOv8 を実行する - GPUでYOLOv8 を実行する際に問題がある場合は、以下のトラブルシューティングステップを検討してください:

    • CUDAの互換性とインストールの確認:GPUがCUDAと互換性があり、CUDAが正しくインストールされていることを確認してください。を使用してください。 nvidia-smi コマンドを使用して、NVIDIA GPU と CUDA バージョンのステータスをチェックします。

    • PyTorch と CUDA の統合をチェック:以下を実行して、PyTorch が CUDA を利用できることを確認する。 import torch; print(torch.cuda.is_available()) をPython ターミナルで実行する。もし'True'を返したら、PyTorch はCUDAを使うように設定されている。

    • 環境の起動:必要なパッケージがすべてインストールされている正しい環境にいることを確認する。

    • パッケージをアップデートしてください:古いパッケージはあなたのGPUと互換性がないかもしれません。常に更新してください。

    • プログラムの構成:プログラムまたはコードでGPUの使用方法が指定されてい るかどうかをチェックする。YOLOv8 では、これは設定または構成にあるかもしれません。

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

このセクションでは、トレーニング中に直面する一般的な問題と、それぞれの説明と解決策を取り上げる。

コンフィギュレーション設定の検証

問題:のコンフィギュレーション設定が正しいかどうかわからない。 .yaml ファイルがモデルトレーニング中に正しく適用されているかどうかを確認する。

ソリューション:のコンフィギュレーション設定は .yaml ファイルを適用する必要がある。 model.train() 関数を使用してください。これらの設定が正しく適用されていることを確認するには、以下の手順に従ってください:

  • のパスを確認してください。 .yaml 設定ファイルは正しい。
  • へのパスを渡してください。 .yaml ファイルを data を呼び出す際の引数である。 model.train()以下のように:
model.train(data="/path/to/your/data.yaml", batch=4)

マルチGPUによるトレーニングの高速化

課題単一のGPUではトレーニングに時間がかかるため、複数のGPUを使用してプロセスを高速化したい。

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

  • 複数のGPUが利用可能であることを確認してください。

  • .yaml設定ファイルを修正して、使用するGPUの数を指定します(例: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, multi_scale=True)

連続モニタリング・パラメーター

問題トレーニング中に、損失とは別に、どのパラメーターを継続的にモニターすべきかを知りたい。

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

  • 精密
  • リコール
  • 平均平均精度(mAP)

これらのメトリクスには、トレーニングログからアクセスしたり、TensorBoardやwandbのようなツールを使って可視化することができます。これらのメトリクスに基づいて早期停止を実施することで、より良い結果を得ることができます。

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

問題トレーニングの進捗状況を追跡するための推奨ツールを探している。

解決策トレーニングの進捗状況を追跡し、視覚化するには、以下のツールの使用を検討することができます:

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

これらのツールにはそれぞれ利点があるため、プロジェクトの具体的なニーズを考慮して選択するとよいだろう。

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

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

解決方法device'値が'null'であることは、通常、トレーニングプロセスが利用可能なGPUを自動的に使用するように設定されていることを意味します。トレーニングが特定のGPUで行われるようにするには、.yaml設定ファイルで'device'値をGPUインデックス(例えば、最初のGPUの場合は'0')に手動で設定します:

device: 0

これにより、トレーニングプロセスが指定されたGPUに明示的に割り当てられる。CPUでトレーニングしたい場合は、'device'を'cpu'に設定する。

トレーニングの進捗状況を効果的にモニターするために、「runs」フォルダでログや指標を確認しましょう。

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

モデルトレーニングに関する問題に直面している場合、留意すべき点をいくつか挙げてみよう。

データセット・フォーマットとラベル

  • 重要性機械学習モデルの基礎は、学習させるデータの質と形式にある。

  • 推奨カスタム・データセットとそれに関連するラベルが、期待されるフォーマットに従っていることを確認してください。アノテーションが正確で高品質であることを確認することは極めて重要です。不正確なアノテーションや劣悪なアノテーションは、モデルの学習プロセスを狂わせ、予測不可能な結果を招く可能性があります。

モデルの収束

  • 重要性モデルの収束を達成することは、モデルが訓練データから十分に学習したことを保証する。

  • 推奨モデルを「ゼロから」トレーニングする場合、モデルが満足のいくレベルに収束することを確認することが重要です。そのためには、既存のモデルを微調整する場合よりも、より多くのエポックを使って、より長いトレーニング期間が必要になるかもしれません。

学習率とバッチサイズ

  • 重要である:これらのハイパーパラメータは、学習中にモデルがどのように重みを更新するかを決定する上で極めて重要な役割を果たす。

  • 推奨選択した学習レートとバッチサイズが特定のデータセットに最適かどうかを定期的に評価する。データセットの特性と調和していないパラメータは、モデルのパフォーマンスを妨げる可能性がある。

クラス分布

  • 重要性データセット内のクラスの分布は、モデルの予測傾向に影響を与えます。

  • 推奨データセット内のクラス分布を定期的に評価しましょう。クラスのバランスが悪いと、モデルがより優勢なクラスにバイアスをかける危険性があります。このバイアスは混同行列で明らかになることがあり、そこではモデルが多数派クラスを優勢に予測するかもしれません。

事前訓練された重みとのクロスチェック

  • 重要性事前学習された重みを活用することで、特にデータが限られている場合に、モデルトレーニングの確かな出発点を提供することができる。

  • 推奨診断のステップとして、同じデータを使ってモデルをトレーニングしますが、事前にトレーニングした重みで初期化することを検討してください。このアプローチで混同行列がうまく形成された場合、「ゼロから」モデルはさらなるトレーニングや調整が必要かもしれないことを示唆します。

このセクションでは、モデルの予測中に直面する一般的な問題を取り上げる。

YOLOv8 カスタムモデルでバウンディングボックスの予測を得る

問題カスタムYOLOv8 モデルで予測を実行する場合、バウンディングボックス座標のフォーマットと視覚化に課題があります。

解決策

  • Coordinate Format: YOLOv8 provides bounding box coordinates in absolute pixel values. To convert these to relative coordinates (ranging from 0 to 1), you need to divide by the image dimensions. For example, let's say your image size is 640x640. Then you would do the following:
# 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
  • ファイル名:ファイル名:予測している画像のファイル名を取得するには、予測ループ内の結果オブジェクトから直接画像ファイルパスにアクセスします。

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

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

解決策特定のクラスを検出するには、class 引数を使用して、出力に含めたいクラスを指定します。例えば、自動車だけを検出する場合('cars'はクラス・インデックス2を持っていると仮定):

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

高精度の指標を理解するYOLOv8

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

ソリューションボックス精度は、IoU(Intersection over Union)を指標として、予測されたバウンディングボックスの精度を、実際のグランドトゥルースボックスと比較して測定します。マスク精度は、ピクセル単位のオブジェクト分類において、予測されたセグメンテーションマスクとグランドトゥルースマスクの一致度を評価します。一方、コンフュージョン・マトリクスの精度は、すべてのクラスにわたる全体的な分類精度に焦点を当て、予測の幾何学的精度は考慮しません。クラス予測が間違っていても、バウンディング・ボックスが幾何学的に正確(true positive)であることがあり、これがボックス精度と混同行列精度の違いにつながることに注意することが重要です。これらのメトリクスは、モデルの性能の異なる側面を評価し、様々なタスクで異なる評価メトリクスの必要性を反映しています。

オブジェクトの寸法の抽出YOLOv8

課題 YOLOv8 において、検出されたオブジェクトの長さと高さを取得することが困難。特に、画像内で複数のオブジェクトが検出された場合。

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

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.pt")

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

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

# 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のようなインタラクティブ環境を使用している場合、大幅な変更やインストールを行った後は、環境の再起動を検討してください。再出発することで、根本的な問題が解決することがあります。

  • 公式ドキュメント:変換に使用するツールやライブラリの公式ドキュメントを常に参照してください。多くの場合、モデルのエクスポートに関する具体的なガイドラインやベストプラクティスが記載されています。

  • コミュニティ・サポート:ライブラリやフレームワークの公式リポジトリで、他のユーザーから同様の問題が報告されていないか確認してください。ディスカッションのスレッドで、メンテナやコミュニティが解決策や回避策を提供しているかもしれません。

  • 定期的にアップデートする:ツールやライブラリの最新バージョンを使用していることを確認してください。開発者は、既知のバグを修正したり、機能を改善したりするアップデートを頻繁にリリースしています。

  • 段階的にテストする:完全な変換を行う前に、小規模なモデルやデータセットでプロセスをテストし、潜在的な問題を早期に特定する。

コミュニティとサポート

志を同じくする人々のコミュニティと関わることで、YOLOv8 での経験と成功が大幅に向上する可能性がある。以下は、役に立つと思われるチャンネルやリソースです。

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

GitHub Issues: The YOLOv8 repository on GitHub has an Issues tab where you can ask questions, report bugs, and suggest new features. The community and maintainers are active here, and it's a great place to get help with specific problems.

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

公式文書とリソース

Ultralytics YOLOv8 ドキュメント 公式ドキュメントでは、YOLOv8 の包括的な概要と、インストール、使用方法、トラブルシューティングに関するガイドを提供しています。

これらのリソースは、YOLOv8 プロジェクトのトラブルシューティングや改善、またYOLOv8 コミュニティの他の人々とのつながりのための強固な基盤となるはずです。

結論

トラブルシューティングはどのような開発プロセスにおいても不可欠な部分であり、正しい知識を身につけることで、問題解決に費やす時間と労力を大幅に削減することができる。本ガイドは、Ultralytics エコシステム内のYOLOv8 モデルのユーザーが直面する最も一般的な課題に対処することを目的としています。これらの一般的な問題を理解し対処することで、プロジェクトをより円滑に進め、コンピュータビジョンタスクでより良い結果を得ることができます。

Ultralytics コミュニティは貴重なリソースであることを忘れないでください。仲間の開発者や専門家と関わることで、標準的な文書ではカバーされていないような、さらなる洞察や解決策を得ることができます。コミュニティの集合知に貢献するために、常に学び、実験し、経験を共有し続けてください。

ハッピー・トラブルシューティング



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (5), RizwanMunawar (1)

コメント