InCarEmo:首个座舱多模态情感对话数据集论文解读与IMS开发启示

论文信息

项目 内容
标题 InCarEmo: A Multimodal Dataset for In-Cabin Emotion Recognition and Driver State Monitoring
作者 Hao Yang, Yanyan Zhao, Kewei Zhao, Hongbo Zhang, Tian Zheng, Yusheng Liu, Xing Fu, Bichen Wang, Yu Zhang, Hao He, Zhen Wu, Xuda Zhi, Yongbo Huang, Bing Qin
机构 哈尔滨工业大学(HIT)+ 赛力斯(SERES)
领域 cs.AI
发布 2026年7月16日
链接 https://arxiv.org/abs/2607.14683
PDF https://arxiv.org/pdf/2607.14683

核心创新

InCarEmo 是首个同时整合 RGB + 红外视频 + 座舱音频 + 对话文本的座舱情感数据集,填补了现有座舱情感计算数据集仅依赖视觉模态、缺乏对话语境的空白。数据集支持三大任务:多模态情感识别、疲劳检测、分心监控。

1. 研究背景与问题定义

1.1 现有数据集的局限性

数据集 模态 情感标注 对话语境 局限性
DMD (2020) RGB + 生理 ❌ ❌ 无情感标注
DriverMVT (2022) RGB ❌ ❌ 无情感标注
MLI-DER (2023) RGB ✅ ❌ 无对话语境
On-Road DFE (2022) RGB ✅ ❌ 无对话语境
KMU-FED (2018) RGB ✅ ❌ 无对话语境
YawDD (2014) RGB ❌ ❌ 仅疲劳检测
3MDAD (2020) RGB + IR + Depth ❌ ❌ 无情感标注
IEMOCAP (2008) 音频 + 视频 + 文本 ✅ ✅ 非驾驶场景
MELD (2018) 音频 + 视频 + 文本 ✅ ✅ 非驾驶场景

1.2 核心问题

现有公开座舱数据集存在三大缺陷:

  1. 模态单一:大多数仅使用 RGB 视频
  2. 缺乏对话:无语言交互信息,无法捕捉驾驶员情绪的语言线索
  3. 场景脱离:通用情感数据集(IEMOCAP、MELD)不在驾驶场景中,缺少交通、导航、车辆状态等上下文

2. InCarEmo 数据集构建

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
"""
InCarEmo 数据集结构
=====================
论文 Section 3: Dataset Construction

模态组成:
- RGB 视频: 1920×1080, 30fps
- 红外视频: 640×480, 30fps (低光环境补充)
- 座舱音频: 16kHz, 16-bit PCM
- 对话文本: 中文原始 + 英文翻译

场景设计:
- 真实座舱环境录制
- 脚本化场景模拟真实驾驶行为
- 覆盖多种光照条件
- 覆盖多种驾驶上下文

任务支持:
1. 多模态情感识别 (MER)
2. 疲劳检测 (FD)
3. 分心监控 (DM)
"""

# 数据集统计 (基于论文描述)
dataset_config = {
"modalities": {
"rgb_video": {
"resolution": "1920x1080",
"fps": 30,
"purpose": "面部表情 + 行为"
},
"ir_video": {
"resolution": "640x480",
"fps": 30,
"purpose": "低光环境补充"
},
"audio": {
"sample_rate": 16000,
"format": "PCM_16",
"purpose": "语音情感 + 环境声"
},
"text": {
"language": "Chinese + English",
"purpose": "对话语境理解"
}
},
"tasks": [
"multimodal_emotion_recognition",
"fatigue_detection",
"distraction_monitoring"
],
"scenarios": [
"traffic_congestion",
"navigation_interaction",
"vehicle_status_query",
"trip_coordination",
"safety_critical_events"
],
"lighting_conditions": ["daylight", "dusk", "night"],
"benchmark": {
"chinese": "primary",
"english": "cross_lingual"
}
}

print(f"模态数量: {len(dataset_config['modalities'])}")
print(f"支持任务: {len(dataset_config['tasks'])}")
print(f"场景类型: {len(dataset_config['scenarios'])}")

