モデルAPI

読み込んだLibreYOLOモデルはBaseModelのインスタンスです。このページでは、そのインスタンスが持つメソッドを、libreyolo/models/base/model.pyから読み取ったシグネチャとデフォルト値とともに一覧化します。

構築

ファクトリーはファミリークラスのインスタンスを返します。そのクラスを直接構築する場合も 同じ引数を取りますが、sizeは必須です。

python
Family(model_path, size, nb_classes=80, device="auto", task=None, **kwargs)

device="auto"は、利用できる場合はCUDA、次にMPS、最後にCPUを選択します。整数または 数字の文字列はCUDAの序数として読み取られるため、device=0device="0"はいずれも cuda:0を意味します。taskはファミリーのSUPPORTED_TASKSに照らして検証されます。 model_path=Noneを渡すとアーキテクチャを構築して学習モードのままにし、dictを渡すと そのstate dictを直接読み込みます。

predictと__call__

predict__call__の別名です。

python
model(
    source=None,
    *,
    conf=0.25,
    iou=0.45,
    imgsz=None,
    device=None,
    classes=None,
    max_det=300,
    augment=False,
    save=False,
    batch=1,
    stream=False,
    stream_buffer=False,
    vid_stride=1,
    show=False,
    output_path=None,
    color_format="auto",
    tiling=False,
    overlap_ratio=0.2,
    output_file_format=None,
    cuda_graph=False,
    **kwargs,
)
引数デフォルト意味
sourceNone画像、メモリ内画像のリストまたはタプル、ディレクトリ、動画ファイル、または"screen""screen 1""screen 1 100 200 512 256"などの画面ソース
conf0.25信頼度のしきい値
iou0.45NMSのIoUしきい値
imgszNone入力サイズの上書き。Noneはモデル固有のサイズを使用
deviceNoneこの呼び出しで使用するデバイスの上書き
classesNone指定したクラスIDのみを保持
max_det300画像あたりの最大検出数
augmentFalseテスト時データ拡張
saveFalseアノテーション付き画像または動画を書き出す
batch1ディレクトリおよびリストのソースで、順伝播1回あたりの画像数
streamFalse実体化したリストの代わりにジェネレーターを返す
stream_bufferFalse取り込んだライブフレームを最新のものだけでなくすべて保持
vid_stride1動画または画面のN番目ごとのフレームを処理
showFalseアノテーション付きフレームをウィンドウに表示
output_pathNonesave=Trueの場合の出力パス
color_format"auto"メモリ内配列のカラーフォーマット指定
tilingFalse大きな画像に対するタイル分割推論
overlap_ratio0.2タイルの重複率
output_file_formatNone"jpg""png"、または"webp"
cuda_graphFalseTrueは入力形状ごとの初回使用時にキャプチャし、"auto"は同じ形状が繰り返されるまで待機

単一の画像ソースは1つのResultsを返します。リスト、タプル、またはディレクトリは それらのリストを返し、stream=Trueはどの場合もジェネレーターを返します。

ライブストリームのソースには終端がなく、stream=Trueが必要です。tilingaugmentは 同時に使用できません。テスト時データ拡張は、embedpointedgeタスクでは例外を 発生させます。

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO9t.pt") model.info()result = model(SAMPLE_IMAGE, conf=0.25, iou=0.45) print(result.boxes.xyxy)print(result.speed)

batch > 1では、SUPPORTS_BATCHED_PREDICTがtrueのファミリーはチャンクごとに スタックした順伝播を1回実行します。batch=1では画像ごとに順伝播を1回実行します。

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO9t.pt") # stream=Trueはジェネレーターを返し、フレームまたは画像ごとにResultsを1つ生成for result in model([SAMPLE_IMAGE, SAMPLE_IMAGE], stream=True):    print(len(result))

embed

python
model.embed(source=None, **kwargs) -> torch.Tensor

predictの便利なラッパーで、すべての埋め込みベクトルの行を1つの(N_total, D)テンソルに スタックします。モデルはtask="embed"で構築されている必要があり、それ以外の場合は NotImplementedErrorを発生させます。

track

python
model.track(
    source,
    *,
    track_conf=0.25,
    iou=0.45,
    imgsz=None,
    classes=None,
    max_det=300,
    save=False,
    show=False,
    vid_stride=1,
    output_path=None,
    tracker="bytetrack",
    tracker_config=None,
    augment=False,
    **tracker_kwargs,
) -> Generator[Results, None, None]

track_idを設定したResultsをフレームごとに1つ生成します。trackerには "bytetrack""botsort""ocsort"、または"deepocsort"を指定できます。 tracker_configを指定した場合は設定の型がトラッカーを選択するため、trackerは無視されます。 track_confは、ByteTrackとBoT-SORTではtrack_high_threshに、OC-SORTとDeep OC-SORTでは det_threshに対応します。output_pathのデフォルトはruns/track/<video_stem>.mp4です。

val

python
model.val(
    data=None,
    batch=16,
    imgsz=None,
    conf=0.001,
    iou=0.6,
    workers=4,
    allow_download_scripts=False,
    device=None,
    split="val",
    augment=False,
    save_json=False,
    verbose=True,
    *,
    plots=None,
    **kwargs,
) -> Dict

タスクに応じたキーを持つ指標辞書を返します。検出ではmetrics/precisionmetrics/recallmetrics/mAP50metrics/mAP50-95を返します。imgszは正方形の整数値 または(height, width)タプルを受け取り、デフォルトではモデル固有の入力サイズを使います。 plotssave_plotsの別名です。allow_download_scriptsは、データセットYAMLのdownload フィールドに含まれる可能性がある埋め込みPythonの実行可否を制御します。

