前言
DMS系统需要在严格的计算、功耗和成本约束下,以低延迟识别分心和疲劳相关行为。本文介绍的方案在树莓派5和Google Coral Edge-TPU上实现了实时驾驶行为识别,为量产级DMS提供参考。
一、问题定义
1.1 部署约束
| 约束 |
要求 |
| 延迟 |
<100ms端到端 |
| 吞吐量 |
15-25 FPS |
| 功耗 |
低功耗嵌入式平台 |
| 成本 |
消费级硬件 |
1.2 学术原型 vs 量产系统
| 方面 |
学术原型 |
量产系统 |
| 环境 |
受控条件 |
真实驾驶场景 |
| 评估 |
离线准确率 |
端到端流水线 |
| 输出 |
逐帧标签 |
稳定告警事件 |
二、技术方案
2.1 流水线架构
1 2 3 4 5 6 7 8 9 10 11 12 13
| ┌──────────────────────────────────────────────┐ │ DMS端到端流水线 │ ├──────────────────────────────────────────────┤ │ │ │ RGB摄像头 → 帧捕获 → 轻量视觉模型 │ │ ↓ │ │ 逐帧分类 │ │ ↓ │ │ 时序决策头 │ │ ↓ │ │ 稳定告警输出 │ │ │ └──────────────────────────────────────────────┘
|
2.2 17种行为分类
| 类别 |
行为 |
| 手机使用 |
多种握持模式、通话、打字 |
| 饮食 |
吃东西、喝水 |
| 吸烟 |
点烟、吸烟 |
| 姿态 |
向后伸手、乘客互动 |
| 注意力 |
视线偏移、注意力分散 |
| 仪表操作 |
中控面板交互 |
| 仪表整理 |
化妆、整理 |
| 疲劳 |
打哈欠、闭眼睡眠 |
2.3 关键设计
(1) 紧凑视觉模型
- 基于MobileNetV3/EfficientNet
- INT8量化加速
- 针对嵌入式优化
(2) 混淆感知标签设计
问题:视觉相似动作导致误报
| 混淆对 |
解决方案 |
| 挠脸 vs 打电话 |
上下文建模 |
| 看后视镜 vs 看手机 |
时序持续检测 |
| 调整眼镜 vs 化妆 |
细粒度分类 |
(3) 时序决策头
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class TemporalDecisionHead: def __init__(self, threshold=0.7, min_duration=2.0): self.threshold = threshold self.min_duration = min_duration self.state = {} def update(self, frame_idx, class_id, confidence): if confidence > self.threshold: self.accumulate(class_id, frame_idx) else: self.reset(class_id) if self.duration(class_id) > self.min_duration: return self.emit_alert(class_id)
|
三、部署性能
3.1 硬件平台
| 平台 |
类型 |
价格区间 |
| Raspberry Pi 5 |
CPU-only |
~$80 |
| Google Coral |
Edge-TPU |
~$60 (加速卡) |
3.2 性能指标
| 指标 |
Raspberry Pi 5 (INT8) |
Google Coral |
| 帧率 |
~16 FPS |
~25 FPS |
| 逐帧延迟 |
<60ms |
<40ms |
| 功耗 |
~5W |
~2W (加速器) |
3.3 实车验证
测试条件:
- 多样化驾驶员群体
- 不同车型和光照条件
- 真实驾驶场景
关键发现:
- 时序决策头显著减少误报
- INT8量化几乎不影响准确率
- 低成本硬件可满足实时要求
四、量化优化
4.1 量化方法
| 方法 |
精度 |
速度 |
复杂度 |
| FP32 |
最高 |
最慢 |
- |
| FP16 |
高 |
较快 |
低 |
| INT8 |
中高 |
快 |
中 |
| INT4 |
中 |
最快 |
高 |
4.2 INT8量化流程
1 2 3 4 5
| 训练模型 → 校准数据集 → 量化感知训练 → INT8模型 ↓ 激活分布统计 ↓ 量化参数确定
|
4.3 精度损失
| 任务 |
FP32准确率 |
INT8准确率 |
损失 |
| 行为分类 |
94.2% |
93.8% |
-0.4% |
| 疲劳检测 |
96.1% |
95.7% |
-0.4% |
五、IMS部署建议
5.1 平台选择
| 车型定位 |
推荐平台 |
成本 |
| 经济型 |
树莓派5级CPU |
低 |
| 主流型 |
Cortex-A78 + NPU |
中 |
| 高端型 |
Snapdragon Ride / TDA4 |
中高 |
5.2 模型选择
| 复杂度 |
模型 |
FPS (树莓派5) |
| 轻量 |
MobileNetV3-Small |
20+ |
| 中等 |
EfficientNet-B0 |
16 |
| 较重 |
ResNet-18 |
8-10 |
5.3 优化策略
1 2 3 4 5 6 7 8 9
| ┌─────────────────────────────────────┐ │ 部署优化检查清单 │ ├─────────────────────────────────────┤ │ ✅ 模型量化(INT8/INT4) │ │ ✅ 输入分辨率优化 │ │ ✅ 批处理(如支持) │ │ ✅ 后端加速(TensorRT/TFLite) │ │ ✅ 时序缓冲区大小调优 │ └─────────────────────────────────────┘
|
六、与Euro NCAP对齐
6.1 功能覆盖
| Euro NCAP要求 |
本方案支持 |
| 分心检测 |
✅ 17类行为识别 |
| 疲劳检测 |
✅ 打哈欠、闭眼 |
| 手机使用 |
✅ 多种模式 |
| 视线偏移 |
✅ 注意力分散检测 |
6.2 告警机制
1 2 3
| 检测行为 → 置信度过滤 → 持续时间检测 → 告警触发 ↓ ↓ ↓ ↓ 逐帧 threshold=0.7 min=2s 视觉+声音
|
七、代码示例
7.1 树莓派5部署
1 2 3 4 5 6 7 8 9
| pip install tflite-runtime
import tensorflow as tf converter = tf.lite.TFLiteConverter.from_saved_model('model') converter.optimizations = [tf.lite.Optimize.DEFAULT] converter.target_spec.supported_types = [tf.int8] tflite_model = converter.convert()
|
7.2 Google Coral部署
1 2 3 4 5 6 7 8 9 10 11 12
| import edgetpu from pycoral.utils import edgetpu from pycoral.adapters import common
interpreter = make_interpreter('model_edgetpu.tflite') interpreter.allocate_tensors()
common.set_input(interpreter, frame) interpreter.invoke() output = common.output_tensor(interpreter, 0)
|
八、总结
关键成果
| 成果 |
数据 |
| 树莓派5帧率 |
~16 FPS |
| Coral帧率 |
~25 FPS |
| 行为类别 |
17类 |
| 逐帧延迟 |
<60ms |
开发建议
| 阶段 |
平台 |
目标 |
| 原型验证 |
树莓派5 |
快速迭代 |
| 预量产 |
Coral/TDA4 |
性能验证 |
| 量产 |
车规级NPU |
成本优化 |
论文信息:
- 标题:Real-Time In-Cabin Driver Behavior Recognition on Low-Cost Edge Hardware
- 作者:Vesal Ahsani, Babak Hossein Khalaj (Sharif University of Technology)
- 发布:arXiv:2512.22298, December 2025
发布日期:2026-03-13