2.2 CAMEL:轻量级多模态基线

论文提出 CAMEL(Cabin Adaptive Multimodal Emotion Learner),专为资源受限的座舱环境设计的轻量级基线模型。

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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import torch
import torch.nn as nn
from typing import Dict, Optional

class CAMELBaseline(nn.Module):
"""
CAMEL: 轻量级座舱多模态情感学习基线
==========================================
论文 Section 4: Baseline System

设计特点:
1. 轻量级 - 适合车载边缘部署
2. 模态自适应 - 支持缺失模态
3. 低光鲁棒 - RGB+IR双模态
4. 对话感知 - 文本+音频融合

Args:
visual_dim: 视觉特征维度 (RGB + IR)
audio_dim: 音频特征维度
text_dim: 文本特征维度
hidden_dim: 隐藏层维度
num_emotions: 情感类别数
num_states: 驾驶状态数 (疲劳/分心等)
"""

def __init__(
self,
visual_dim: int = 768,
audio_dim: int = 256,
text_dim: int = 512,
hidden_dim: int = 256,
num_emotions: int = 7,
num_states: int = 3,
dropout: float = 0.1
):
super().__init__()

# 模态编码器
self.visual_encoder = nn.Sequential(
nn.Linear(visual_dim, hidden_dim),
nn.LayerNorm(hidden_dim),
nn.GELU(),
nn.Dropout(dropout)
)
self.audio_encoder = nn.Sequential(
nn.Linear(audio_dim, hidden_dim),
nn.LayerNorm(hidden_dim),
nn.GELU(),
nn.Dropout(dropout)
)
self.text_encoder = nn.Sequential(
nn.Linear(text_dim, hidden_dim),
nn.LayerNorm(hidden_dim),
nn.GELU(),
nn.Dropout(dropout)
)

# 模态融合 - 加权门控
self.fusion_gate = nn.Sequential(
nn.Linear(hidden_dim * 3, hidden_dim),
nn.Sigmoid()
)

# 任务头
self.emotion_head = nn.Linear(hidden_dim, num_emotions)
self.state_head = nn.Linear(hidden_dim, num_states)

def forward(
self,
visual_feat: Optional[torch.Tensor] = None,
audio_feat: Optional[torch.Tensor] = None,
text_feat: Optional[torch.Tensor] = None,
modality_mask: Optional[Dict[str, bool]] = None
) -> Dict[str, torch.Tensor]:
"""
前向传播 - 支持缺失模态

Args:
visual_feat: 视觉特征 [B, visual_dim] 或 None
audio_feat: 音频特征 [B, audio_dim] 或 None
text_feat: 文本特征 [B, text_dim] 或 None
modality_mask: 各模态是否可用

Returns:
emotions: 情感分类 logits [B, num_emotions]
states: 驾驶状态 logits [B, num_states]
"""
feats = []
if visual_feat is not None:
v = self.visual_encoder(visual_feat)
feats.append(v)
else:
feats.append(torch.zeros(1, self.visual_encoder[0].out_features,
device=next(self.parameters()).device))

if audio_feat is not None:
a = self.audio_encoder(audio_feat)
feats.append(a)
else:
feats.append(torch.zeros(1, self.audio_encoder[0].out_features,
device=next(self.parameters()).device))

if text_feat is not None:
t = self.text_encoder(text_feat)
feats.append(t)
else:
feats.append(torch.zeros(1, self.text_encoder[0].out_features,
device=next(self.parameters()).device))

# 门控融合
concat = torch.cat(feats, dim=-1)
gate = self.fusion_gate(concat)
fused = (torch.stack(feats, dim=1) * gate.unsqueeze(-1)).sum(dim=1)

# 任务输出
emotions = self.emotion_head(fused)
states = self.state_head(fused)

return {"emotions": emotions, "states": states}


# 测试
if __name__ == "__main__":
model = CAMELBaseline(
visual_dim=768, # ViT-Base 输出
audio_dim=256, # Wav2Vec2 微调
text_dim=512, # BERT 中文
num_emotions=7, # 高兴/悲伤/愤怒/恐惧/惊讶/厌恶/中性
num_states=3 # 正常/疲劳/分心
)

