PhysDrive数据集:77GHz雷达+RGB+红外+深度多模态驾驶员生理监测基准

PhysDrive数据集:77GHz雷达+RGB+红外+深度多模态驾驶员生理监测基准

论文信息

项目 内容
标题 PhysDrive: A Multimodal Remote Physiological Measurement Dataset for In-vehicle Driver Monitoring
发表 Lacuna, 2026
模态 RGB + IR + Depth + 77GHz mmWave Radar
真值 ECG + BVP + Respiration

核心创新

PhysDrive是首个集成 77GHz毫米波雷达 用于座舱心率检测的公开数据集。同步采集4种非接触传感模态 + 6路生理真值信号,为无接触驾驶员生理监测提供标准化基准。

1. 数据集概览

1.1 传感器配置

传感模态 设备 规格 用途
RGB摄像头 工业相机 1920×1080, 30fps rPPG提取
红外摄像头 IR相机 640×480, 30fps, 940nm IR-rPPG
深度摄像头 ToF/Structured 640×480, 30fps 姿态/距离
77GHz mmWave TI AWR2944 4Tx4Rx, 20fps 胸壁位移→心率/呼吸

1.2 真值信号

真值 传感器 采样率
ECG 医疗级心电 1024 Hz
BVP 血容积脉冲 128 Hz
呼吸 呼吸带 100 Hz
SpO2 血氧 50 Hz
温度 体温 1 Hz
IMU 运动参考 1024 Hz

1.3 参与者

参数 数值
参与者数 48人
年龄分布 20-65岁
性别 均衡
肤/体重 多样化
肤素沉着 Fitzpatrick I-VI型

2. 77GHz雷达心率检测

2.1 原理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import numpy as np

class RadarHeartRate:
"""
77GHz mmWave雷达心率检测

原理: 雷达波穿透衣物,被胸壁反射,
通过相位变化检测胸壁微小位移(<0.5mm),
从位移信号中提取心跳和呼吸

优势:
- 隐私友好(无图像)
- 全天候(光照无关)
- 穿透毛毯/衣物

77GHz vs 60GHz:
- 波长更短(3.9mm vs 5mm)→灵敏度更高
- 分辨率更好→心跳/呼吸分离更清晰
"""

def __init__(self, fs: int = 20):
self.fs = fs

def extract_vital_signs(
self,
radar_phase: np.ndarray,
range_bin: int = None
) -> dict:
"""
从雷达相位提取生命体征

Args:
radar_phase: (N,) 相位序列(弧度)
range_bin: 目标距离bin

Returns:
vitals: {'hr': float, 'rr': float, 'hrv': float}
"""
# 1. 相位解卷绕
phase_unwrapped = np.unwrap(radar_phase)

# 2. 去趋势
phase_detrend = phase_unwrapped - np.polyval(
np.polyfit(np.arange(len(phase_unwrapped)), phase_unwrapped, 3),
np.arange(len(phase_unwrapped))
)

# 3. 分离呼吸(<0.5Hz)和心跳(0.7-3Hz)
from scipy.signal import butter, filtfilt

# 呼吸带 (0.1-0.5 Hz)
b_r, a_r = butter(3, [0.1, 0.5], btype='band', fs=self.fs)
resp = filtfilt(b_r, a_r, phase_detrend)

# 心跳带 (0.7-3.0 Hz)
b_h, a_h = butter(3, [0.7, 3.0], btype='band', fs=self.fs)
cardiac = filtfilt(b_h, a_h, phase_detrend)

# 4. 频谱分析
from scipy.signal import welch
freqs, psd = welch(cardiac, fs=self.fs, nperseg=self.fs*10)

# 心率峰值
hr_idx = np.argmax(psd[(freqs >= 0.7) & (freqs <= 3.0)])
hr_hz = freqs[(freqs >= 0.7) & (freqs <= 3.0)][hr_idx]
hr_bpm = hr_hz * 60

# 呼吸率
freqs_r, psd_r = welch(resp, fs=self.fs, nperseg=self.fs*10)
rr_idx = np.argmax(psd_r[(freqs_r >= 0.1) & (freqs_r <= 0.5)])
rr_hz = freqs_r[(freqs_r >= 0.1) & (freqs_r <= 0.5)][rr_idx]
rr_per_min = rr_hz * 60

# HRV (简化: 心拍间隔的标准差)
# 实际需R峰检测
hrv = np.std(np.diff(np.where(cardiac > np.mean(cardiac))[0])) / self.fs * 1000

return {
'hr_bpm': float(hr_bpm),
'rr_per_min': float(rr_per_min),
'hrv_ms': float(hrv),
'cardiac_signal': cardiac,
'resp_signal': resp
}


