Markdownで表示

libreyoloユーティリティコマンド

計算ではなく報告や確認を行う9つのコマンドです。環境の情報、モデルと形式の一覧、解決済みのデフォルト値、チェックポイントの詳細を表示し、顔ギャラリーの構築と照会も行います。

コマンド
version, checks, models, formats, cfg, info, metadata, enroll, compare
出力
stdout。テキスト形式、またはjson=trueを指定するとschema_versionを持つ1つのオブジェクト

書式

bash
libreyolo <command> [key=value ...]

引数はkey=valueのペアで、POSIX形式も使えるため、model=x--model xは同じ引数です。ここに挙げるコマンドはすべて結果をstdoutに書き出し、json=truequiet=trueを受け付けます。

ルートコマンドには独自のフラグが1つあり、libreyolo --versionはバージョン文字列を表示して終了します。これは下のversionコマンドよりも小さな出力です。

version

LibreYOLOのバージョンと、実行環境のPython、torch、CUDAのバージョンを表示します。

bash
libreyolo version
引数デフォルト意味
jsonfalsestdoutにJSONを出力
quietfalsestderrを抑制

checks

環境をより詳しく表示します:Python、torch、CUDA、cuDNN、検出されたすべてのGPUの名前とメモリ、そしてエクスポート処理が使うオプションパッケージそれぞれのインストール済みバージョンです。

bash
libreyolo checks
引数デフォルト意味
jsonfalsestdoutにJSONを出力
quietfalsestderrを抑制

パッケージ一覧はonnxonnxruntimetensorrtopenvinopaddlepaddlex2paddlemnnncnnonnx2tfai-edge-literttransformersscipyを対象とします。インストールされていないパッケージは省略されずに未インストールとして報告されるため、エクスポートの失敗をこのコマンド1つで依存関係の不足までたどれます。

models

すべてのモデルファミリーを、そのタスク、サイズ、チェックポイントに解決されるCLI名、および各サイズの入力解像度とともに一覧表示します。

bash
libreyolo models
引数デフォルト意味
jsonfalsestdoutにJSONを出力
quietfalsestderrを抑制

オプションの依存関係がインストールされていないファミリーは、利用不可として、それを利用可能にするpip installの行とともに表示されます。CLI名はmodel=が短縮形として受け付けるものです:yolox-sLibreYOLOXs.ptに解決され、物体検出以外のタスクにはタスクのサフィックスが付きます。

formats

インストール済みの環境で生成できるエクスポート形式を、各形式のファイル拡張子、およびFP16とINT8に対応しているかどうかとともに一覧表示します。

bash
libreyolo formats [family=<family>] [task=<task>]
引数デフォルト意味
family1つのモデルファミリーの対応レベルを表示。model=も同じオプションとして受け付け可能
taskモデルの正規タスク。未指定ならファミリーのデフォルトタスク
jsonfalsestdoutにJSONを出力
quietfalsestderrを抑制

familyを指定しない場合、出力は形式の一覧だけです。指定すると、各形式にそのファミリーとタスクでの対応レベル、その理由、および付随する制約が加わります。未知のファミリー、またはそのファミリーが対応していないタスクは、使用方法のエラーになります。

形式のエイリアスは正規名の隣に表示されます:tensorrtにはenginetfliteにはlitert

cfg

解決済みのデフォルト設定を表示します:学習のデフォルト、検証のデフォルト、推論のデフォルト、およびファミリーごとのオーバーライドです。

bash
libreyolo cfg
引数デフォルト意味
jsonfalsestdoutにJSONを出力
quietfalsestderrを抑制

値はコピーではなく設定のdataclassから読み取られるため、引数を渡さなかったときに学習が使う値については、これが根拠になります。family_overridesは、指定していない設定でファミリーが学習された理由に答えるセクションです。これらのオーバーライドがどのように適用されるかはlibreyolo trainを参照してください。

info

モデルをCPU上に読み込み、そのファミリー、サイズ、パラメータ数、クラス、および各形式のエクスポート対応レベルを報告します。