# 完整模态
v = torch.randn(2, 768)
a = torch.randn(2, 256)
t = torch.randn(2, 512)
out = model(v, a, t)
print(f"完整模态 - 情感 logits: {out['emotions'].shape}")
print(f"完整模态 - 状态 logits: {out['states'].shape}")

# 缺失文本模态
out_missing = model(v, a, None)
print(f"缺失文本 - 情感 logits: {out_missing['emotions'].shape}")

# 仅视觉模态
out_visual_only = model(v, None, None)
print(f"仅视觉 - 情感 logits: {out_visual_only['emotions'].'].shape}")

# 模型参数量
total_params = sum(p.numel() for p in model.parameters())
print(f"总参数量: {total_params:,} ({total_params/1e6:.2f}M)")

2.3 实验结果

论文在多种设置下进行实验,关键发现如下:

设置 情感识别准确率 疲劳检测 分心监控
仅 RGB 基线 基线 基线
RGB + IR ↑提升 ↑提升 -
RGB + 音频 ↑提升 - ↑提升
RGB + IR + 音频 + 文本 最高 最高 最高
CAMEL (完整模态) 最优效率 最优效率 最优效率
低光条件 单模态显著下降 - -
低光 + CAMEL (RGB+IR+音频) 显著恢复 - -
模态缺失场景 仍保持合理性能 - -

2.4 核心发现

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
# 实验结论代码化
findings = {
"multimodal_fusion_benefit": {
"description": "多模态融合一致提升性能",
"evidence": "RGB+IR+音频+文本 > 任意单模态",
"implication": "IMS必须支持多模态融合架构"
},
"low_light_challenge": {
"description": "低光条件是最大挑战",
"evidence": "单RGB模态在低光下显著下降",
"implication": "IR + 音频是夜间驾驶的必要补充"
},
"dialogue_importance": {
"description": "对话文本提供独特情感线索",
"evidence": "加入文本模态后情感识别显著提升",
"implication": "语音助手交互数据是情感理解的关键输入"
},
"modality_robustness": {
"description": "缺失模态下仍可工作",
"evidence": "CAMEL在模态缺失时保持合理性能",
"implication": "容错架构是量产必要条件"
},
"cross_lingual": {
"description": "中英文跨语言评估初步验证",
"evidence": "英文benchmark可用",
"implication": "全球化部署需要跨语言能力"
}
}

for key, value in findings.items():
print(f"\n{'='*60}")
print(f"发现: {value['description']}")
print(f"证据: {value['evidence']}")
print(f"IMS启示: {value['implication']}")

3. 方法详解

3.1 数据集构建流程

3.2 场景设计

场景类别 具体场景 情感触发
交通拥堵 堵车等待、加塞 愤怒、沮丧
导航交互 问路、重新规划 困惑、焦虑
车辆状态 故障提醒、低油量 担忧、紧张
行程协调 接人迟到、时间压力 焦虑、急躁
安全事件 急刹车、近距离 恐惧、惊讶
日常驾驶 正常通勤 中性、放松
夜间驾驶 低光条件 疲劳、困倦

4. 代码复现

4.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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
"""
InCarEmo 多模态特征提取管道
============================
论文 Section 3 & 4

模态编码器:
- 视觉: ViT-Base (RGB) + CNN (IR)
- 音频: Wav2Vec2 微调
- 文本: BERT 中文
"""

import torch
import torch.nn as nn
from transformers import ViTModel, Wav2Vec2Model, BertModel

class InCarEmoFeatureExtractor(nn.Module):
"""
多模态特征提取器

对应论文 Section 4 的特征提取管道

Args:
vit_model: 预训练 ViT 模型名
wav2vec_model: 预训练 Wav2Vec2 模型名
bert_model: 预训练 BERT 模型名
"""

def __init__(
self,
vit_model: str = "google/vit-base-patch16-224",
wav2vec_model: str = "facebook/wav2vec2-base",
bert_model: str = "bert-base-chinese"
):
super().__init__()

