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 開發人員。
  • 以串流方式對多模型管線(例如:偵測 → 分類 → 追蹤)進行原型設計的研究人員。

從何處開始

  • 針對您的作業系統(Linux, macOS, Android)遵循入門連結。
  • 瀏覽 nnstreamer-example 儲存庫以取得現成的示範。
  • 查看架構 Wiki 以獲得更深入的設計細節。

以上所有資訊均直接取自該儲存庫的 README;未推論出任何額外功能。

相關

  • 專案
  • 專案
  • 專案
  • 專案