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 用例。
典型用例工作流程
- 选择模型(例如:TensorFlow‑Lite 姿态估计模型)。
- 使用
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 tensor_filter元素会对每一帧执行推理(可选择在受支持的加速器上运行),并将结果传递给下游。- 以最少的代码更改,将相同的流水线部署在设备端(Android, Tizen, 嵌入式 Linux)。
谁应该关注这个项目
- 希望在不重写现有基于 GStreamer 代码的情况下添加 AI 功能的媒体工程师。
- 需要统一方法在异构硬件上运行推理的嵌入式/边缘 AI 开发人员。
- 以流式方式对多模型流水线(例如:检测 → 分类 → 跟踪)进行原型设计的研究人员。
从何处开始
- 针对您的操作系统(Linux, macOS, Android)遵循入门链接。
- 浏览
nnstreamer-example代码库以获取现成的演示。 - 查看架构 Wiki 以获取更深入的设计细节。
以上所有信息均直接取自该代码库的 README;未推断出任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目