# RGB 视觉编码器
self.rgb_encoder = ViTModel.from_pretrained(vit_model)
self.rgb_proj = nn.Linear(768, 256)

# IR 红外编码器 (轻量CNN)
self.ir_encoder = nn.Sequential(
nn.Conv2d(1, 32, kernel_size=3, stride=2, padding=1),
nn.BatchNorm2d(32),
nn.ReLU(),
nn.Conv2d(32, 64, kernel_size=3, stride=2, padding=1),
nn.BatchNorm2d(64),
nn.ReLU(),
nn.AdaptiveAvgPool2d((1, 1)),
nn.Flatten(),
nn.Linear(64, 256)
)

# 音频编码器
self.audio_encoder = Wav2Vec2Model.from_pretrained(wav2vec_model)
self.audio_proj = nn.Linear(768, 256)

# 文本编码器
self.text_encoder = BertModel.from_pretrained(bert_model)
self.text_proj = nn.Linear(768, 256)

# 模态权重学习
self.modality_weights = nn.Parameter(torch.ones(4))

def forward(
self,
rgb_frames: torch.Tensor = None,
ir_frames: torch.Tensor = None,
audio: torch.Tensor = None,
text_input_ids: torch.Tensor = None,
text_attention_mask: torch.Tensor = None
) -> dict:
"""
提取多模态特征

Args:
rgb_frames: [B, T_rgb, C, H, W] RGB 视频帧
ir_frames: [B, T_ir, 1, H_ir, W_ir] 红外视频帧
audio: [B, T_audio] 原始音频波形
text_input_ids: [B, T_text] 文本 token
text_attention_mask: [B, T_text] 注意力掩码

Returns:
features: dict of modality features
"""
features = {}

# RGB 视觉特征
if rgb_frames is not None:
B, T, C, H, W = rgb_frames.shape
rgb_flat = rgb_frames.view(B * T, C, H, W)
rgb_out = self.rgb_encoder(rgb_flat).last_hidden_state[:, 0] # CLS token
rgb_feat = self.rgb_proj(rgb_out).view(B, T, 256).mean(dim=1) # 时序平均
features['rgb'] = rgb_feat * torch.sigmoid(self.modality_weights[0])

# IR 视觉特征
if ir_frames is not None:
B, T, _, H_ir, W_ir = ir_frames.shape
ir_flat = ir_frames.view(B * T, 1, H_ir, W_ir)
ir_feat = self.ir_encoder(ir_flat).view(B, T, 256).mean(dim=1)
features['ir'] = ir_feat * torch.sigmoid(self.modality_weights[1])

# 音频特征
if audio is not None:
audio_out = self.audio_encoder(audio).last_hidden_state
audio_feat = self.audio_proj(audio_out).mean(dim=1)
features['audio'] = audio_feat * torch.sigmoid(self.modality_weights[2])

# 文本特征
if text_input_ids is not None:
text_out = self.text_encoder(
input_ids=text_input_ids,
attention_mask=text_attention_mask
).last_hidden_state[:, 0] # CLS token
text_feat = self.text_proj(text_out)
features['text'] = text_feat * torch.sigmoid(self.modality_weights[3])

return features


# 测试
if __name__ == "__main__":
print("InCarEmo 多模态特征提取器")
print("=" * 50)
print("模型组件:")
print(" - RGB: ViT-Base (768→256)")
print(" - IR: 轻量CNN (→256)")
print(" - Audio: Wav2Vec2 (768→256)")
print(" - Text: BERT-Chinese (768→256)")
print()

# 模拟输入
rgb = torch.randn(2, 10, 3, 224, 224) # 2 batch, 10 帧
ir = torch.randn(2, 10, 1, 224, 224)
audio = torch.randn(2, 16000 * 3) # 3秒音频
text_ids = torch.randint(0, 21128, (2, 32))
text_mask = torch.ones(2, 32)

# 提取器实例化 (实际使用需下载预训练权重)
# extractor = InCarEmoFeatureExtractor()
# features = extractor(rgb, ir, audio, text_ids, text_mask)
# for modality, feat in features.items():
# print(f"{modality}: {feat.shape}")

