コンテンツぞスキップ

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 モデルで予枬を実行する堎合、バりンディングボックス座暙のフォヌマットず芖芚化に課題がありたす。

解決策

  • 座暙圢匏 YOLOv8 では、 倖接枠座暙が絶察 ピ ク セル倀で䞎え ら れたす。こ れ ら を盞察座暙 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
  • ファむル名ファむル名予枬しおいる画像のファむル名を取埗するには、予枬ルヌプ内の結果オブゞェクトから盎接画像ファむルパスにアクセスしたす。

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GitHub のYOLOv8 リポゞトリにはIssues タブがあり、質問やバグ報告、新機胜の提案ができたす。コミュニティずメンテナヌはここで掻発に掻動しおおり、特定の問題に぀いお助けを埗るには絶奜の堎所です。

Ultralytics Discordサヌバヌ: Ultralytics にはDiscordサヌバヌがあり、他のナヌザヌや開発者ず亀流するこずができたす。

公匏文曞ずリ゜ヌス

Ultralytics YOLOv8 ドキュメント 公匏ドキュメントでは、YOLOv8 の包括的な抂芁ず、むンストヌル、䜿甚方法、トラブルシュヌティングに関するガむドを提䟛しおいたす。

これらのリ゜ヌスは、YOLOv8 プロゞェクトのトラブルシュヌティングや改善、たたYOLOv8 コミュニティの他の人々ずの぀ながりのための匷固な基盀ずなるはずです。

結論

トラブルシュヌティングはどのような開発プロセスにおいおも䞍可欠な郚分であり、正しい知識を身に぀けるこずで、問題解決に費やす時間ず劎力を倧幅に削枛するこずができる。本ガむドは、Ultralytics ゚コシステム内のYOLOv8 モデルのナヌザヌが盎面する最も䞀般的な課題に察凊するこずを目的ずしおいたす。これらの䞀般的な問題を理解し察凊するこずで、プロゞェクトをより円滑に進め、コンピュヌタビゞョンタスクでより良い結果を埗るこずができたす。

Ultralytics コミュニティは貎重なリ゜ヌスであるこずを忘れないでください。仲間の開発者や専門家ず関わるこずで、暙準的な文曞ではカバヌされおいないような、さらなる掞察や解決策を埗るこずができたす。コミュニティの集合知に貢献するために、垞に孊び、実隓し、経隓を共有し続けおください。

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



䜜成 2023-11-12 曎新 2024-04-19
著者RizwanMunawar1、glenn-jocher2

コメント