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;未推断出任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目