易百纳玄武S3部署multistream_detect多路交通分析示例

易百纳玄武S3部署multistream_detect多路交通分析示例 易百纳技术社区 2026-10-19 16:39:38 29

硬件平台:易百纳玄武S3

易百纳社区

简介

本文主要介绍multistream_detect示例(多路交通分析)的交叉编译、板端部署与运行验证方法。该示例面向RK1820/RK1828,程序通过GStreamer接入摄像头或本地视频,使用 RKNN3完成目标检测、目标跟踪、车牌识别和视觉语言模型(VLM)分析,并通过 Web 页面展示实时画面、检测结果、事件和运行状态。

示例功能:

  • 支持USB摄像头和本地MP4文件,多路输入分别使用独立队列;
  • 使用YOLOv5n检测车辆和行人,默认每路检测上限为20FPS;
  • 默认使用CPU IoU跟踪,也提供OSNet ReID特征Pipeline;
  • 对车辆执行车牌检测和PP-OCRv4车牌字符识别;
  • 使用Qwen3-VL描述人员状态、骑车、行李和危险物品等信息;
  • 使用Qwen3-VL描述车辆类型和颜色;
  • 每次采集连续四帧场景画面,通过Qwen3-VL判断是否发生交通事故;
  • C++后端提供JPEG、对象、运行统计和SSE事件接口,默认监听18081;
  • FastAPI Web门户默认监听18080,支持单画面和最多四画面展示;
  • 支持叠加检测框后录像,以及RTMP、UDP、SRT等媒体输出;默认配置中这些输出关闭。

整体流程分为三步:

  1. 在x86编译服务器上交叉编译生成ZIP部署包;
  2. 将程序包、模型、测试视频推送到板端并完成环境准备;
  3. 启动服务并访问Web页面验证。

环境准备

