Briareo 数据集 + DenseNet 多模态手势识别深度解读:车载环境下 Depth+IR 双模态方案

Briareo 数据集 + DenseNet 多模态手势识别深度解读

论文信息

项目 内容
标题 Multimodal Hand Gesture Classification for the Human-Car Interaction
期刊 Informatics, 2020
数据集 Briareo(车载真实环境)+ NVGestures(NVIDIA模拟器)
手势类别 12类(Briareo)/ 25类(NVGestures)
被试 40人
模态 RGB + Depth + IR
模型 Modified DenseNet-161
准确率 92.0%(Briareo, Depth+IR融合)
实时性 27 fps(多模态)/ 36 fps(单模态)

1. 核心创新

1.1 与传统手势识别对比

维度 传统方案 Briareo方案
传感器 RGB摄像头 Depth+IR+RGB三模态
环境 受控实验室 真实车载环境
光照 假设稳定 隧道/夜间/强光
融合 Mid-fusion Late fusion(更优)
实时性 未报告 27fps(多模态)

1.2 核心发现

发现 说明
Depth+IR > RGB 车载环境光照变化大,Depth/IR光照无关
Late > Mid Fusion 决策级融合 > 特征级融合(反直觉)
传感器位置 隧道控制台向上看(非A柱)
旋转最难 顺/逆时针旋转最易混淆

2. Briareo 数据集

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
BRIAREO_CONFIG = {
"sensors": {
"depth": {
"device": "Pico Flexx",
"placement": "tunnel_console",
"direction": "upward",
"resolution": "224x171",
"fps": 45,
},
"ir_rgb": {
"device": "Leap Motion",
"placement": "tunnel_console",
"direction": "upward",
"resolution": "640x480",
"fps": 60,
},
},
"subjects": {
"count": 40,
"demographics": "diverse age/gender",
},
"gestures": {
"count": 12,
"types": ["dynamic"], # 动态手势
"duration_frames": 40, # 每手势40帧
},
"environment": "real_car_interior",
}

2.2 12类手势

类别 手势 用途
1 Swipe Left 导航/音乐
2 Swipe Right 导航/音乐
3 Swipe Up 向上滚动
4 Swipe Down 向下滚动
5 Push 确认
6 Pull 返回
7 Circle CW 顺时针画圈
8 Circle CCW 逆时针画圈
9 Rotate CW 顺时针旋转
10 Rotate CCW 逆时针旋转
11 Pinch 缩小
12 Spread 放大

3. 方法论

3.1 Modified DenseNet-161 架构

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

class ModifiedDenseNet(nn.Module):
"""
Modified DenseNet-161 for Dynamic Hand Gesture Recognition

修改点:
1. 输入从单帧改为40帧序列
2. 第一层卷积改为3D卷积处理时序
3. 输出层改为手势分类
"""

def __init__(self, num_classes: int = 12, input_channels: int = 3):
super().__init__()

# DenseNet-161 骨干(预训练)
self.backbone = torch.hub.load('pytorch/vision', 'densenet161', pretrained=True)

# 修改第一层:接受时序输入
original_first = self.backbone.features.conv0
self.backbone.features.conv0 = nn.Conv3d(
input_channels, 96,
kernel_size=(3, 7, 7), # (T, H, W)
stride=(1, 2, 2),
padding=(1, 3, 3),
bias=False
)

# 修改分类头
self.backbone.classifier = nn.Sequential(
nn.Linear(2208, 512),
nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(512, num_classes),
)

def forward(self, x: torch.Tensor) -> torch.Tensor:
"""
Args:
x: (B, C, T, H, W) — 40帧序列

Returns:
logits: (B, num_classes)
"""
# 3D卷积处理后转为2D
B, C, T, H, W = x.shape
x = x.permute(0, 2, 1, 3, 4) # (B, T, C, H, W)

# 通过修改的3D第一层
x = self.backbone.features.conv0(x) # (B, 96, T', H', W')

# 转回2D处理
B2, C2, T2, H2, W2 = x.shape
x = x.permute(0, 2, 1, 3, 4).reshape(B2 * T2, C2, H2, W2)

# 通过剩余DenseNet层
for name in list(self.backbone.features.children())[1:]:
x = name(x)

x = x.mean(dim=[2, 3]) # 全局平均池化
x = x.reshape(B, -1)
return self.backbone.classifier(x)


class LateFusionModel:
"""
Late Fusion: 训练独立单模态网络,决策级融合

论文发现:Late Fusion > Mid Fusion
原因:各模态特征空间差异大,早期融合引入噪声
"""

def __init__(self, modalities: list = ["depth", "ir", "rgb"]):
self.modalities = modalities
self.models = {m: ModifiedDenseNet(num_classes=12) for m in modalities}

def predict(
self,
depth_input: torch.Tensor = None,
ir_input: torch.Tensor = None,
rgb_input: torch.Tensor = None,
) -> torch.Tensor:
"""
Late Fusion 预测

各模态独立预测,然后平均
"""
inputs = {"depth": depth_input, "ir": ir_input, "rgb": rgb_input}

scores = []
for mod in self.modalities:
if inputs[mod] is not None:
with torch.no_grad():
logits = self.models[mod](inputs[mod])
scores.append(torch.softmax(logits, dim=1))

