电子说
▌ 引言
对嵌入式和 IoT 工程师来说,摄像头接入 AI 的路径已经相当成熟:IPC 输出 RTSP 流,边缘盒子跑推理,检测结果上传云端或触发本地动作。YOLOv8 轻量化版本在 RK3588、昇腾 310 等芯片上的部署,已经有大量工程实践可以参考。
但在部署层之上,有一个问题逐渐变得突出:推理结果的"颗粒度"与实际应用需求之间存在错配。
模型识别出"一个人在用手机"——这是感知结果。但业务系统需要的是"这名员工在岗位上持续使用手机超过 X 分钟"——这是判断结论。本文从硬件感知到系统逻辑,梳理这一层的设计思路。
▌ 一、感知层现状:端侧推理已相当成熟
硬件侧:
• 边缘 AI 芯片:瑞芯微 RK3588、海思 Hi3516/Hi3519、地平线 J5/J6、昇腾 310B 等
• 典型算力:1 ~ 10 TOPS INT8,满足 1080P 视频实时检测需求
• 接入方式:RTSP/RTMP 拉流,GigE 有线或 WiFi 无线,POE 供电
软件侧:
• 推理框架:RKNN、MNN、OpenVINO、TensorRT(按芯片选择)
• 检测模型:YOLOv8/v9 轻量化版本,端侧部署帧率一般在 15 ~ 30 FPS
• 跟踪算法:ByteTrack、OC-SORT,用于目标 ID 持久化
这一层能稳定输出:目标框、类别标签、置信度、目标 ID(跟踪情况下)。但这些输出是逐帧结构化数据,缺乏时序上下文。
▌ 二、中间层缺失:从特征流到事件结论的鸿沟
设想一个具体场景:需要判断后厨员工是否在处理食材前完整执行了洗手流程。
流程定义为:
1. 员工接触原材料(摄像头 A 覆盖区域)
2. 员工移动至洗手台(摄像头 B 覆盖区域)
3. 洗手动作持续时间 ≥ 20 秒
4. 员工返回操作台(摄像头 A)
如果只依赖端侧推理输出,系统接收到的是:
如果只依赖端侧推理输出,系统接收到的是:
t=00:01:23 cam_A person_07 action: touching_ingredients conf=0.91
t=00:01:47 cam_B person_? action: handwashing conf=0.83
t=00:02:09 cam_A person_07 action: food_prep conf=0.88
要从这三条离散记录中判断"洗手流程合规",系统需要解决:
• cam_B 中的 person_? 是否与 cam_A 的 person_07 是同一个人?(跨摄像头 ReID)
• 洗手动作是否持续了足够时长?(时序状态持久化)
• 整个流程的时间间隔是否在合理范围内?(序列时间约束)
这些处理,全部发生在感知层之上、应用层之下的中间层,而这一层目前在很多系统设计中处于空白状态。
▌ 三、中间层的关键技术模块
1. 目标 ReID(跨摄像头重识别)
原理上是基于外观特征向量(ResNet/ViT 提取)的相似度匹配,但实际工程中需要应对:
• 光线差异(不同区域摄像头的曝光条件不同)
• 服装相似(同一品牌制服的员工高度相似)
• 遮挡与角度变化
工程上通常结合空间拓扑约束来降低误匹配率:只有摄像头网络中空间相邻的点位,才对目标 ReID 进行匹配尝试。
2.行为状态机
用于对单一目标的跨帧行为状态进行管理,典型设计如下:
IDLE ──[首次检测到目标行为]──> TRIGGERED
TRIGGERED ──[持续N帧确认]──> CONFIRMED
TRIGGERED ──[行为消失]──> IDLE
CONFIRMED ──[超过时长阈值]──> EVENT_GENERATED
CONFIRMED ──[行为消失]──> IDLE(不生成事件)
3.序列流程验证器
本质上是一个带时间约束的有限状态自动机(FSA):
• 定义动作节点序列:[A, B, C]
• 为相邻节点间定义时间窗口约束:A→B ≤ 30s,B→C ≤ 120s
• 状态在收到对应事件信号时迁移,超时则回到初始状态或标记为流程中断
3.4 规则配置层
业务规则以结构化配置描述,而非硬编码,规则变更只需修改配置文件,无需重新训练或部署模型。
▌ 四、端侧 vs 边缘服务器的分工建议
| 处理模块 | 推荐部署位置 | 原因 |
| 目标检测 + 跟踪 | 端侧 AI 芯片 | 计算密集,本地处理降低带宽 |
| 行为分类 | 端侧 AI 芯片 | 对延迟敏感,本地处理更快 |
| 跨摄像头 ReID | 边缘服务器 | 需要多摄像头数据汇聚 |
| 状态机 + 规则引擎 | 边缘服务器 | 计算量小,但需要状态持久化 |
| 事件存储 + 审计 | 云端 | 持久化存储,支持历史查询 |
▌ 五、开发者注意事项
时钟同步: 多摄像头跨帧分析的基础是时间戳可信。边缘设备需要接入 NTP 同步,时钟偏差控制在 100ms 以内,否则跨摄像头的时序逻辑会出现系统性误差。
帧采样策略: 不需要对每帧都运行全量推理。对于持续性行为判断,1 ~ 5 FPS 的关键帧采样通常足够,结合运动检测进行自适应采样可进一步降低计算开销。
特征流格式标准化: 中间层输入的特征流格式要尽早标准化(推荐 Protobuf 或 JSON Schema),这是规则引擎与感知层解耦的基础。
状态持久化: 边缘服务器需要对目标状态进行持久化(SQLite 或 Redis),避免因重启丢失跨时段的行为状态记录。
▌ 小结
视频 AI 系统从"端侧推理"到"事件判定",需要在感知层之上构建一个完整的中间分析层,核心模块包括:跨摄像头 ReID、行为状态机、序列流程验证器和规则配置引擎。
这一层的工程挑战主要集中在跨摄像头目标关联的准确性、实时系统的延迟控制和规则描述的表达能力上。
感兴趣的朋友欢迎在评论区讨论相关的工程实践经验。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !