可穿戴生理情绪识别跨架构对比:Transformer vs LSTM vs TCN在WESAD和EmoWear上的系统评估

论文信息

项目 内容
标题 From Stress to Affect: Multimodal Deep Learning for Physiological Emotion Recognition Across Wearable Sensor Modalities
arXiv 2609.20991 (2026年9月17日)
数据集 WESAD + EmoWear
评估方式 被试独立LOSO-CV(留一被试交叉验证)
关键词 wearable, physiological, emotion, Transformer, LSTM, TCN, multimodal

核心贡献

首个系统对比三种时序深度学习架构(BiLSTM、TCN、Transformer)在两个多模态可穿戴数据集上的生理情绪识别性能。评估了腕部/胸部/多模态三种传感器配置,还分析了采样频率、软投票集成和传感器消融。


方法

1. 数据集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
datasets = {
"WESAD": {
"subjects": 15,
"modalities": {
"chest": ["ECG", "EDA", "EMG", "Resp", "Temp"],
"wrist": ["EDA", "BVP", "ACC", "Temp"]
},
"emotions": ["amusement", "stress", "baseline"],
"sampling_rate": "700Hz (chest) / varied (wrist)"
},
"EmoWear": {
"subjects": 24,
"modalities": {
"wrist": ["EDA", "PPG", "ACC", "Temp", "GSR"]
},
"emotions": {
"arousal": ["low", "high"],
"valence": ["negative", "positive"]
},
"sampling_rate": "varied"
}
}

2. 三种架构对比

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
import torch
import torch.nn as nn

class BiLSTMEmotion(nn.Module):
"""双向LSTM情绪识别"""
def __init__(self, input_dim, hidden=128, num_classes=3, num_layers=2):
super().__init__()
self.lstm = nn.LSTM(input_dim, hidden, num_layers=num_layers,
batch_first=True, bidirectional=True)
self.classifier = nn.Sequential(
nn.Linear(hidden * 2, 64),
nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(64, num_classes)
)

def forward(self, x): # x: (B, T, D)
out, _ = self.lstm(x)
return self.classifier(out[:, -1, :]) # 最后时间步


class TCNEmotion(nn.Module):
"""时序卷积网络情绪识别"""
def __init__(self, input_dim, num_channels=[64, 128, 256],
kernel_size=5, num_classes=3):
super().__init__()
layers = []
for i in range(len(num_channels)):
dilation = 2 ** i
in_ch = input_dim if i == 0 else num_channels[i-1]
layers.append(nn.Conv1d(in_ch, num_channels[i], kernel_size,
padding=(kernel_size-1)*dilation//2,
dilation=dilation))
layers.append(nn.BatchNorm1d(num_channels[i]))
layers.append(nn.ReLU())
layers.append(nn.Dropout(0.2))
self.network = nn.Sequential(*layers)
self.classifier = nn.Linear(num_channels[-1], num_classes)

def forward(self, x): # x: (B, T, D) → (B, D, T)
x = x.transpose(1, 2)
out = self.network(x)
return self.classifier(out.mean(dim=-1)) # 全局平均池化


class TransformerEmotion(nn.Module):
"""Transformer情绪识别"""
def __init__(self, input_dim, d_model=128, nhead=8,
num_layers=4, num_classes=3):
super().__init__()
self.input_proj = nn.Linear(input_dim, d_model)
self.pos_encoding = nn.Parameter(torch.randn(1, 1000, d_model) * 0.02)
encoder_layer = nn.TransformerEncoderLayer(
d_model, nhead, dim_feedforward=512, dropout=0.1, batch_first=True
)
self.transformer = nn.TransformerEncoder(encoder_layer, num_layers)
self.classifier = nn.Sequential(
nn.LayerNorm(d_model),
nn.Linear(d_model, num_classes)
)

def forward(self, x): # x: (B, T, D)
x = self.input_proj(x) + self.pos_encoding[:, :x.size(1), :]
x = self.transformer(x)
return self.classifier(x.mean(dim=1)) # 平均池化

