nnstreamer/nnstreamer

:twisted_rightwards_arrows: Neural Network (NN) Streamer, Stream Processing Paradigm for Neural Network Apps/Devices.

NNStreamer – ニューラルネットワーク駆動のメディアパイプライン

概要

  • ニューラルネットワークモデルを単なるメディアフィルターとして扱えるようにする GStreamer プラグインのコレクションです。実際には、ストリーミングパイプライン(ビデオ、オーディオ、センサーデータなど)を構築し、フロー内のどこにでも推論ステップを挿入できます。

重要な理由

  • GStreamer は、Linux、Android、Tizen、macOS などでマルチメディアストリームを処理するための事実上の標準フレームワークです。そのエコシステムに AI モデルを組み込むことで、開発者は以下のメリットを得られます:
    • 低レイテンシ、オンデバイス推論 – データがパイプラインから離れる必要がありません。
    • モジュラー構成 – 単一のグラフで複数のモデル(例:物体検出 → 姿勢推定)を組み合わせられます。
    • ハードウェアアクセラレーション実行 – サブプラグインが幅広いアクセラレータ(TensorRT, Edge‑TPU, Movidius, ARM‑NN, Qualcomm QNN など)をラップします。

主な機能(README に記載されている通り)

  • 主要なフレームワークをサポート:TensorFlow, TensorFlow‑Lite, PyTorch, Caffe, ONNX, TVM など。
  • 複合およびマルチモーダルなパイプラインを提供し、複数の入力ソースと並列モデル分岐を可能にします。
  • 多くのプラットフォーム(Ubuntu, Tizen, Android, Yocto, macOS)向けの公式バイナリパッケージ、および C/C#, Java, 純粋な C での API。
  • カバレッジ、静的解析、および日次リリースを含む、継続的インテグレーションでテストされたビルド。
  • 増え続けるサンプルアプリケーションのリスト(姿勢推定、画像分類、物体検出、顔のランドマーク追跡など)と、文書化されたエッジ AI のユースケース。

典型的なユースケースのワークフロー

  1. モデルを選択します(例:TensorFlow‑Lite の姿勢推定モデル)。
  2. nnstreamer 要素を使用して GStreamer パイプラインを作成します。例:
    gst-launch-1.0 filesrc location=video.mp4 ! decodebin ! videoconvert ! \
    tensor_filter framework=tflite model=pose.tflite ! \
    tensor_decoder mode=pose ! videoconvert ! autovideosink
    
  3. tensor_filter 要素が各フレームで推論を実行し(オプションでサポートされているアクセラレータ上で実行可能)、結果を下流に渡します。
  4. 最小限のコード変更で、同じパイプラインをオンデバイス(Android, Tizen, 組み込み Linux)にデプロイします。

対象となる方

  • 既存の GStreamer ベースのコードを書き直すことなく AI を追加したいメディアエンジニア。
  • 異種ハードウェア上で推論を実行するための統一された方法を必要とする組み込み/エッジ AI 開発者。
  • ストリーミング方式でマルチモデルパイプライン(例:検出 → 分類 → 追跡)のプロトタイプを作成する研究者。

どこから始めるか

  • お使いの OS(Linux, macOS, Android)のGetting Startedリンクに従ってください。
  • すぐに使えるデモについては、nnstreamer-example リポジトリを参照してください。
  • 設計の詳細については、アーキテクチャ Wiki を確認してください。

上記の情報はすべて、リポジトリの README から直接取得したものです。追加の機能は推測されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト