香橙派rk3588的rknn多线程推理逐帧检测5路1080P@30

演示视频

 香橙派rk3588的rknn多线程推理逐帧检测5路1080P@30_哔哩哔哩_bilibili

一、应用场景与功能架构

核心场景

  • 输入:拉取 RTSP 流
  • 处理:多线程推理逐帧检测
  • 输出:RTSP 流服务

功能模块拆解

  1. 拉流 RTSP
    • 工具:FFmpeg
    • 配置:RTSP over TCP(提升传输稳定性)
    • 目标:解封装264 码流
  2. 解码
    • 实现:MPP 解码例程
    • 输出:NV12 格式图像
  3. 预处理
    • 目标:减少 CPU 占用,提升帧率
    • 工具:RGA(替代 OpenCV)
    • 关键处理:
      • Letterbox 方式:宽高等比缩放,黑边填充,图像居中(需位移填充与坐标处理)
      • RGA 注意事项:限定 RGA3 核、使用专用内存分配器(避免 4G 内存报错、图像抖动)
  1. 推理
    • 模式:多线程(每个 NPU 核独立线程,轮流输入图像)
    • 模型:例程内置 YOLOv5s(未修改,便于性能对比)
  2. 后处理
    • 功能:NMS 过滤、画框、打标签
    • 实现细节:
      • 画框:CPU 直接在 NV12 图像操作(跳过 NV12→RGB 转换),实测 CPU 耗时 3.39ms vs RGA 耗时 7.8ms,优先选择 CPU
      • 打标签:OpenCV 生成 RGB 文字图像,转换为 NV12 后 CPU 填充(轻量级操作,无需 RGA)
  1. 画面拼接
    • 工具:RGA2(因 RGA3 高负载)
    • 配置:使用 4G 内存分配器(满足 RGA2 内存需求)
  2. 编码
    • 实现:MPP 编码例程
    • 输入 / 输出:NV12 图像→H.264 码流
  3. RTSP 流服务
    • 工具:开源项目rtsp_demo
    • 功能:封装264 为 RTSP 流,支持外部拉流

二、测试环境与数据

  1. 测试视频参数
    • 分辨率:1080P
    • 帧率:30 FPS
    • 码率:2554 kbps
  2. 播放与验证
    • 工具:PC 端 VLC 拉取 RTSP 流
  3. 资源占用率(峰值)

 

资源类型

应用程序

系统总计

CPU

127%(满载 800%)

163.5%

内存(Mem)

7%(555 MB)

4.01 GB

NPU

Core0:75% / Core1:79% / Core2:77%

RGA

RGA3 Core0:38% / Core1:16% / RGA2:9%

温度

59℃

 

三、关键优化点总结

  1. 预处理与后处理
    • 优先使用 RGA 硬件加速(除轻量级 CPU 操作)。
    • Letterbox 工艺结合内存分配策略,避免 RGA 性能瓶颈。
  2. 多线程推理
    • 充分利用 NPU 多核特性,线程与核心绑定提升并行效率。
  3. 资源分配
    • 分离 RGA2 与 RGA3 负载,搭配专用内存分配器优化 4G 内存管理。
posted @ 2025-06-08 18:31  逸俊晨晖  阅读(455)  评论(1)    收藏  举报