faster_coco_eval**kwargsを通じて受け入れられ、デフォルトはTrueです。パッケージが インストールされていない場合はpycocotoolsへフォールバックします。実行されたバックエンドは model.last_eval_backendで報告されます。

拡張検証は、obbposeタスクでは例外を発生させます。

train

trainはファミリーごとに定義されているため、引数が異なります。基底クラスが各ファミリーの trainをラップするため、2つの動作は共通です。

  • cfg=は、キーが呼び出しへマージされるYAMLパスを受け取ります。明示的なキーワード引数がファイルより優先されます。
  • カバレッジグループg0またはg1のファミリーでpretrained=Falseを指定すると、学習前にモデルを最初から再初期化します。resume=Trueとは併用できません。

ファミリーが実際にどのデータ拡張設定を尊重するかは、ファミリーごとに異なります。 データ拡張マトリックスを参照してください。

export

python
model.export(format="onnx", **kwargs) -> str

書き出された成果物のパスを返します。formatはエクスポーターレジストリによって解決されます。 ここではenginetensorrtの別名、literttfliteの別名です。すべてのエクスポーターに 共通する引数は次のとおりです。

引数デフォルト意味
output_pathNone出力ファイルのパス。省略時はweights/以下に生成
imgszNone(height, width)タプルまたは単一の整数。デフォルトは固有サイズ
opsetNoneONNX opsetバージョン
simplifyTrueONNXグラフの簡略化を実行
dynamicTrue動的軸を有効化
halfFalseFP16精度
int8FalseINT8精度
batch1成果物に組み込むバッチサイズ
deviceNoneトレースに使うデバイス
dataNoneINT8キャリブレーション用のdata.yaml
fraction1.0使用するキャリブレーションデータセットの割合
allow_download_scriptsFalseデータセットYAMLのダウンロード処理に埋め込まれたPythonを許可
verboseFalseエクスポーターの詳細ログ

禁止された組み合わせは、トレース前の事前検査でNotImplementedErrorを発生させます。 カバレッジとその規則はエクスポートマトリックスのページに あります。有効なLoRAアダプターが存在する場合は密な重みに統合されます。この統合は、すべての 要求拒否を確認した後にのみ行われます。

save

python
model.save(path) -> str

スキーマv1.0のLibreYOLOチェックポイントを書き出します。これはstate dictと、 チェックポイントスキーマで説明されているメタデータです。 量子化モデルにはquantマニフェストも含まれるため、LibreYOLO(path)は量子化された構造と スケールを復元します。

quantize、quant_info、dequantize

python
model.quantize(
    recipe,
    calib="coco128.yaml",
    samples=128,
    batch=8,
    algorithm="auto",
    keep_high_precision=None,
    allow_download_scripts=False,
    verbose=True,
)

その場で量子化し、モデルを返します。recipeにはキャストのfp16bf16、ConvとLinearの レシピint8fp8、またはLinear専用のレシピw4a16w4a8nvfp4mxfp4int2の いずれかを指定します。後者はRF-DETRなどのTransformerファミリーでサポートされます。 int2にはQATが必要です。calibはdata.yamlのパスまたは組み込みデータセット名を受け取り、 順伝播専用で画像を読み込みます。ラベルは一切読みません。キャリブレーションを省略するには calib=Noneを渡します。algorithm"minmax""percentile"、または"auto"です。

model.quant_info()は量子化状態の概要を返し、浮動小数点モデルではNoneを返します。 model.dequantize()は、量子化学習済みのマスター重みを維持しながら、その場で浮動小数点 モジュールを復元します。これはQATからexport(format="onnx", int8=True, data=...)への 橋渡しになります。

infoとlayers

python
model.info(detailed=False, verbose=True) -> Dict[str, Any]
model.get_available_layer_names() -> List[str]
model.get_distill_config() -> Dict

infoはJSON互換の辞書を返し、verboseがtrueの場合は人間が読める概要をログへ記録します。 get_available_layer_namesは、蒸留または特徴量抽出の設定で名前を指定できる層を一覧化します。

CUDAグラフ

SUPPORTS_CUDA_GRAPHクラス属性がtrueのファミリーで利用できます。リプレイはeager実行と ビット単位で同一です。

python
model.capture_graph(imgsz=None, batch=1, dtype=None) -> None
model.cuda_graph_scope(mode=True)          # コンテキストマネージャー
model.graph_info() -> Dict[str, Any]
model.release_graphs() -> None

キャプチャしたグラフは、キャプチャ時と完全に同じ形状でのみ有効です。そのため、batchimgszは後続のpredict呼び出しと一致する必要があります。capture_graphはキャプチャの コストを最初の要求から切り離します。modeには、初回使用時にキャプチャするTrueまたは "on"、形状が繰り返されるまで待つ"auto"、何もしないFalseを指定できます。 ファミリーがオプトインしていない場合、capture_graphNotImplementedErrorを発生させ、 キャプチャに失敗した場合はCudaGraphUnavailableを発生させます。

デバイスとdtype

Resultsオブジェクトには.to().cpu().cuda().numpy()があります。 Resultsの型を参照してください。モデル自体を移動するには、 predictまたは構築時にdevice=を渡します。

v1.5.0のlibreyolo/models/base/model.pyとlibreyolo/models/base/inference.pyからシグネチャとデフォルト値を確認しました。ファミリークラスでは、これらが制限または拡張される場合があります。train()はファミリーごとに定義されているため、ここでは共有のcfg=ラッパーだけを説明します。