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使用例#
COCO8データセットで学習済みYOLO26nモデルの精度を検証します。modelは学習時のdataおよび引数をモデル属性として保持しているため、引数は不要です。検証引数の完全なリストについては、以下の「引数」セクションを参照してください。
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 | バッチあたりの画像数を設定します。値を大きくするとGPUメモリをより効率的に活用できますが、より多くのVRAMが必要です。利用可能なハードウェアリソースに基づいて調整してください。 |
save_json | bool | False | Trueの場合、さらなる分析、他のツールとの統合、またはCOCOなどの評価サーバーへの提出のために、結果をJSONファイルに保存します。 |
conf | float | 0.001 | 検出の最小信頼度しきい値を設定します。値を小さくすると再現率は向上しますが、誤検出が増える可能性があります。精度-再現率曲線を計算するために検証中に使用されます。OBB検証では、メモリ使用量を削減するためにデフォルトで 0.01 となっています。 |
iou | float | 0.7 | Intersection Over Union(IoU)の閾値を Non-Maximum Suppression(NMS)用に設定します。重複する検出結果の排除を制御します。 |
max_det | int | 300 | 画像ごとの最大検出数を制限します。高密度なシーンで過剰な検出を防ぎ、計算リソースを管理するのに役立ちます。 |
quantize | int または str | None | バリデーション精度:16/"fp16"はサポートされているGPUでのFP16バリデーションを有効にします。32/"fp32"/未設定はFP32です。INT8/PTQ量子化はexport時に設定され、その後エクスポートされたモデルをバリデーションして使用します。非推奨となったhalfフラグを置き換えるものです。 |
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の場合、バッチ処理に矩形推論(rectangular inference)を使用し、パディングを減らすことで、画像の元のアスペクト比を維持しつつ、速度と効率が向上する可能性があります。 |
split | str | 'val' | 検証に使用するデータセット分割(val、test、またはtrain)を決定します。性能評価のためのデータセグメント選択に柔軟性を持たせます。 |
project | str | None | 検証結果が保存されるプロジェクトディレクトリの名前です。異なる実験やモデルの結果を整理するのに役立ちます。 |
name | str | None | 検証実行の名前です。プロジェクトフォルダ内にサブディレクトリを作成し、そこに検証ログと出力が保存されます。 |
verbose | bool | True | Trueの場合、クラスごとのメトリクス、バッチの進捗状況、デバッグ用の追加情報など、検証プロセス中の詳細情報を表示します。 |
save_txt | bool | False | Trueの場合、検出結果をテキストファイルとして保存します(画像1枚につき1ファイル)。さらなる分析やカスタムの後処理、他システムとの統合に役立ちます。 |
save_conf | bool | False | True の場合、save_txt が有効な時に保存されるテキストファイルに信頼度スコアが含まれます。これにより、分析やフィルタリングのための詳細な出力が得られます。 |
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 | PyTorch 2.x の torch.compile グラフコンパイルを backend='inductor' で有効にします。True → "default"、False → 無効、または "default"、"reduce-overhead"、"max-autotune-no-cudagraphs" などの文字列モードを受け入れます。非対応の場合は警告と共に Eager モードにフォールバックします。 |
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")提供されたコードを使用して、ConfusionMatrixの結果をさまざまな形式で保存することもできます。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())検証では、分類以外のすべてのタスクについて、画像ごとの精度(Precision)、再現率(Recall)、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 | 画像ごとの真陽性(True Positive)の数。 |
fp | 画像ごとの偽陽性(False Positive)の数。 |
fn | 画像ごとの偽陰性(False Negative)の数。 |
この機能は、検出、セグメンテーション、姿勢推定、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 sectionよくある質問 (FAQ)#
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 section検証にUltralytics YOLOを使用する利点は何ですか?#
検証にUltralytics YOLOを使用することには、いくつかの利点があります:
- 精度: 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モデル検証のための引数を確認してください。