GStreamer RKNN 插件自制

项目地址: https://github.com/PT233/gst-rknn-filter

在 Rockchip NPU(RK3588、RK3576、RK3568 等)上运行视觉模型(YOLO、RetinaFace、PPOCR 等)的 GStreamer 插件。支持实时视频推理,可与 videotestsrc、v4l2src、uridecodebin 等源组合使用。

只支持model文件夹下罗列出来的模型,模型全部出自于https://github.com/airockchip/rknn_model_zoo 下转出的rknn模型。

免责申明该插件属于自己自娱自乐,大部分内容参考于https://github.com/haydenee/gstreamer-rknn


快速安装

1. 环境要求

项目 说明
平台 RK3588 / RK3576 / RK3568 等(arm64)
系统 板端 Linux(非交叉编译时)
工具 meson、ninja、pkg-config
runtime GStreamer 1.18+、librga、librknnrt

2. 安装依赖

bash 复制代码
# Debian/Ubuntu 系
sudo apt update
sudo apt install -y meson ninja-build pkg-config \
  gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
  libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

RKNN / RGA 库:优先使用系统安装版本;若无,则使用项目自带预编译库。

bash 复制代码
# 若系统有 librknnrt、librga(如官方镜像已集成),无需额外操作
# 否则,按 thirdparty/README.md 放入预编译库:
#   - librga: thirdparty/librga/libs/
#   - librknnrt: thirdparty/librknn_api/libs/

3. 编译与测试

bash 复制代码
cd rknnfilter
./build.sh

编译成功后,插件在 build/src/libgstrknn.so。运行测试前设置插件路径:

bash 复制代码
export GST_PLUGIN_PATH="$(pwd)/build/src:$GST_PLUGIN_PATH"

详细安装步骤

一、系统依赖

依赖 用途
meson 构建系统
ninja 编译器
gstreamer-1.0 GStreamer 核心
librga Rockchip RGA 加速
librknnrt RKNN runtime

若板端为 Rockchip 官方系统,librgalibrknnrt 通常已预装;否则需从以下地址获取预编译库:

将对应架构的 librga.solibrknnrt.so 放入 thirdparty/librga/libs/thirdparty/librknn_api/libs/

二、编译

bash 复制代码
./build.sh
# 或手动:meson setup build && ninja -C build

构建产物:build/src/libgstrknn.so

三、配置插件路径

GStreamer 需能找到插件,任选其一:

方式 A:每次运行前设置环境变量(推荐)

bash 复制代码
export GST_PLUGIN_PATH="$(pwd)/build/src:$GST_PLUGIN_PATH"

方式 B:安装到系统

bash 复制代码
sudo ninja -C build install
# 若安装到 /usr/local,需将 /usr/local/lib/gstreamer-1.0 加入 GST_PLUGIN_PATH

四、模型准备

  1. 将 RKNN 模型放入 model/ 目录,例如 yolov5.rknn
  2. 检测类模型需提供 model-type 和标签文件(如 coco_80_labels_list.txt)。

可从 RKNN Model Zoo 或官方网盘下载并转换模型;本仓库 model/ 目录已包含 coco_80_labels_list.txt

五、运行测试

bash 复制代码
# 批量测试 model/ 下所有模型(快速模式:每模型 30 帧)
./run_batch_test.sh

# 深度测试(每模型 300 帧 × 2 轮)
./run_batch_test.sh deep

手动运行示例(绝对路径)

bash 复制代码
gst-launch-1.0 videotestsrc num-buffers=300 ! \
  video/x-raw,format=NV12,width=640,height=480 ! \
  rknnfilter model-path=/path/to/model/yolov5.rknn model-type=yolov5 \
    label-path=/path/to/model/coco_80_labels_list.txt show-fps=true ! \
  videoconvert ! autovideosink

支持的模型类型(model-type)

拉到最后查看属性

bash 复制代码
gst-inspect-1.0 rknnfilter
model-type 说明
yolov5, yolov6, yolov7, yolov8 目标检测
yolov8_obb 旋转框检测
yolov10, yolo11, ppyoloe 目标检测
yolov8_pose 人体关键点
yolov5_seg, yolov8_seg, ppseg 图像分割
deeplabv3 语义分割
retinaface 人脸检测
lprnet 车牌识别
ppocr_det, ppocr_rec 文字检测/识别

常见问题

1. 找不到插件 rknnfilter

bash 复制代码
export GST_PLUGIN_PATH="$(pwd)/gstreamer-rknn/build/src:$GST_PLUGIN_PATH"
# 或在 gstreamer-rknn 目录下执行

2. 提示找不到 librknnrt 或 librga

  • 确认系统或 thirdparty/*/libs/ 中有对应架构的 .so 文件。
  • 运行时将包含这些库的目录加入 LD_LIBRARY_PATH

3. meson 报错找不到 gstreamer

bash 复制代码
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

4. run_test.sh 报错找不到模型

yolov5.rknnyolov5s-640-640.rknn 放到 gstreamer-rknn/model/ 目录。

5. OpenCV 可选

meson 会检测 opencv4;未安装时仍可编译,部分后处理功能可能受限。


相关链接


相关推荐
库玛西24 分钟前
深入浅出传输层:UDP 与 TCP 协议全景指南
linux·服务器·网络·c++·笔记·tcp/ip·udp
薛定谔的悦4 小时前
储能 EMS 的功率策略:从一块电表到一次逆流的 200 毫秒
大数据·linux·能源·储能·bms
新时代牛马7 小时前
Linux 内核入门地图:架构、源码目录与五大子系统
linux·运维·架构
Julien20048 小时前
控制 SELinux 文件上下文
linux·运维·服务器
sulikey8 小时前
Linux Core Dump 完全指南:从原理到实战的崩溃调试手册。什么是core dump?程序报错core dumped怎么办?
linux·服务器·操作系统·调试·coredump
jike_20269 小时前
iPhone采访录音同时拍现场照片的APP:图片音频同步记录实测
笔记·智能手机·音视频·语音识别
小猴子爱上树10 小时前
跨境电商翻译工具推荐:批量图片翻译、视频字幕翻译、智能抠图一站式搞定
人工智能·python·音视频
林澈在路上10 小时前
AI翻唱软件哪个好 2026国产AI写歌工具对比推荐
大数据·人工智能·深度学习·github·aigc·音视频·音频
MayZork11 小时前
Windows 与 Linux 下 vcpkg 的安装部署指南
linux·运维·windows
阿童木写作11 小时前
跨马翻译:AI批量图片翻译与视频字幕翻译工具推荐
人工智能·python·音视频