Link to this sectionUltralytics YOLOによるモデル検証#
Link to this sectionはじめに#
検証は機械学習パイプラインにおいて非常に重要なステップであり、トレーニング済みモデルの品質を評価するために不可欠です。Ultralytics YOLO26のValモードは、オブジェクト検出モデルのパフォーマンスを評価するための強力なツールとメトリクスを提供します。このガイドでは、Valモードを効果的に活用して、モデルの精度と信頼性を確保するための包括的な情報を提供します。
Watch: Ultralytics Modes Tutorial: Validation
Link to this sectionなぜUltralytics YOLOで検証するのか?#
YOLO26のValモードを使用する利点は以下の通りです。
- 精度: mAP50、mAP75、mAP50-95などの正確なメトリクスを取得し、モデルを総合的に評価できます。
- 利便性: トレーニング設定を記憶する内蔵機能により、検証プロセスが簡素化されます。
- 柔軟性: トレーニング時と同じデータセットや画像サイズ、あるいは異なるものを使用してモデルを検証できます。
- ハイパーパラメータチューニング: 検証メトリクスを使用してモデルを微調整し、パフォーマンスを向上させます。
Link to this sectionValモードの主な機能#
YOLO26のValモードが提供する主要な機能は以下の通りです。
- 自動設定: モデルがトレーニング設定を記憶しているため、検証を簡単に行えます。
- マルチメトリックサポート: さまざまな精度メトリクスに基づいてモデルを評価できます。
- CLIおよびPython API: 検証の好みに応じて、コマンドラインインターフェースまたはPython APIを選択できます。
- データ互換性: トレーニング時に使用したデータセットだけでなく、カスタムデータセットでもシームレスに動作します。
- YOLO26モデルはトレーニング設定を自動的に記憶するため、
yolo val model=yolo26n.ptまたはYOLO("yolo26n.pt").val()を実行するだけで、同じ画像サイズと元のデータセットを使用して簡単にモデルを検証できます。
Link to this section使用例#
Validate a trained YOLO26n model accuracy on the COCO8 dataset. No arguments are needed as the model retains its training data and arguments as model attributes. See the Arguments section below for a full list of validation arguments.
Windowsで検証をスクリプトとして起動すると、RuntimeErrorが発生する場合があります。これを解決するには、検証コードの前にif __name__ == "__main__":ブロックを追加してください。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list containing mAP50-95 for each category
metrics.box.image_metrics # per-image metrics dictionary with precision, recall, F1, TP, FP, and FNLink to this sectionYOLOモデル検証用引数#
YOLOモデルを検証する際、評価プロセスを最適化するために複数の引数を微調整できます。これらの引数は、入力画像サイズ、バッチ処理、パフォーマンスしきい値などを制御します。以下に、検証設定を効果的にカスタマイズするための各引数の詳細な説明を記載します。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
data | str | None | データセット設定ファイル(例: coco8.yaml)へのパスを指定します。このファイルには検証データへのパスを含める必要があります。 |
imgsz | int | 640 | 入力画像のサイズを定義します。処理前にすべての画像がこの寸法にリサイズされます。サイズを大きくすると小さなオブジェクトの精度が向上する可能性がありますが、計算時間が増加します。 |
batch | int | 16 | 1バッチあたりの画像数を設定します。値を大きくするとGPUメモリをより効率的に利用できますが、より多くのVRAMが必要です。利用可能なハードウェアリソースに応じて調整してください。 |
save_json | bool | False | Trueの場合、結果をJSONファイルに保存し、さらなる分析や他のツールとの統合、あるいはCOCOなどの評価サーバーへの提出に使用できます。 |
conf | float | 0.001 | 検出の最小信頼度しきい値を設定します。値を低くするとリコールは向上しますが、偽陽性(誤検出)が増加する可能性があります。これは、検証中に適合率・再現率曲線を計算するために使用されます。OBB検証ではメモリ使用量を抑えるため、デフォルトは0.01です。 |
iou | float | 0.7 | Sets the Intersection Over Union threshold for Non-Maximum Suppression. Controls duplicate detection elimination. |
max_det | int | 300 | 画像あたりの最大検出数を制限します。密集したシーンにおいて過度な検出を防ぎ、計算リソースを管理するのに役立ちます。 |
half | bool | False | 半精度(FP16)計算を有効にし、精度への影響を最小限に抑えつつ、メモリ使用量を削減し、速度を向上させる可能性があります。 |
device | str | None | 検証に使用するデバイス(cpu、cuda:0、npu、npu:0など)を指定します。Noneの場合、利用可能な最適なデバイスが自動的に選択されます。コンマで区切ることで、複数のCUDAデバイスを指定可能です。 |
dnn | bool | False | Trueの場合、ONNXモデルの推論にOpenCV DNNモジュールを使用します。これはPyTorch推論メソッドの代替手段となります。 |
plots | bool | True | Trueに設定すると、モデルのパフォーマンスを視覚的に評価するために、予測結果と正解ラベルの比較図、混同行列、PR曲線が生成され、保存されます。 |
classes | list[int] | None | 評価するクラスIDのリストを指定します。評価中に特定のクラスのみに焦点を合わせたり、除外したりするのに便利です。 |
rect | bool | True | Trueの場合、バッチ処理に矩形推論を使用します。これによりパディングが削減され、画像をオリジナルのアスペクト比のまま処理することで速度と効率が向上する可能性があります。 |
split | str | 'val' | 検証に使用するデータセットの分割(val、test、またはtrain)を決定します。パフォーマンス評価のためにデータのセグメントを柔軟に選択できます。 |
project | str | None | 検証結果が保存されるプロジェクトディレクトリの名前。異なる実験やモデルの結果を整理するのに役立ちます。 |
name | str | None | 検証実行の名前。プロジェクトフォルダ内にサブディレクトリを作成し、そこに検証ログと出力が保存されます。 |
verbose | bool | True | Trueの場合、クラスごとのメトリクス、バッチの進行状況、その他のデバッグ情報など、検証プロセス中に詳細な情報を表示します。 |
save_txt | bool | False | Trueの場合、検出結果を画像ごとにテキストファイルとして保存します。さらなる分析、カスタム後処理、または他のシステムとの統合に役立ちます。 |
save_conf | bool | False | If True, includes confidence values in the saved text files when save_txt is enabled, providing more detailed output for analysis and filtering. |
workers | int | 8 | データ読み込み用のワーカー(スレッド)数。値を大きくするとデータの前処理が高速化されますが、CPU使用率が増加する可能性があります。0に設定するとメインスレッドが使用され、一部の環境ではより安定します。 |
augment | bool | False | 検証中にテスト時拡張(TTA)を有効にします。入力の変換バージョンに対して推論を実行することで、推論速度を犠牲にしつつ、検出精度が向上する可能性があります。 |
agnostic_nms | bool | False | クラス非依存のNon-Maximum Suppressionを有効にします。これは、予測されたクラスに関係なく重複するボックスをマージします。インスタンスに焦点を当てたアプリケーションで有用です。エンドツーエンドモデル(YOLO26、YOLOv10)の場合、これは同じ検出結果が複数のクラスラベルで表示されること(IoU=1.0の重複)を防ぐだけであり、異なるボックス間でIoUしきい値に基づく抑制を行うものではありません。 |
single_cls | bool | False | 検証中にすべてのクラスを単一のクラスとして扱います。二値検出タスクのパフォーマンス評価や、クラスの区別が重要でない場合に役立ちます。 |
visualize | bool | False | 各画像について、正解ラベル、真陽性、偽陽性、偽陰性を視覚化します。デバッグやモデルの解釈に役立ちます。 |
show_labels | bool | True | visualize=Trueの際、検証結果の視覚化にクラスラベルを表示します。一致やエラーをより見やすくするためにFalseに設定することも可能です。 |
show_conf | bool | True | visualize=Trueの際、検証結果の視覚化に信頼度スコアを表示します。一致やエラーをより見やすくするためにFalseに設定することも可能です。 |
compile | bool または str | False | Enables PyTorch 2.x torch.compile graph compilation with backend='inductor'. Accepts True → "default", False → disables, or a string mode such as "default", "reduce-overhead", "max-autotune-no-cudagraphs". Falls back to eager with a warning if unsupported. |
end2end | bool | None | NMSフリー推論をサポートするYOLOモデル(YOLO26、YOLOv10)におけるエンドツーエンドモードを上書きします。Falseに設定すると、従来のNMSパイプラインを使用して検証を実行でき、さらにiou引数を利用できるようになります。 |
これらの各設定は検証プロセスにおいて重要な役割を果たし、YOLOモデルのカスタマイズ可能で効率的な評価を可能にします。特定のニーズとリソースに応じてこれらのパラメータを調整することで、精度とパフォーマンスの最適なバランスを達成できます。
Link to this section引数を使用した検証例#
Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More
以下の例では、PythonおよびCLIでのカスタム引数を使用したYOLOモデルの検証を紹介します。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")提供されたコードを使用して、混同行列の結果をさまざまな形式で保存することも可能です。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())検証では、分類タスクを除くすべてのタスクにおいて、画像ごとの適合率、再現率、F1、TP、FP、FNメトリクス(IoUしきい値0.5)が保存されます。検証完了後、検出およびOBBの場合はresults.box.image_metrics、セグメンテーションの場合はresults.seg.image_metrics、ポーズ推定の場合はresults.pose.image_metricsを通じてアクセスしてください。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Validate and access per-image metrics
results = model.val(data="coco8.yaml")
# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}
# Access metrics for a specific image
results.box.image_metrics["image1.jpg"] # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}image_metricsの各エントリには以下のキーが含まれます。
| キー | 説明 |
|---|---|
precision | 画像に対する適合率スコア(tp / (tp + fp))。 |
recall | 画像に対する再現率スコア(tp / (tp + fn))。 |
f1 | 適合率と再現率の調和平均。 |
tp | 画像に対する真陽性の数。 |
fp | 画像に対する偽陽性の数。 |
fn | 画像に対する偽陰性の数。 |
この機能は、検出、セグメンテーション、ポーズ推定、およびOBBタスクで利用可能です。
| メソッド | 戻り値の型 | 説明 |
|---|---|---|
summary() | List[Dict[str, Any]] | 検証結果を要約された辞書に変換します。 |
to_df() | DataFrame | 検証結果を構造化されたPolars DataFrameとして返します。 |
to_csv() | str | 検証結果をCSV形式でエクスポートし、CSV文字列を返します。 |
to_json() | str | 検証結果をJSON形式でエクスポートし、JSON文字列を返します。 |
詳細については、DataExportMixin クラスドキュメント を参照してください。
Link to this sectionFAQ#
Link to this sectionUltralyticsでYOLO26モデルを検証するにはどうすればよいですか?#
YOLO26モデルを検証するには、Ultralyticsが提供するValモードを使用できます。例えば、Python APIを使用してモデルをロードし、検証を実行するには次のようにします。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Validate the model
metrics = model.val()
print(metrics.box.map) # map50-95あるいは、コマンドラインインターフェース(CLI)を使用することもできます。
yolo val model=yolo26n.ptさらにカスタマイズしたい場合は、PythonおよびCLIの両モードで imgsz、batch、conf などの様々な引数を調整できます。パラメータの全リストについては、YOLOモデル検証用の引数 セクションを確認してください。
Link to this sectionYOLO26モデルの検証からどのようなメトリクスを取得できますか?#
YOLO26モデルの検証では、モデルの性能を評価するためのいくつかの主要なメトリクスが提供されます。これらには以下が含まれます。
- mAP50 (IoUしきい値 0.5 における平均精度)
- mAP75 (IoUしきい値 0.75 における平均精度)
- mAP50-95 (0.5 から 0.95 までの複数のIoUしきい値にわたる平均精度)
Python APIを使用する場合、これらのメトリクスに次のようにアクセスできます。
metrics = model.val() # assumes `model` has been loaded
print(metrics.box.map) # mAP50-95
print(metrics.box.map50) # mAP50
print(metrics.box.map75) # mAP75
print(metrics.box.maps) # list of mAP50-95 for each category
print(metrics.box.image_metrics) # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN完全な性能評価を行うには、これら全てのメトリクスを確認することが重要です。詳細は、Valモードの主要機能 を参照してください。
Link to this sectionUltralytics YOLOを検証に使用する利点は何ですか?#
検証にUltralytics YOLOを使用すると、いくつかの利点があります。
- Precision: YOLO26は、mAP50、mAP75、mAP50-95を含む正確な性能メトリクスを提供します。
- 利便性: モデルが自身のトレーニング設定を保持しているため、検証が簡潔に行えます。
- 柔軟性: 同じまたは異なるデータセットや画像サイズに対して検証を行うことができます。
- ハイパーパラメータ調整: 検証メトリクスは、より高い性能を得るためのモデルの微調整に役立ちます。
これらの利点により、モデルが徹底的に評価され、優れた結果が得られるよう最適化することが可能です。これらの利点の詳細については、なぜUltralytics YOLOで検証するのか セクションを確認してください。
Link to this sectionカスタムデータセットを使用してYOLO26モデルを検証できますか?#
はい、カスタムデータセット を使用してYOLO26モデルを検証できます。データセット設定ファイルへのパスを data 引数に指定してください。このファイルには、検証データ へのパスを含める必要があります。
検証はモデル自身のクラス名を使用して実行されます。これは model.names を使用して確認でき、データセット設定ファイルで指定されたものとは異なる場合があります。
Pythonでの例:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map) # map50-95CLIを使用した例:
yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yaml検証中のカスタマイズ可能なオプションについては、検証の引数例 セクションを参照してください。
Link to this sectionYOLO26で検証結果をJSONファイルに保存するにはどうすればよいですか?#
検証結果をJSONファイルに保存するには、検証を実行する際に save_json 引数を True に設定します。これはPython APIとCLIの両方で行うことができます。
Pythonでの例:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Save validation results to JSON
metrics = model.val(save_json=True)CLIを使用した例:
yolo val model=yolo26n.pt save_json=Trueこの機能は、その後の分析や他のツールとの統合に特に役立ちます。詳細については、YOLOモデル検証用の引数 を確認してください。