bash
libreyolo info model=<name|path>
引数デフォルト意味
modelモデル名または重みへのパス。必須
detailedfalseパラメータごとの詳細を含める
jsonfalsestdoutにJSONを出力
quietfalsestderrを抑制

metadata

モデルを構築せずにチェックポイントのメタデータを読み取り、LibreYOLOのチェックポイントスキーマと照合して検証します。

bash
libreyolo metadata path=<checkpoint.pt>
引数デフォルト意味
path.ptチェックポイントへのパス。必須
jsonfalsestdoutにJSONを出力
quietfalsestderrを抑制

大きなテンソルを含むエントリはそのまま表示されずに要約されるため、学習用のフルチェックポイントでも出力は読みやすいままです。存在しないチェックポイントはcheckpoint_not_foundで終了し、メタデータの検証に失敗したチェックポイントはエラーを表示して1で終了します。

enroll

人物ごとにフォルダーを分けたツリーから顔ギャラリーを構築し、以降の推論が見つけた顔に名前を付けられるようにします。

bash
libreyolo enroll model=<embedder> source=<people-dir> gallery=<gallery.npz>
引数デフォルト意味
model顔の埋め込みベクトルのモデル。パスまたは名前。必須
source人物ごとにフォルダーを分けたツリー、source/<identity>/*.jpg。必須
gallery出力するギャラリーファイル.npz。既存の場合はその場に追記。必須
face_detector顔検出器:YuNetの.onnx、またはLibreYOLOの検出器。未指定ならファミリーのデフォルトの検出器
deviceautoデバイス:0cpumpsauto
jsonfalsestdoutにJSONを出力
quietfalsestderrを抑制
bash
# people/ には識別名ごとに1つのフォルダーを置き フォルダー名がそのまま識別名になる
libreyolo enroll model=librefacerec-l.onnx source=people/ gallery=people.npz

サブフォルダー名が識別名になります。顔を検出できない参照画像はstderrに1行出したうえでスキップされ、残りは処理が続きます。識別名のサブフォルダーがないソース、または顔が1つも見つからなかったソースはエラーです。

生成されたファイルをgallery=people.npzとしてlibreyolo predictに渡すと、検出結果に識別名と一致スコアが付きます。

compare

2枚の顔画像のコサイン類似度と、それが同一人物のしきい値を超えるかどうかを報告します。

bash
libreyolo compare model=<embedder> source=<a.jpg> source2=<b.jpg>
引数デフォルト意味
model顔の埋め込みベクトルのモデル。パスまたは名前。必須
source1枚目の画像。必須
source2比較対象となる2枚目の画像。必須
face_detector顔検出器:YuNetの.onnx、またはLibreYOLOの検出器
threshold0.4同一人物と判定するためのコサイン類似度のしきい値
deviceautoデバイス:0cpumpsauto
jsonfalsestdoutにJSONを出力
quietfalsestderrを抑制
bash
libreyolo compare model=librefacerec-l.onnx source=a.jpg source2=b.jpg

libreyolo verifyはこのコマンドの2つ目の名前として登録されており、同じ引数を取ります。

compareenrollはどちらも、タスクが顔の埋め込みベクトルであるモデルを必要とします。それ以外はconfig_unsupportedで終了します。ソースにはローカルの画像パスと、httpまたはhttpsのURLのどちらも指定できます。

環境
libreyolo versionlibreyolo checks
何が使えるか
libreyolo modelslibreyolo formats family=yolo9 task=detect
チェックポイントを確認
libreyolo info model=LibreYOLO9s.ptlibreyolo metadata path=weights/LibreYOLO9s.pt

補足

結果はstdoutに出力され、進捗と警告はstderrに出力されます。json=trueschema_versionを持つ1つのオブジェクトを表示し、これがスクリプトから読み取るための形式です。テキスト出力がデフォルトで、人が読むためのものです。

終了コードはCLIの他の部分と同じ対応です:成功なら0、使用方法または設定のエラーなら2、ソースが見つからないときは3、モデルまたはチェックポイントを読み込めないときは4、その他の実行時エラーは1です。

関連:データセット側の確認コマンドであるlibreyolo doctorと、性能側のlibreyolo profile

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