# 简单平均
fused = torch.stack(scores).mean(dim=0)
return fused


# 测试
if __name__ == "__main__":
model = ModifiedDenseNet(num_classes=12)

# 模拟40帧输入
x = torch.randn(4, 3, 40, 224, 224)
output = model(x)
print(f"输出: {output.shape}")
print(f"参数: {sum(p.numel() for p in model.parameters()) / 1e6:.1f}M")

3.2 数据流

graph TB
    A[40帧手势序列] --> B[Depth分支]
    A --> C[IR分支]
    A --> D[RGB分支]
    
    B --> E["Modified DenseNet-161<br/>(depth only)"]
    C --> F["Modified DenseNet-161<br/>(ir only)"]
    D --> G["Modified DenseNet-161<br/>(rgb only)"]
    
    E --> H["SoftMax<br/>depth scores"]
    F --> I["SoftMax<br/>ir scores"]
    G --> J["SoftMax<br/>rgb scores"]
    
    H & I & J --> K["Late Fusion<br/>(average)"]
    K --> L[手势分类结果]

4. 关键结果

4.1 模态对比

模态 Briareo准确率 NVGestures准确率
RGB 77.2% 68.5%
Depth 83.5% 76.1%
IR 85.3%
Depth+IR 92.0%
Depth+IR+RGB 91.8%

4.2 融合策略对比

融合策略 准确率 说明
Late Fusion(决策级) 92.0% 最优
Mid Fusion(特征级) 87.3% 早期融合引入噪声
3D-CNN baseline 72.2% 传统方法

4.3 实时性

配置 FPS GPU显存 参数量
单模态(Depth) 36 1.2GB 28M
三模态融合 27 2.7GB 56M

4.4 困难手势分析

手势 准确率 混淆对象
Swipe Left 95%
Swipe Right 94%
Rotate CW 71% Rotate CCW
Rotate CCW 73% Rotate CW
Circle CW 82% Circle CCW
Pinch 89%

5. DriverMHG vs Briareo 对比

维度 DriverMHG Briareo
手势类型 微手势(手不离盘) 动态手势(手离盘)
传感器 RGB+IR+Depth RGB+IR+Depth
位置 方向盘 隧道控制台
被试 25 40
手势数 5+2 12
模型 3D-MobileNetV2 Modified DenseNet-161
IR准确率 91.56% 85.3%
融合最优 分数级 Late Fusion
实时性 350+ clips/s 27 fps

6. IMS 开发启示

6.1 手势交互架构建议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# IMS 手势交互系统配置
IMS_GESTURE_CONFIG = {
"use_case_1_micro_gesture": {
"sensor": "IR (940nm) on steering column",
"model": "3D-MobileNetV2 0.5x",
"gestures": ["swipe", "flick", "tap"],
"advantage": "hands_on_wheel, no distraction",
"target": "infotainment control",
},
"use_case_2_dynamic_gesture": {
"sensor": "Depth+IR on tunnel console",
"model": "Modified DenseNet-Small",
"gestures": ["swipe", "push", "pull", "circle", "pinch"],
"advantage": "richer interaction vocabulary",
"target": "navigation, climate, phone",
},
"fusion_strategy": "late_fusion", # 论文证明最优
"lighting_robustness": "Depth+IR, not RGB",
}

6.2 传感器布局建议

位置 传感器 用途 优势
转向柱 IR 940nm 微手势+面部DMS 双用
隧道控制台 Depth+IR 动态手势 向上看角度好
A柱 IR 补充 备用

6.3 融合策略选择

策略 适用 IMS建议
Late Fusion 模态差异大 推荐(论文验证最优)
Mid Fusion 模态相似 不推荐
分数级加权 简单系统 可用于微手势
注意力融合 需要动态权重 未来方向

7. 局限性

局限 影响 缓解
56M参数 较大 需蒸馏
旋转手势易混 71% 需更细粒度时序
隧道台传感器 可能被遮挡 考虑集成到中控
40帧输入 窗口较大 可缩短到20帧
仅手势分类 无3D定位 需联合HandyNet

8. 结论

Briareo + DenseNet 的核心贡献:

  1. 车载真实环境数据集:首个在真实车内采集的多模态手势数据集
  2. Depth+IR最优:光照无关,比RGB高15%+
  3. Late Fusion > Mid Fusion:决策级融合更适合异构模态
  4. 隧道控制台传感器位置:向上看角度好,遮挡少

IMS启示: 车载手势交互必须用Depth+IR(非RGB),Late Fusion是首选策略。微手势(DriverMHG)用于基础控制,动态手势(Briareo)用于丰富交互,两者互补。


参考文献

  • Briareo Dataset: Informatics, 2020
  • DenseNet: Huang et al., CVPR 2017
  • NVGestures: NVIDIA, 2016
  • Pico Flexx: PMD Technologies, ToF camera
  • Leap Motion: Ultrahaptics, IR camera

Briareo 数据集 + DenseNet 多模态手势识别深度解读:车载环境下 Depth+IR 双模态方案
https://dapalm.com/2026/09/16/2026-09-16-briareo-densenet-multimodal-gesture-depth-ir-late-fusion-ims/
作者
Mars
发布于
2026年9月16日
许可协议