1.项目背景和目标
背景:工业视觉场景(冷库安全监测、区域入侵检测、人员行为识别)普遍依赖云端 AI
方案,存在带宽成本高、延迟大、数据隐私风险等问题。端侧 AI 推理是明确趋势,但 RK3588 等边缘平台在工程化落地时面临模型部署、硬件加速、进程管理、稳定性保障等一系列工程难题。
目标:在 RK3588 平台上,从零构建一套可交付的边缘 AI 视觉推理系统,实现摄像头采集 → 硬件解码/预处理 → NPU 推理 → 结构化事件输出 → 远程运维监控的全链路产品化闭环。
2. 软件功能
核心功能模块
多源采集:V4L2 USB 摄像头、RTSP 网络流、视频文件、
硬件加速预处理:RGA 硬件加速 resize / CSC / letterbox,释放 CPU 给推理
NPU 推理引擎:RKNN 模型加载/推理、YOLO 检测类后处理适配、INT8 量化
结构化输出:JSONL 检测结果实时输出、TCP/UDS 事件流,直接对接业务系统
进程守护:mlfw-d 守护进程管理 pipeline 生命周期,异常自动重启
远程运维:Agent + tunnel-server 构建设备心跳/诊断上报链路
3.核心业务流程
命令行启动 →camera/rtsp/视频文件流 →MPP 解码 → NV12 原始帧 → RGA resize + letterbox (640x640) → RKNN NPU 推理 → 后处理 (NMS + 坐标映射) → 检测框绘制
1.整体架构思路
业务应用层:mlfw-pipeline 推理管线进程、mlfw-d 控制面进程,device设备监控插件进程以业务插件进程
C基础设施层:libclib: 池/帧/流/日志/编解码/V4L2,无外部依赖,可独立编译部署
硬件抽现层:RGA / MPP / V4L2 / DRM / RKNN RK3588 NPU + 硬件编解码器
2.负责模块与成果
本人独立完成整个项目的架构设计、核心开发和工程质量体系建设,包括:
C 基础库 (clib):ml_pool 池分配器、ml_frame 帧生命周期、ml_stream 流式收发、ml_camera V4L2 封装、ml_log
日志系统、ml_codec RGA/MPP 硬件加速封装- C++ RAII 层 (mlcpp):Socket / Pool / Queue / Vision 等 clib 的 C++ 安全封装
pipeline 数据面:6 stage 视觉流水线,支持 camera/RTSP/file/dryrun 四种输入源,JSONL/TCP/UDS 三种输出方式
控制面 mlfw-d:守护进程框架,子进程生命周期管理 + UDS 通信总线 + 配置管理
3.关键踩坑与解决
1. RGA stride 语义导致内核崩溃
rga_set_rect() 的 stride 参数在 mock 和真实驱动间语义不一致:mock 按字节 stride 实现,真实硬件按像素 stride解析,导致地址计算超出 buffer 范围 → 越界 → RCU stall → kernel panic
2. MPP mpp_enc_cfg_deinit 堆损坏
独立 MPP native 最小复现证明该崩是 MPP 库本身的 bug,与上层封装无关。排除法定位后,调整clib 封装层在 config 生命周期结束后才释放上下文.