在 RDK S100P 上让 YOLO26 目标检测 和 YOLO26 单目深度估计 两个模型同时跑在单核 BPU 上,
一路合成画面同时输出到**浏览器(MJPEG)**和 HDMI(DRM/KMS 直出),
1080p@30 零丢帧、BPU 占用 ~65%。代码已开源,欢迎拍砖 / 复用。
项目地址:https://github.com/maxma615/yolo26-detect-depth-demo (MIT)
先看效果
Web 面板(浏览器打开 :8080,左侧指标 / 中间实时双画面 / 右侧二维码):
合成输出:上 = 相机 + 检测框 + person 跟踪(ByteTrack),下 = 深度伪彩 + 距离网格:
它做了什么
- 双模型并发:检测(YOLO26X, 640x640 NV12)+ 深度(YOLO26X-Depth, 768x768)用
hobot_dnnC API
提交两个异步 UCP 任务,同时驻留单核 BPU 调度器;一个模型的 CPU 前/后处理和另一个模型的 BPU 推理重叠。 - person 跟踪:原生 C++ ByteTrack(Kalman + 确定性 Hungarian),不依赖 Python。
- 深度距离网格:把深度图按交点取 3x3 中值输出相对距离(也可
--depth-meters标定成米),
近=暖色 / 远=冷色。 - 两种显示:HTTP/MJPEG(浏览器面板,实时刷新指标)+ HDMI 直出(DRM/KMS vsync 翻页,可开机自启)。
- EMEET PIXY 支持:任意
--source自动走 V4L2;PIXY 可开固件级 AI 人形跟踪(HID,比软件 PID 稳)。 - 真实 BPU 占用:直接读
/sys/devices/system/bpu/ratio硬件计数,不是估算。
实测数据(S100P,BPU@1.5GHz,1080p@30 稳态)
| 指标 | 数值 |
|---|---|
| 相机 / 检测 / 深度帧 | 1:1 零丢帧 |
| 端到端 | ~29.5 fps |
| 检测 BPU | avg ~9.2ms(p95 ~9.4) |
| 深度 BPU | avg ~15.8ms(p95 ~16.4) |
| BPU 占用 | ~65% |
| 显示流 | ~50 fps |
快速上手
git clone https://github.com/maxma615/yolo26-detect-depth-demo.git
cd yolo26-detect-depth-demo
# 1. 模型不进 git,从你已有的板端目录或 URL 拉取
MODEL_SRC=/userdata/yolo26_dual_demo/models ./scripts/download_models.sh
# 2. 部署 + 板端编译
BOARD=root@192.168.x.x ./scripts/deploy.sh
# 3. 运行
bash scripts/run.sh # 浏览器 :8080
bash scripts/run.sh --source 2 --cam-fps 60 # 选相机 / 帧率
bash scripts/run.sh --hdmi # HDMI 直出
浏览器打开 http://<板ip>:8080/ 即可。
打包 .deb(可选)
cd cpp/build && cpack -G DEB && sudo dpkg -i yolo26-detect-depth-demo_*.deb
仓库结构
cpp/ CMake + main.cpp + kms_display.h + tracking(ByteTrack) + ui + tests
web/ 浏览器面板(服务端每次请求重读,改完刷新即生效)
scripts/ run / deploy / download_models / install_boot / pixy_tracking
docs/ architecture / web-ui / hdmi / camera-pixy / packaging
测试
cd cpp/build && ctest --output-on-failure # 3/3 通过
欢迎交流:有改进建议(尤其 BPU 调度 / 深度标定 / 更高帧率)欢迎提 issue 或回帖。
如果觉得有用,给个 star
吧~

