モデル評価とファインチューニングに関する知見

はじめに

コンピュータビジョンモデルを学習させた後は、最適に動作するように評価および改善することが不可欠です。モデルの学習はあくまで第一歩にすぎません。モデルが正確で効率的であり、コンピュータビジョンプロジェクトの目的を満たしていることを確認する必要があります。モデルを評価してファインチューニングすることで、弱点を特定し、精度を向上させ、全体的なパフォーマンスを強化できます。



Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision

本ガイドでは、コンピュータビジョンプロジェクトのこのステップをより身近なものにするために、モデル評価とファインチューニングに関する知見を共有します。評価メトリクスの理解方法やファインチューニング手法の実装方法について解説し、モデルの能力を高めるための知識を提供します。

メトリクスを用いたモデルパフォーマンスの評価

モデルのパフォーマンスを評価することは、そのモデルがいかに効果的に機能しているかを理解する助けになります。パフォーマンスを測定するために様々なメトリクスが使用されます。これらのパフォーマンスメトリクスは、モデルが意図した目標を達成しているかを改善するための明確な数値的洞察を提供します。いくつかの主要なメトリクスを詳しく見ていきましょう。

Confidence Score

Confidence Scoreは、検出されたオブジェクトが特定のクラスに属しているというモデルの確信度を表します。範囲は0から1で、スコアが高いほど確信度が高いことを示します。Confidence Scoreは予測をフィルタリングするのに役立ちます。指定されたしきい値を超えるConfidence Scoreを持つ検出結果のみが有効と見なされます。

クイックヒント: 推論実行時に予測結果が表示されない場合は、他の要素を確認した上で、Confidence Scoreを下げることを試してください。しきい値が高すぎて、モデルが有効な予測を無視している可能性があります。スコアを下げることで、モデルはより多くの可能性を検討できるようになります。これはプロジェクトの目標を満たさないかもしれませんが、モデルの潜在能力を確認し、どのようにファインチューニングを行うかを決定する良い方法です。

Intersection over Union

Intersection over Union (IoU) は、物体検出におけるメトリクスで、予測されたBBoxが正解のBBoxとどの程度重なっているかを測定します。IoU値の範囲は0から1であり、1は完全に一致していることを表します。IoUは、予測された境界が実際のオブジェクトの境界とどれだけ正確に一致しているかを測定するため、非常に重要です。

Intersection over Union Overview

Mean Average Precision

Mean Average Precision (mAP) は、物体検出モデルのパフォーマンスを測定する方法です。各オブジェクトクラスの検出精度を調べ、それらのスコアを平均化することで、モデルがどれだけ正確にオブジェクトを特定・分類できるかを示す全体的な数値を提供します。

2つの特定のmAPメトリクスに焦点を当てます:

  • mAP@.5: IoU (Intersection over Union) しきい値を0.5に固定した場合の平均精度を測定します。このメトリクスは、より緩やかな精度要件でオブジェクトを正しく検出できるかをチェックします。完璧な位置合わせは必要とせず、オブジェクトが大まかに正しい位置にあるかどうかに注目します。モデルが全体としてオブジェクトを発見することに優れているかどうかを確認するのに役立ちます。
  • mAP@.5:.95: 0.5から0.95まで0.05刻みの複数のIoUしきい値で計算されたmAP値を平均化します。このメトリクスはより詳細で厳格です。モデルが異なる厳密さのレベルでどの程度正確にオブジェクトを見つけられるかを示す包括的な図を提供し、正確な物体検出が必要なアプリケーションに特に役立ちます。

その他のmAPメトリクスには、より厳格なIoUしきい値0.75を使用するmAP@0.75や、さまざまなサイズのオブジェクトにわたって精度を評価するmAP@small、medium、largeなどがあります。

Mean average precision mAP metric

YOLO26モデルパフォーマンスの評価

YOLO26に関しては、validationモードを使用してモデルを評価できます。また、YOLO26パフォーマンスメトリクスとその解釈方法について深く掘り下げたガイドにも必ず目を通してください。

コミュニティでよくある質問

YOLO26モデルを評価する際、いくつか問題に直面するかもしれません。コミュニティでよくある質問に基づき、YOLO26モデルを最大限に活用するためのヒントをいくつか紹介します。

画像サイズのバリエーションへの対応

