Markdownで表示

libreyolo val

1つのモデルを1つのデータセット分割で評価し、指標を出力します。指標の組み合わせはモデルのタスクによって決まり、これらの数値はベンチマークの1行を組み立てる元になります。

コマンド
libreyolo val
必須
model, data
出力
指標はstdoutに出力。指定すればruns/val/exp配下にプロットとCOCO JSONを保存

構文

bash
libreyolo val model=<name|path> data=<dataset.yaml> [key=value ...]

引数はkey=valueのペアで、POSIX形式も使えるため、batch=8--batch 8は同じ 引数です。

引数

引数デフォルト説明
modelモデルの重みのパスまたはCLI名。必須
dataデータセットYAMLのパス(YOLO形式、例:coco8.yaml)。必須
data_dirデータセットディレクトリの直接指定。YAML内のパスを無視
splitvalデータセットの分割:valtesttrain
batch16バッチサイズ
imgsz画像サイズ:640(正方形)または480x640(HxW)。未指定ならモデル自身の入力サイズ
conf0.001信頼度のしきい値
iou0.6NMSのIoUしきい値
max_det300NMS後の画像1枚あたりの最大予測数
eval_max_detCOCO評価器の上限。未指定ならpycocotoolsのAP@100の慣例
faster_coco_evaltrueインストール済みならCOCO指標にfaster-coco-evalのC++バックエンドを使用。なければpycocotoolsにフォールバック
halffalseFP16推論
amp_dtypefloat16half=trueのときのCUDA autocastのdtype:float16またはbfloat16
save_jsonfalseCOCO形式のJSON結果を保存
save_plotsfalse検証プロットを保存:指標、クラスごとのAP、混同行列、サンプル
workers4データローダーのワーカー数
deviceautoデバイス
projectruns/val出力ディレクトリのルート
nameexp実験名
exist_okfalse出力ディレクトリを再利用
allow_download_scriptsfalseデータセットYAMLのdownloadブロックに埋め込まれたPythonを許可
jsonfalsestdoutへのJSON出力
quietfalsestderrを抑制
verbosetrue詳細出力
help_jsonfalseコマンドスキーマをJSONで出力して終了

使用例

基本
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml
プロットとCOCO JSON
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml \  imgsz=640 batch=8 save_json=true save_plots=true \  project=runs/val name=yolo9s-coco8 exist_ok=true
機械可読
libreyolo val model=LibreYOLO9s.pt data=coco8.yaml json=true quiet=true

補足

指標の内容

出力される指標のセットはモデルのタスクに従い、JSON出力も同じキーを使います。

物体検出、セグメンテーション、回転バウンディングボックスはmAP50mAP50_95precisionrecallを報告します。モデルが複数種類の出力を予測する場合は、種類 ごとのグループがbox_metricsmask_metricsobb_metricsとして併せて出力され、 それぞれが同じ4つのキーを持ちます。

分類はaccuracy_top1accuracy_top5を報告します。ポイント検出はprecisionrecallf1MLEMAERMSEmAP_sweepを報告します。深度推定は abs_relrmsedelta1delta2delta3を報告します。セマンティック セグメンテーションはmIoUpixel_accuracyを報告します。復元はPSNRSSIM を報告します。

JSON結果にはeval_backendも含まれ、その数値を出したCOCO評価ライブラリと バージョンが示されるため、2回の実行を比較するときに同じバックエンドで採点された かどうかを確認できます。

しきい値

ここでのデフォルト値は推論用ではなく評価用です:conf0.001iou0.6で、 libreyolo predictでは0.250.45を使います。confを 表示用のしきい値まで上げると再現率が下がり、それに伴ってmAPも下がるため、その ようにして得た数値は公開されている数値と比較できません。

imgszはデフォルトでは未指定で、モデル自身の入力サイズを意味します。値を設定 するとそのサイズで評価され、これがチェックポイントをネイティブ解像度から離れた 条件で測る方法です。

ダウンロードを伴うデータセット

downloadフィールドがURLのデータセットYAMLは、追加の許可なしに初回使用時に取得 されます。Pythonのダウンロードスクリプトが埋め込まれている場合は allow_download_scripts=trueが必要で、ローカルコードの実行が有効になったことが stderrに警告として出ます。同梱のcoco8.yamlcoco128.yamlはURL方式なので、何も 必要ありません。

出力と終了コード

指標はstdoutに、進捗はstderrに出力されます。json=trueschema_versionを含む 1つのオブジェクトを出力し、quiet=trueはstderrを止めます。

終了コードは、成功時が0、使い方や設定の誤りが2、データセットが見つからない 場合が3、モデルを読み込めない場合が4、その他の実行時エラーが1です。

関連:libreyolo trainは、eval_intervalによって独自の スケジュールで同じ評価を実行します。

LibreYOLO v1.5.0で検証済みです。