# 测试
if __name__ == "__main__":
rng = np.random.default_rng(42)
detector = RadarHeartRate(fs=20)

# 模拟雷达相位(心率72bpm=1.2Hz + 呼吸18bpm=0.3Hz)
t = np.arange(0, 60, 1/20) # 60秒
hr_signal = 0.1 * np.sin(2*np.pi*1.2*t) # 心跳位移
resp_signal = 1.0 * np.sin(2*np.pi*0.3*t) # 呼吸位移(幅度更大)
noise = 0.05 * rng.normal(size=len(t))
radar_phase = hr_signal + resp_signal + noise

vitals = detector.extract_vital_signs(radar_phase)

print("=== 77GHz雷达生命体征检测 ===")
print(f"心率: {vitals['hr_bpm']:.1f} bpm (真值: 72.0)")
print(f"呼吸率: {vitals['rr_per_min']:.1f} /min (真值: 18.0)")
print(f"HRV: {vitals['hrv_ms']:.1f} ms")

2.2 与其他模态性能对比

模态 HR MAE(bpm) RR MAE(/min) 夜间 隐私 穿透
RGB rPPG ±3.8 ±2.5 ❌ 中 ❌
IR rPPG ±2.1 ±1.8 ✅ 中 ❌
77GHz雷达 ±1.5 ±0.8 ✅ 高 ✅
方向盘ECG ±0.8 N/A ✅ 高 N/A
融合全部 ±0.5 ±0.5 ✅ 高 ✅

3. 基准方法

3.1 评估任务

任务 描述 评价标准
心率估计 从非接触信号估计bpm MAE, Pearson r
呼吸率估计 估计每分钟呼吸次数 MAE
HRV分析 RMSSD, LF/HF比 MAE, Pearson r
运动鲁棒性 驾驶运动下性能 MAE by motion level

3.2 基准方法排名

排名 方法 模态 HR MAE
1 多模态融合 全部4模态 ±0.5 bpm
2 77GHz + IR rPPG 雷达+红外 ±0.9 bpm
3 77GHz单独 雷达 ±1.5 bpm
4 IR rPPG 红外 ±2.1 bpm
5 RGB rPPG 可见光 ±3.8 bpm

4. IMS开发启示

4.1 雷达+DMS融合方案

graph TD
    A[77GHz座舱雷达] --> B[胸壁位移提取]
    B --> C[心率+呼吸]
    
    D[DMS IR摄像头] --> E[rPPG提取]
    E --> F[心率补充]
    
    C --> G[多模态融合]
    F --> G
    G --> H[驾驶员生理状态]
    
    H --> I{状态判定}
    I -->|疲劳| J[HRV↓+PERCLOS↑]
    I -->|压力| K[HR↑+LF/HF↑]
    I -->|酒驾| L[HR↑↑+运动学PE]
    I -->|正常| M[常规监控]
    
    style G fill:#ff9,stroke:#333

4.2 量产推荐

方案 模态 成本 HR精度 适用
基础 IR rPPG $0 ±2.1 低成本车型
标准 IR rPPG + 77GHz $10-15 ±0.9 中端车型
高端 全4模态 $25-30 ±0.5 旗舰车型

4.3 与DMS协同检测场景

Euro NCAP场景 DMS视觉 雷达生理 融合效果
疲劳 PERCLOS HRV↓ 疲劳检测+15%
分心 凝视熵 HR↑ 走神检测+10%
酒驾 面部 HR↑↑ 酒驾检测+20%
CPD N/A 呼吸检测 CPD生命确认
OOP 姿态 胸壁位置 OOP精度+25%

5. 总结

PhysDrive数据集的贡献:

  1. 首个77GHz雷达+多模态座舱生理基准 — 填补空白
  2. 48人多样化 — 年龄/性别/肤色均衡
  3. 6路真值同步 — ECG+BVP+呼吸+SpO2+温度+IMU
  4. 雷达±1.5bpm — 无接触最优方案

对IMS团队:

  • 下载PhysDrive 评估现有rPPG算法
  • 采购77GHz评估板 (TI AWR2944) 验证座舱心率
  • 融合 雷达心率 + DMS视觉 → 多模态生理状态
  • 对标 Euro NCAP OMS生理信号监测要求

数据集: PhysDrive (Lacuna, 2026), 77GHz mmWave + RGB + IR + Depth


PhysDrive数据集:77GHz雷达+RGB+红外+深度多模态驾驶员生理监测基准
https://dapalm.com/2026/10/08/2026-10-08-020-physdrive-77ghz-radar-rppg-dataset-2026/
作者
Mars
发布于
2026年10月8日
许可协议