コンテンツにスキップ

model-info リファレンス

model-info は、コンパイル済みの .mxr モデルと同じ場所に置く小さな JSON ファイルです。DL Streamer の model-proc や、DeepStream の config_infer_*.txt にある前処理と後処理の項目の代わりになります。ModelInfo::load(include/amdva/model.hpp、src/model.cpp)で解析し、すべての amd* 推論要素と SDK で共通に使います。

{
  "task_type": "detection",
  "adapter": "yolov8",
  "input": {
    "name": "images",
    "shape": [1, 3, 640, 640],
    "format": "NCHW",
    "channel_order": "RGB",
    "letterbox": true,
    "scale": 0.00392156862,
    "mean": [0, 0, 0],
    "std": [1, 1, 1],
    "padding": 114
  },
  "output": { "format": "cxcywh", "num_classes": 80, "top_k": 5, "keypoints": 17 },
  "labels": "coco80.txt"
}

項目

項目 既定値 意味
task_type detection detection、instance-segmentation、pose、classification、semantic-segmentation、raw のいずれか
adapter(別名 family) 検出、セグメンテーション、姿勢推定では yolov8。それ以外はタスク名 出力のデコーダー。検出用のアダプターは yolov8、yolov8-seg、yolov8-pose です。YOLOv5、SSD、独自のパーサーには対応していません。
input.name images モデルの入力テンソル名
input.shape 必須 [N,3,H,W]。N は 1-16、チャンネル数は 3、H と W は 2-4096。固定形状のみです。
input.format NCHW NCHW のみ受け付けます
input.channel_order RGB RGB または BGR
input.letterbox true。分類とセマンティックセグメンテーションでは false アスペクト比を保ってパディングするか、直接リサイズするか
input.scale、mean、std 1/255、[0,0,0]、[1,1,1] 上記のチャンネル順で、チャンネルごとに (pixel * scale - mean) / std として適用します。std は正の値である必要があります。
input.padding 114 レターボックスのパディング値
input.normalize なし 従来の項目で、[0, 1] のみ受け付けます。代わりに scale/mean/std を使ってください。
output.num_classes 80 クラス数(1-65536)。ラベルファイルの行数と一致する必要があります。
output.top_k 5 保持する分類結果の数(1-100)
output.keypoints 17 姿勢推定での 1 人あたりのキーポイント数(1-64)
output.format 参考情報 モデルが出力するデコード済みボックスの形式(YOLOv8 では cxcywh)
labels インデックスの文字列 1 行に 1 ラベルを記述したテキストファイル。JSON ファイルからの相対パス

YOLO アダプターは、デコード済みの中心/サイズ形式のボックスとクラス確率を想定しており、独立した objectness チャンネルは扱いません([B, 4+C, N])。セグメンテーションでは [B,M,H,W] のプロトタイプが加わり、姿勢推定では K x 3 のキーポイントチャンネルが加わります。分類ではロジット [B,C]、セマンティックセグメンテーションでは [B,C,H,W] を想定します。

コンパイル

amdva-compile-model model.onnx model.mxr --batch=4 --precision=fp16 \
  --model-info=model-info.json [--input-shape=NAME:D1,D2,...]

コンパイラーは、SHA256、GPU アーキテクチャ、バッチサイズ、offload_copy=false を記録した model.mxr.manifest.json(スキーマ 2)を書き出します。読み込み時にランタイムは、マニフェストがないモデル、ハッシュが異なるモデル、別の GPU アーキテクチャ向けにビルドしたモデルを拒否します。GPU やバッチサイズを変えた場合は再ビルドしてください。--precision=fp16(既定)で変わるのは内部演算だけで、外部のテンソルは元の型のままです。

要素は float32 NCHW の画像入力を 1 つだけ要求します。複数入力のモデルや他のテンソル型(float16、int32、int64、uint8)は、C++ の ModelExecutor API から使えます。

他の形式との対応

他の形式 対応する項目
DL Streamer model-proc input_preproc.resize, color_space input.letterbox, input.channel_order
DL Streamer model-proc output_postproc.converter adapter / task_type
DL Streamer labels labels
DeepStream net-scale-factor input.scale
DeepStream offsets input.mean(スケール後の単位: offset * scale)
DeepStream model-color-format (0 RGB, 1 BGR) input.channel_order
DeepStream maintain-aspect-ratio input.letterbox
DeepStream num-detected-classes output.num_classes
DeepStream labelfile-path labels
DeepStream batch-size 要素の batch-size と amdva-compile-model --batch