print("预期输出:")
print(" rgb: [2, 256]")
print(" ir: [2, 256]")
print(" audio: [2, 256]")
print(" text: [2, 256]")

4.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
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
"""
缺失模态实验复现
==================
论文 Section 4: Modality-Missing Analysis
"""

import itertools
import numpy as np

class ModalityMissingEvaluator:
"""
评估不同模态组合下的性能

论文实验: 测试所有模态子集的性能下降
"""

def __init__(self, modalities: list = ['rgb', 'ir', 'audio', 'text']):
self.modalities = modalities

def get_all_combinations(self) -> list:
"""生成所有非空模态子集"""
combos = []
for r in range(1, len(self.modalities) + 1):
for combo in itertools.combinations(self.modalities, r):
combos.append(list(combo))
return combos

def evaluate_combination(self, combo: list) -> dict:
"""
模拟评估结果 (基于论文趋势)

论文发现:
1. 全模态 > 任意子集
2. RGB+IR > RGB only (低光场景)
3. RGB+Audio > RGB only (情感场景)
4. RGB+Text > RGB only (对话场景)
"""
# 基于论文趋势的模拟值
base_acc = 0.65 # RGB only baseline
improvement = {
'ir': 0.08, # IR 补充低光
'audio': 0.12, # 音频补充情感
'text': 0.10 # 文本补充语境
}

acc = base_acc
for mod in combo:
if mod in improvement:
acc += improvement[mod] * 0.7 # 非线性叠加

# 全模态额外奖励
if len(combo) == 4:
acc += 0.03 # 融合奖励

return {
'combination': combo,
'num_modalities': len(combo),
'simulated_accuracy': min(acc, 0.95),
'improvement_over_baseline': min(acc, 0.95) - base_acc
}

def run_full_evaluation(self):
"""运行完整缺失模态评估"""
results = []
for combo in self.get_all_combinations():
result = self.evaluate_combination(combo)
results.append(result)

# 排序显示
results.sort(key=lambda x: x['simulated_accuracy'], reverse=True)

print("=" * 60)
print("缺失模态评估结果 (模拟)")
print("=" * 60)
print(f"{'模态组合':<30} {'模态数':<8} {'准确率':<10} {'提升':<10}")
print("-" * 60)
for r in results:
combo_str = "+".join(r['combination'])
print(f"{combo_str:<30} {r['num_modalities']:<8} "
f"{r['simulated_accuracy']:.2%} +{r['improvement_over_baseline']:.2%}")

return results

# 运行评估
if __name__ == "__main__":
evaluator = ModalityMissingEvaluator()
results = evaluator.run_full_evaluation()

print(f"\n共评估 {len(results)} 种模态组合")
print(f"最佳组合: {' + '.join(results[0]['combination'])}")
print(f"最佳准确率: {results[0]['simulated_accuracy']:.2%}")

5. 与现有数据集对比

维度 InCarEmo DMD YawDD IEMOCAP MELD
RGB视频 ✅ 1080p ✅ ✅ ✅ ✅
红外视频 ✅ ✅ ❌ ❌ ❌
座舱音频 ✅ 16kHz ❌ ❌ ✅ ✅
对话文本 ✅ 中英 ❌ ❌ ✅ ✅
情感标注 ✅ 7类 ❌ ❌ ✅ ✅
疲劳标注 ✅ ✅ ✅ ❌ ❌
分心标注 ✅ ✅ ❌ ❌ ❌
驾驶场景 ✅ ✅ ✅ ❌ ❌
低光条件 ✅ ✅ ❌ ❌ ❌
跨语言 ✅ 中英 ❌ ❌ ❌ ❌
模态缺失分析 ✅ ❌ ❌ ❌ ❌

6. IMS 开发启示

6.1 架构启示

