Ultralytics YOLO を使用したモデルの検証
はじめに
検証は、機械学習パイプラインにおける重要なステップであり、学習済みモデルの品質を評価することができます。Ultralytics YOLO11 の Val モードは、物体検出モデルの性能を評価するための堅牢なツールと指標のスイートを提供します。このガイドは、Val モードを効果的に使用して、モデルが正確かつ信頼できるものであることを保証する方法を理解するための完全なリソースとして役立ちます。
見る: Ultralyticsモードチュートリアル:検証
Ultralytics YOLOで検証する理由
YOLO11のValモードを使用する利点は以下のとおりです。
- 適合率: mAP50、mAP75、mAP50-95 などの正確な指標を取得して、モデルを包括的に評価します。
- 利便性: トレーニング設定を記憶する組み込み機能を利用して、検証プロセスを簡素化します。
- 柔軟性: 同じまたは異なるデータセットと画像サイズでモデルを検証します。
- Hyperparameter Tuning(ハイパーパラメータ調整):検証メトリクスを使用してモデルを微調整し、パフォーマンスを向上させます。
Valモードの主な特徴
以下は、YOLO11のValモードが提供する主な機能です。
- 自動設定: モデルは、簡単な検証のためにトレーニング構成を記憶します。
- マルチメトリックサポート: さまざまな精度メトリックに基づいてモデルを評価します。
- CLIとpython API: 検証には、コマンドラインインターフェースまたはpython APIをお好みに応じて選択してください。
- データの互換性: トレーニング段階で使用されるデータセットとカスタムデータセットの両方でシームレスに動作します。
ヒント
- YOLO11モデルはトレーニング設定を自動的に記憶するため、次のようにするだけで、同じ画像サイズで、元のデータセットでモデルを簡単に検証できます。
yolo val model=yolo11n.pt
またはmodel('yolo11n.pt').val()
使用例
学習済み YOLO11n モデルの検証 精度 COCO8データセットで実行します。引数は必要ありません。 model
学習内容を保持 data
および引数をモデル属性として追加します。検証引数の完全なリストについては、以下の引数のセクションを参照してください。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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 contains map50-95 of each category
yolo detect val model=yolo11n.pt # val official model
yolo detect val model=path/to/best.pt # val custom model
YOLOモデル検証の引数
YOLOモデルを検証する場合、評価プロセスを最適化するために、いくつかの引数を微調整できます。これらの引数は、入力画像のサイズ、バッチ処理、パフォーマンスのしきい値などの側面を制御します。以下は、検証設定を効果的にカスタマイズするのに役立つ各引数の詳細な内訳です。
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
data |
str |
None |
データセット構成ファイルへのパスを指定します(例: coco8.yaml )。このファイルには、 検証データ、クラス名、およびクラスの数が含まれています。 |
imgsz |
int |
640 |
入力画像のサイズを定義します。すべての画像は、処理前にこのサイズにリサイズされます。サイズが大きいほど、小さなオブジェクトの精度が向上する可能性がありますが、計算時間が増加します。 |
batch |
int |
16 |
バッチあたりの画像数を設定します。値を大きくするとGPUメモリをより効率的に利用できますが、より多くのVRAMが必要になります。利用可能なハードウェアリソースに基づいて調整してください。 |
save_json |
bool |
False |
もし True は、結果をJSONファイルに保存して、詳細な分析、他のツールとの統合、またはCOCOのような評価サーバーへの提出に利用できます。 |
conf |
float |
0.001 |
検出の最小信頼度閾値を設定します。値を小さくするとリコール率は向上しますが、偽陽性が増える可能性があります。検証中に、適合率-再現率曲線を計算するために使用されます。 |
iou |
float |
0.7 |
Intersection Over Unionの閾値をNon-Maximum Suppressionに設定します。重複検出の除去を制御します。 |
max_det |
int |
300 |
画像あたりの検出の最大数を制限します。過剰な検出を防ぎ、計算リソースを管理するために、密集したシーンで役立ちます。 |
half |
bool |
True |
半精度(FP16)計算を有効にし、メモリ使用量を削減し、精度への影響を最小限に抑えながら速度を向上させる可能性があります。 |
device |
str |
None |
検証に使用するデバイスを指定します(cpu , cuda:0 など)。 None は、利用可能な最適なデバイスを自動的に選択します。複数の CUDA デバイスは、カンマで区切って指定できます。 |
dnn |
bool |
False |
もし True は、を使用します。 OpenCV ONNXモデル推論用のDNNモジュール。代替手段として利用できます。 PyTorch 推論方法。 |
plots |
bool |
False |
以下に設定すると 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 |
False |
もし True は、クラスごとの指標、バッチの進捗状況、追加のデバッグ情報など、検証プロセス中に詳細な情報を表示します。 |
save_txt |
bool |
False |
もし True は、検出結果をテキストファイルに保存します。画像ごとに1つのファイルが作成され、詳細な分析、カスタムの後処理、または他のシステムとの統合に役立ちます。 |
save_conf |
bool |
False |
もし True の場合、保存されたテキストファイルに信頼度を含めます save_txt を有効にすると、分析とフィルタリングのためのより詳細な出力が得られます。 |
workers |
int |
8 |
データ読み込みのワーカースレッド数。値を大きくするとデータの前処理が高速化されますが、CPU使用率が増加する可能性があります。0に設定するとメインスレッドが使用され、一部の環境ではより安定する可能性があります。 |
augment |
bool |
False |
検証中にテスト時拡張(TTA)を有効にします。入力の変換されたバージョンで推論を実行することにより、推論速度を犠牲にして検出精度を向上させる可能性があります。 |
agnostic_nms |
bool |
False |
クラスに依存しないNon-Maximum Suppressionを有効にします。これは、予測されたクラスに関係なく、重複するボックスをマージします。インスタンスに焦点を当てたアプリケーションに役立ちます。 |
single_cls |
bool |
False |
検証中にすべてのクラスを単一のクラスとして扱います。バイナリ検出タスク、またはクラスの区別が重要でない場合に、モデルのパフォーマンスを評価するのに役立ちます。 |
visualize |
bool |
False |
各画像について、グランドトゥルース、真陽性、偽陽性、偽陰性を可視化します。デバッグやモデルの解釈に役立ちます。 |
これらの各設定は、検証プロセスにおいて重要な役割を果たし、YOLOモデルのカスタマイズ可能で効率的な評価を可能にします。特定のニーズとリソースに応じてこれらのパラメータを調整することで、精度とパフォーマンスの最適なバランスを実現できます。
引数を使った検証の例
見る: モデル検証結果をCSV、JSON、SQL、Polar DataFrameなどでエクスポートする方法
以下の例は、pythonとCLIでカスタム引数を使用したYOLOモデルの検証を示しています。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0
ConfusionMatrixのエクスポート
提供されたコードを使用して、ConfusionMatrixの結果をさまざまな形式で保存することもできます。
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
メソッド | 戻り値の型 | 説明 |
---|---|---|
summary() |
List[Dict[str, Any]] |
検証結果を要約された辞書に変換します。 |
to_df() |
DataFrame |
検証結果を、構造化された Polars DataFrame として返します。 |
to_csv() |
str |
検証結果をCSV形式でエクスポートし、CSV文字列を返します。 |
to_json() |
str |
検証結果をJSON形式でエクスポートし、JSON文字列を返します。 |
詳細については、 DataExportMixin
classドキュメント.
よくある質問
UltralyticsでYOLO11モデルを検証するにはどうすればよいですか?
YOLO11モデルを検証するには、Ultralyticsが提供するValモードを使用できます。たとえば、python APIを使用して、モデルをロードし、次のように検証を実行できます。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate the model
metrics = model.val()
print(metrics.box.map) # map50-95
あるいは、コマンドラインインターフェース(CLI)を使用することもできます。
yolo val model=yolo11n.pt
さらにカスタマイズするには、次のようなさまざまな引数を調整できます。 imgsz
, batch
、および conf
pythonとCLIの両方のモードで利用できます。詳細は YOLOモデル検証の引数 セクションで、パラメータの完全なリストをご覧ください。
YOLO11 モデルの検証から、どのような指標を得られますか?
YOLO11モデルの検証では、モデルのパフォーマンスを評価するためのいくつかの重要な指標が提供されます。これには以下が含まれます。
- mAP50(IoU閾値0.5における平均適合率)
- mAP75(IoU閾値0.75における平均適合率)
- mAP50-95(IoU閾値0.5から0.95までの複数閾値における平均適合率)
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
完全なパフォーマンス評価を行うには、これらのすべての指標を確認することが重要です。詳細については、Valモードの主な機能を参照してください。
Ultralytics YOLOを検証に使用する利点は何ですか?
Ultralytics YOLO を検証に使用すると、いくつかの利点があります。
- Precision(精度): YOLO11は、mAP50、mAP75、mAP50-95などの正確なパフォーマンス指標を提供します。
- 利便性: モデルはトレーニング設定を記憶しているため、検証が簡単です。
- 柔軟性: 同じまたは異なるデータセットおよび画像サイズに対して検証できます。
- ハイパーパラメータの調整: 検証メトリクスは、パフォーマンスを向上させるためのモデルの微調整に役立ちます。
これらの利点により、モデルが徹底的に評価され、優れた結果を得るために最適化されることが保証されます。これらの利点の詳細については、Ultralytics YOLOで検証する理由セクションをご覧ください。
カスタムデータセットを使用してYOLO11モデルを検証できますか?
はい、YOLO11モデルを検証するために、 カスタムデータセット。以下を指定します: data
データセット構成ファイルへのパスを持つ引数。このファイルには、へのパスが含まれている必要があります 検証データ、クラス名、およびその他の関連する詳細が含まれています。
pythonでの例:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map) # map50-95
CLIを使った例:
yolo val model=yolo11n.pt data=path/to/your/custom_dataset.yaml
検証中によりカスタマイズ可能なオプションについては、引数を使用した検証例セクションを参照してください。
YOLO11で検証結果をJSONファイルに保存するにはどうすればよいですか?
検証結果をJSONファイルに保存するには、以下を設定します。 save_json
への引数 True
検証を実行する場合。これは、Python APIとCLIの両方で実行できます。
pythonでの例:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Save validation results to JSON
metrics = model.val(save_json=True)
CLIを使った例:
yolo val model=yolo11n.pt save_json=True
この機能は、さらなる分析や他のツールとの統合に特に役立ちます。詳細については、YOLOモデル検証の引数を確認してください。