さまざまなサイズの画像でYOLO26モデルを評価することは、多様なデータセットにおけるパフォーマンスを理解するのに役立ちます。rect=true 検証パラメータを使用すると、YOLO26は画像サイズに基づいて各バッチのストライドを調整し、単一のサイズに強制することなく長方形の画像を処理できるようにします。

imgsz 検証パラメータは画像リサイズの最大次元を設定します(デフォルトは640)。これは、データセットの最大次元や使用可能なGPUメモリに基づいて調整できます。imgsz が設定されている場合でも、rect=true により、モデルはストライドを動的に調整することで、多様な画像サイズを効果的に管理できます。

YOLO26メトリクスへのアクセス

YOLO26モデルのパフォーマンスをより深く理解したい場合は、数行のPythonコードで特定の評価メトリクスに簡単にアクセスできます。以下のコードスニペットを使用すると、モデルをロードし、評価を実行し、モデルの性能を示す様々なメトリクスを出力できます。

使用方法
from ultralytics import YOLO

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

# Run the evaluation
results = model.val(data="coco8.yaml")

# Print specific metrics
print("Class indices with average precision:", results.ap_class_index)
print("Average precision for all classes:", results.box.all_ap)
print("Average precision:", results.box.ap)
print("Average precision at IoU=0.50:", results.box.ap50)
print("Class indices for average precision:", results.box.ap_class_index)
print("Class-specific results:", results.box.class_result)
print("F1 score:", results.box.f1)
print("F1 score curve:", results.box.f1_curve)
print("Overall fitness score:", results.box.fitness)
print("Mean average precision:", results.box.map)
print("Mean average precision at IoU=0.50:", results.box.map50)
print("Mean average precision at IoU=0.75:", results.box.map75)
print("Mean average precision for different IoU thresholds:", results.box.maps)
print("Mean results for different metrics:", results.box.mean_results)
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Per-image metrics:", results.box.image_metrics)
print("Precision:", results.box.p)
print("Precision curve:", results.box.p_curve)
print("Precision values:", results.box.prec_values)
print("Specific precision metrics:", results.box.px)
print("Recall:", results.box.r)
print("Recall curve:", results.box.r_curve)

resultsオブジェクトには image_metrics も含まれており、これは画像ファイル名をキーとする画像ごとの辞書で、precisionrecallf1tpfpfn のほか、前処理時間、推論時間、損失、後処理時間などの速度メトリクスが含まれます。これらのメトリクスを分析することで、YOLO26モデルを微調整および最適化してパフォーマンスを向上させ、特定のユースケースに対してより効果的にすることができます。

ファインチューニングの仕組み

ファインチューニングとは、事前学習済みモデルを取得し、特定のタスクやデータセットでのパフォーマンスを向上させるためにパラメータを調整することです。モデルの再学習とも呼ばれるこのプロセスにより、モデルは実世界のアプリケーションで遭遇する特定のデータに対して、より良く理解し予測できるようになります。モデル評価に基づいてモデルを再学習し、最適な結果を達成できます。

モデルのファインチューニングに関するヒント

モデルのファインチューニングには、最適なパフォーマンスを達成するために、いくつかの重要なパラメータと手法に細心の注意を払う必要があります。プロセスをガイドするための重要なヒントをいくつか紹介します。

より高い学習率から開始する

通常、初期学習のエポックでは、学習率を低く抑えて徐々に上げ、学習プロセスを安定させます。しかし、モデルは以前のデータセットからすでにいくつかの特徴を学習しているため、最初から高い学習率で開始する方が有益な場合があります。

YOLO26モデルを評価する際、warmup_epochs 検証パラメータを warmup_epochs=0 に設定することで、学習率が低すぎる状態で開始されるのを防ぐことができます。このプロセスに従うことで、学習は提供された重みから継続され、新しいデータのニュアンスに適応します。

小さなオブジェクトに対する画像タイリング

画像タイリングは、小さなオブジェクトの検出精度を向上させることができます。大きな画像を複数のセグメントに分割することで(例:1280x1280の画像を複数の640x640セグメントに分けるなど)、元の解像度を維持し、モデルが高解像度の断片から学習できるようにします。YOLO26を使用する場合は、これらの新しいセグメントに対してラベルを正しく調整するようにしてください。

コミュニティに参加する

アイデアや質問を他のコンピュータビジョン愛好家と共有することで、プロジェクトの行き詰まりに対する創造的な解決策のインスピレーションが得られます。学習、トラブルシューティング、つながりを深めるための素晴らしい方法をいくつか紹介します。