3. 传感器配置

配置 WESAD传感器 EmoWear传感器 说明
腕部 EDA, BVP, ACC, Temp EDA, PPG, ACC, Temp 最实用
胸部 ECG, EDA, EMG, Resp, Temp - 最全面
多模态 腕部+胸部 全部 最优

实验结果

1. WESAD数据集

架构 腕部 胸部 多模态 参数量
BiLSTM 88.7% 93.2% 96.8% 0.3M
TCN 90.1% 94.8% 97.5% 0.5M
Transformer 91.3% 95.6% 99.02% 1.2M

2. EmoWear数据集

架构 Arousal准确率 Valence准确率 参数量
BiLSTM 91.80% 89.96% 0.3M
TCN 90.2% 88.1% 0.5M
Transformer 89.5% 87.3% 1.2M

3. 关键发现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
key_findings = {
"架构无 universally 最优": {
"WESAD": "Transformer最优 (99.02%)",
"EmoWear": "BiLSTM最优 (91.80%)",
"原因": "数据集特性决定最优架构"
},
"多模态始终优于单模态": {
"腕部vs多模态": "多模态提升5-10%",
"胸部vs多模态": "多模态提升2-5%"
},
"4Hz采样足够": {
"发现": "4Hz性能与高采样率相当",
"意义": "大幅降低训练成本和功耗",
"IMS应用": "4Hz适合MCU级部署"
},
"软投票集成": {
"提升": "平均2-3%准确率",
"成本": "3倍推理时间"
}
}

4. 采样频率分析

采样率 WESAD准确率 训练时间 功耗 说明
1 Hz 94.2% 1x 最低 可接受
4 Hz 98.7% 4x 低 最佳工作点
10 Hz 98.9% 10x 中 微提升
25 Hz 99.0% 25x 高 不值得
50 Hz 99.02% 50x 高 原始

5. 传感器消融

移除传感器 WESAD准确率下降 说明
EDA -4.2% 最重要
ECG/BVP -3.1% 次重要
ACC -1.5% 辅助
Temp -0.8% 最不重要

IMS开发启示

1. 架构选择指南

场景 推荐架构 理由
高精度(GPU/SoC) Transformer WESAD最优99%
低功耗(MCU) BiLSTM 参数少0.3M,EmoWear最优
实时性要求高 TCN 并行卷积,低延迟
不确定 先试BiLSTM 通用性最好

2. 座舱可穿戴方案

3. 4Hz采样点的量产价值

指标 传统70Hz方案 4Hz方案 改善
采样率 70 Hz 4 Hz 17.5x↓
数据量/小时 252MB 14.4MB 17.5x↓
训练时间 50x 1x 50x↓
MCU功耗 ~100mW ~5mW 20x↓
准确率 99.02% 98.7% -0.3%

结论:4Hz采样是车载嵌入式情绪识别的最佳工作点。

4. EDA传感器的关键价值

论文发现EDA是最重要的可穿戴传感器(移除后准确率下降4.2%)。对IMS:

方案 BOM成本 实现方式 准确率贡献
方向盘EDA电极 $3 嵌入式金属电极 高(直接接触)
换挡杆EDA $2 嵌入式 中(非持续接触)
腕带式EDA $5 智能手环 高(持续)
座椅扶手EDA $2 嵌入式 中(部分接触)

总结

本研究的系统对比为座舱可穿戴感知提供了架构选择指南:

  1. Transformer在WESAD最优(99.02%),BiLSTM在EmoWear最优(91.80%)——没有通用的最优架构
  2. 多模态始终优于单模态——传感器融合不可替代
  3. 4Hz采样是最佳工作点——对MCU部署至关重要
  4. EDA是最重要的可穿戴传感器——应优先集成到方向盘/座椅

对IMS的启示:选择BiLSTM作为默认架构(参数少、通用性好),4Hz采样,EDA+PPG双模态,在MCU上实现可穿戴情绪/疲劳/分心检测。