コンテンツにスキップ

他のフレームワークからの移行

Intel DL Streamer や NVIDIA DeepStream のパイプラインは、要素を置き換えればこのフレームワークで動かせます。どちらも GStreamer と GstAnalytics のメタデータを使う点は同じで、変わるのは推論の要素、モデルの形式、フレームを置くメモリです。このページは対応の早見表で、プロパティ単位の対応は DL Streamer からの移行 と DeepStream からの移行 にあります。

要素の対応

処理 DL Streamer DeepStream このフレームワーク
デコード decodebin3 など nvv4l2decoder vah264dec、vah265dec
検出 gvadetect nvinfer(プライマリ) amddetect
分類 gvaclassify nvinfer(セカンダリ) amdclassify
その他の推論 gvainference nvinfer amdinference
トラッキング gvatrack nvtracker gvatrack(同梱、画像を使わない方式のみ)
描画 gvawatermark nvdsosd amdwatermark
エンコード vah264enc など nvv4l2h264enc amdencode
Python gvapython pyds のプローブ amdpython(メタデータのみ)
結果の送信 gvametaconvert + gvametapublish nvmsgconv + nvmsgbroker amdmetapublish、または同梱の gvametapublish
複数ストリーム gvastreammux nvstreammux gvastreammux output-mode=container(同梱)

移行で変わる点

項目 移行前 このフレームワーク
モデル OpenVINO IR、TensorRT エンジン ONNX を amdva-compile-model でコンパイルした .mxr
前処理と出力の設定 model-proc、config_infer_*.txt model-info.json(リファレンス)
フレームのメモリ システムメモリ、NVMM GPU 上の NV12(video/x-raw(memory:VAMemory),format=NV12)
形式の変換 videoconvert、nvvideoconvert 不要。推論から描画、エンコードまで GPU 上でつながります
バッチサイズ 実行時に指定 コンパイル時に固定し、要素の batch-size を同じ値にします
プロパティの変更 実行中も可能なものがある amd* 要素は NULL/READY 状態でのみ変更できます

対応するモデルは YOLOv8 系の検出・セグメンテーション・姿勢推定、分類、セマンティックセグメンテーション、生のテンソル出力です。YOLOv5、SSD、独自の後処理ライブラリには対応していません。

パイプラインの書き換え例

DeepStream の検出、トラッキング、描画、エンコードのパイプラインは、次のように書き換えます。

# DeepStream
gst-launch-1.0 uridecodebin uri=file:///in.mp4 ! m.sink_0 \
  nvstreammux name=m batch-size=1 width=1920 height=1080 ! \
  nvinfer config-file-path=config_infer_primary.txt ! \
  nvtracker ll-lib-file=libnvds_nvmultiobjecttracker.so ll-config-file=tracker.yml ! \
  nvvideoconvert ! nvdsosd ! nvvideoconvert ! nvv4l2h264enc ! h264parse ! mp4mux ! filesink location=out.mp4

# このフレームワーク
gst-launch-1.0 -e filesrc location=in.mp4 ! qtdemux ! h264parse ! vah264dec ! \
  'video/x-raw(memory:VAMemory),format=NV12' ! \
  amddetect model=model.mxr model-info=model-info.json ! \
  gvatrack tracking-type=short-term-imageless ! \
  amdwatermark ! amdencode ! h264parse ! mp4mux ! filesink location=out.mp4

ストリームを束ねる要素は、入力が 1 本なら不要です。複数の入力をまとめる方法は パイプラインの作り方 を参照してください。