ヘルプとサポートを見つける

  • GitHub Issues: YOLO26 GitHubリポジトリを探索し、Issuesタブを使用して質問したり、バグを報告したり、機能を提案したりしてください。コミュニティやメンテナが、発生した問題の支援に応じます。
  • Ultralytics Discordサーバー: Ultralytics Discordサーバーに参加して、他のユーザーや開発者と交流し、サポートを受け、知識を共有し、アイデアを出し合いましょう。

公式ドキュメント

  • Ultralytics YOLO26ドキュメント: さまざまなコンピュータビジョンのタスクやプロジェクトに関する包括的なガイドや有益な知見については、公式YOLO26ドキュメントを確認してください。

最終的な考察

コンピュータビジョンモデルの評価とファインチューニングは、モデルデプロイを成功させるための重要なステップです。これらのステップは、モデルが正確かつ効率的で、全体的なアプリケーションに適していることを確認するのに役立ちます。可能な限り最高のモデルを学習する鍵は、継続的な実験と学習です。パラメータを微調整し、新しい手法を試し、さまざまなデータセットを探索することをためらわないでください。実験を続け、可能性の限界を押し広げてください!

FAQ

YOLO26モデルのパフォーマンスを評価するための主要なメトリクスは何ですか?

YOLO26モデルのパフォーマンスを評価するために重要なメトリクスには、Confidence Score、Intersection over Union (IoU)、およびMean Average Precision (mAP) があります。Confidence Scoreは、検出された各オブジェクトクラスに対するモデルの確実性を測定します。IoUは、予測されたBBoxが正解データとどの程度重なっているかを評価します。Mean Average Precision (mAP) は、クラスごとの精度スコアを集計したもので、mAP@.5とmAP@.5:.95は、さまざまなIoUしきい値に対する一般的な2つのタイプです。これらのメトリクスの詳細については、YOLO26パフォーマンスメトリクスガイドを参照してください。

事前学習済みのYOLO26モデルを特定のデータセット用にファインチューニングするにはどうすればよいですか?

事前学習済みのYOLO26モデルのファインチューニングでは、パラメータを調整して特定のタスクやデータセットでのパフォーマンスを向上させます。まずメトリクスを使用してモデルを評価し、次に warmup_epochs パラメータを0に設定して初期学習率を高くすることで、即座の安定性を確保します。多様な画像サイズを効果的に処理するには rect=true のようなパラメータを使用します。詳細なガイダンスについては、YOLO26モデルのファインチューニングのセクションを参照してください。

YOLO26モデルを評価する際、さまざまな画像サイズをどのように処理すればよいですか?

評価中にさまざまな画像サイズを処理するには、YOLO26の rect=true パラメータを使用してください。これにより、画像サイズに基づいて各バッチのネットワークストライドが調整されます。imgsz パラメータは画像リサイズの最大次元を設定し、デフォルトは640です。imgsz をデータセットとGPUメモリに合わせて調整してください。詳細については、画像サイズのバリエーションへの対応に関するセクションをご覧ください。

YOLO26モデルのMean Average Precisionを向上させるために、どのような実践的なステップを踏めますか?

YOLO26モデルのMean Average Precision (mAP) を向上させるには、いくつかのステップが必要です。

  1. ハイパーパラメータの調整: さまざまな学習率、バッチサイズ、および画像オーグメンテーションを試してください。
  2. データオーグメンテーション: MosaicやMixUpなどの手法を使用して、多様な学習サンプルを作成します。
  3. 画像タイリング: 大きな画像を小さなタイルに分割して、小さなオブジェクトの検出精度を向上させます。具体的な戦略については、モデルのファインチューニングに関する詳細ガイドを参照してください。

PythonでYOLO26モデルの評価メトリクスにアクセスするにはどうすればよいですか?

Pythonを使用してYOLO26モデルの評価メトリクスにアクセスするには、次の手順を実行します。

使用方法
from ultralytics import YOLO

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

# Run the evaluation
results = model.val(data="coco8.yaml")

# Print specific metrics
print("Class indices with average precision:", results.ap_class_index)
print("Average precision for all classes:", results.box.all_ap)
print("Mean average precision at IoU=0.50:", results.box.map50)
print("Mean recall:", results.box.mr)

これらのメトリクスを分析することで、YOLO26モデルのファインチューニングと最適化に役立てることができます。詳細については、YOLO26メトリクスのガイドを確認してください。

コメント