启示 具体建议 优先级
多模态必须 IMS 3.0 必须支持 ≥3 模态(视觉+音频+文本) 🔴 高
IR 是刚需 夜间场景 RGB 不可靠,IR 是情感+疲劳检测的必要补充 🔴 高
对话是差异化 语音助手交互数据是情感理解的独特输入源 🟡 中
容错设计 模态缺失时仍需保持基本功能,不能崩溃 🔴 高
轻量基线 CAMEL 设计证明轻量模型可兼顾性能和效率 🟡 中
跨语言 全球化部署需要跨语言情感理解能力 🟡 中

6.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
"""
IMS 数据采集方案 - 基于 InCarEmo 启示
"""

ims_data_collection = {
"模态配置": {
"primary": {
"rgb": {
"resolution": "1920x1080",
"fps": 30,
"sensor": "OV2311 / AR0823",
"purpose": "面部表情 + 行为动作"
},
"ir": {
"resolution": "640x480",
"fps": 30,
"wavelength": "940nm",
"purpose": "低光 + 隐私保护"
}
},
"secondary": {
"audio": {
"sample_rate": "16kHz",
"channels": "座舱麦克风阵列",
"purpose": "语音情感 + 环境声"
},
"text": {
"source": "ASR + 语音助手对话",
"language": "zh-CN / en-US",
"purpose": "对话语境 + 情感线索"
}
}
},
"场景覆盖": [
"日常通勤 (中性/放松)",
"交通拥堵 (愤怒/沮丧)",
"夜间驾驶 (疲劳/困倦)",
"导航交互 (困惑/焦虑)",
"安全事件 (恐惧/惊讶)",
"电话通话 (分心/投入)",
"乘客交谈 (社交情感)"
],
"标注体系": {
"emotion": ["happy", "sad", "angry", "fear", "surprise", "disgust", "neutral"],
"fatigue": ["normal", "mild_fatigue", "severe_fatigue"],
"distraction": ["focused", "mild_distraction", "severe_distraction"]
},
"环境变量": [
"光照: 日间/黄昏/夜间",
"天气: 晴/雨/雪/雾",
"速度: 静止/低速/高速",
"交通: 畅通/拥堵/事故"
]
}

print("IMS 数据采集方案")
for section, content in ims_data_collection.items():
print(f"\n{section}:")
if isinstance(content, dict):
for key, val in content.items():
print(f" {key}: {val}")
elif isinstance(content, list):
for item in content:
print(f" - {item}")

6.3 与 Euro NCAP 的关系

虽然 Euro NCAP 2026 协议未明确要求情感识别,但 InCarEmo 支持的疲劳检测和分心监控直接对应 Euro NCAP DSM 场景:

Euro NCAP DSM 场景 InCarEmo 支持 优势
疲劳检测 (PERCLOS) ✅ 多模态疲劳标注 IR 补充夜间
分心监控 (视线偏离) ✅ 多模态分心标注 音频+文本辅助
手机使用检测 ✅ 对话场景覆盖 行为+对话双重线索
正常驾驶基线 ✅ 日常通勤场景 多模态基线建立

7. 后续研究方向

方向 具体内容 难度
跨域迁移 通用情感 → 驾驶场景 🟡
实时部署 CAMEL → Qualcomm QNN 🔴
个性化 驾驶员情感基线建模 🟡
情感调节 检测 → 干预 (音乐/语音/灯光) 🔴
多乘员 前排+后排情感监控 🔴
VLM 融合 VLM + 情感 = 主动安全 🔴

8. 总结

InCarEmo 的核心贡献:

  1. 首个座舱多模态对话情感数据集 — RGB+IR+音频+文本四模态
  2. 三大任务统一 — 情感识别 + 疲劳检测 + 分心监控
  3. 中英双语 — 支持跨语言评估
  4. CAMEL 轻量基线 — 适合车载边缘部署
  5. 缺失模态分析 — 量产部署的容错设计参考

对 IMS 的核心价值:

  • 直接证明多模态融合在座舱场景的必要性
  • 提供数据采集和标注的标准参考
  • CAMEL 架构可作为 IMS 情感模块的起点
  • 缺失模态评估为量产容错设计提供框架

论文链接: https://arxiv.org/abs/2607.14683
数据集: 待公开发布
代码: 待发布