项目说明
编译环境x86_64 Linux 编译服务器
SDKRK182X SDK(网盘资料:【易百纳】玄武S3边缘计算AI终端_V2.0中的rk182x_ai_release.tar.gz)
交叉编译工具链aarch64-none-linux-gnu-(--sysroot:rockchip_linux6.12_release/~/aarch64-buildroot-linux-gnu/sysroot,--cross-compile: xuanwu_s3/toolchain 仓库
目标板玄武S3边缘计算AI终端(Debian 13,RK3588+RK182X)
模型与视频models、test_videos两个目录(从<【易百纳】RK182X_模型文件>网盘资料获取)

编译构建

编译步骤

进入SDK中示例源码目录 RK182X SDK/applications/multistream_detect,在SDK根目录执行:


SYS=/<rockchip_linux6.12_release所在文件路径>/rockchip_linux6.12_release/buildroot/output/rockchip_rk3588_ebaina/rockchip_rk3588/host/aarch64-buildroot-linux-gnu/sysroot
export CXXFLAGS="-I$SYS/usr/lib/glib-2.0/include"
./build.sh clean
./build.sh \
  --cross-compile /<toolchain所在文件路径>/toolchain/aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- \
  --sysroot $SYS

说明:

  • --cross-compile 指定编译器前缀,本例用toolchain;
  • --sysroot 指向SDK buildroot输出的目标板sysroot,本例用RK3588的SDK的sysrootrockchip_linux6.12_release(RK3588的SDK可以从资料网盘<【易百纳】RK182X_模型文件>下载)。

编译输出

编译成功时输出如下:

易百纳社区

ZIP package路径:/RK182X SDK/applications/multistream_detect/install/multistream_detect.zip

编译生成文件

build.release/multistream_detect
install/
├── multistream_detect/
│   ├── app/traffic/configs/
│   ├── app/traffic/web/
│   ├── bin/multistream_detect
│   └── scripts/
│       ├── start.sh
│       └── stop.sh
└── multistream_detect.zip
构建过程:从SDK同步RKNN3 API头文件和tokenizer到third_party;使用指定的交叉编译器和sysroot配置CMake;编译ARM64multistream_detect;复制程序、配置、Web文件和启停脚本到安装目录;生成ZIP部署包。

部署到开发板

准备运行资源

在板端创建示例目录,并将test_videos(测试视频)和models(模型文件)两个目录拷贝到板端/userdata/multistream_detect目录:

adb push <测试视频和模型文件路径> /userdata/multistream_detect

说明:

模型文件与测试视频可以从资料网盘下载。

推送并解压程序包

在Windows终端将编译产物推送到板端:

adb push ~\RK182X SDK\applications\multistream_detect\install\multistream_detect.zip /userdata

进入板端解压程序包:

cd userdata
unzip -o multistream_detect.zip     //解压程序包

核对目录结构

板端最终目录结构应如下:

sudo apt update
sudo apt install -y tree
tree -L 3 /userdata/multistream_detect

易百纳社区

安装 Web 依赖

apt-get update
apt-get install -y python3-venv
python3 -m venv /userdata/multistream_detect/venv
/userdata/multistream_detect/venv/bin/python -m pip install -r \
  /userdata/multistream_detect/app/traffic/web/requirements.txt
/userdata/multistream_detect/venv/bin/python -c \
  'import fastapi, uvicorn; print("FastAPI/Uvicorn ready")'
板端需要Python 3、FastAPI和Uvicorn。Debian/Ubuntu的系统Python通常启用了PEP668,不能直接使用系统级pip install。

检查配置和资源

APP_ROOT=/userdata/multistream_detect
"$APP_ROOT/bin/multistream_detect" \
  --check-config "$APP_ROOT/app/traffic/configs/app.yaml"
"$APP_ROOT/bin/multistream_detect" \
  --check-resources "$APP_ROOT/app/traffic/configs/app.yaml"

--check-config 输出 multistream_detect config ok 及各输入队列的绑定关系即为通过。

易百纳社区

启动与效果验证

启动服务

/userdata/multistream_detect/scripts/start.sh

启动成功输出如下:

易百纳社区

Started multistream_detect (PID 47756, log /userdata/multistream_detect/logs/multistream_detect.log).
Started traffic web (PID 47774, log /userdata/multistream_detect/logs/web.log).

效果验证

服务启动后,在浏览器中访问:

http://<开发板IP>:18080/

本例为:http://192.168.1.168:18080/(请替换为你板端的实际IP地址)。

打开后即可看到智慧交通监管平台(Traffic Intelligence Supervision Console)页面:

  • 左侧为实时监控画面,支持单画面与四画面切换,画面上叠加检测框与VLM分析结果;
  • 右侧为Pipeline运行程(数据流图)与实时动态事件流;
  • 下方为实时目标态势(车辆、行人等目标的统计与列表)。

单画面模式:

易百纳社区

四画面模式(多路视频同时分析):

易百纳社区

停止服务

/userdata/multistream_detect/scripts/stop.sh

stop.sh先停止Web,再停止推理程序。默认等待10秒,进程仍未退出时发送 SIGKILL。

常用配置(可选)

切换输入

默认只启用file0(对应/userdata/multistream_detect/test_videos/video0.mp4)。修改app/traffic/configs/app.yaml中对应输入的enable字段可开启更多视频或摄像头:

inputs:
  - id: cam0
    module: gst_camera
    device: /dev/video0
    width: 1920
    height: 1080
    fps: 25
    output_queue: detection_queue
    enable: true

每个输入必须使用唯一id。运行时会为每路输入展开独立检测队列(如 detection_queue@file0),不同视频流不共用检测缓存和限速状态。

启用录像或推流

app.yaml的outputs中提供record、rtmp、udp等输出示例。启用前应确认板端具有相应GStreamer编码器和协议插件RTMP配置只负责推流,还需单独部署MediaMTX等RTMP服务端。

常见问题

  1. 启动后立即退出:查看/userdata/multistream_detect/logs/multistream_detect.log和logs/web.log,优先检查模型文件、测试视频、RKNN3 Runtime、GStreamer插件以及18080/18081端口是否被占用。
  2. Web 页面能打开但没有画面:检查启用的输入文件或/dev/video0是否存在,并确认C++后端健康接口正常(curl -fsS http://127.0.0.1:18081/api/health)。FastAPI门户依赖18081后端,后端未运行时页面可能仍能加载,但无法取得视频和事件。
  3. 交叉编译报 stdlib.h: No such file or directory:编译器和sysroot不配套,或未 clean 导致CMake沿用旧编译器缓存。执行 ./build.sh clean 后使用配套的编译器与sysroot重新编译。
  4. 权限不足无法执行:确认使用start.sh/stop.sh启停,脚本会自动处理执行权限;若手动运行bin/multistream_detect,需先chmod +x。


声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
易百纳技术社区
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
元
红包最小金额不能低于5元
红包数量
个
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

开

已领取20/40,共1.6元 红包规则

    易百纳技术社区