跳转至

GaitSnippet: Gait Recognition Beyond Unordered Sets and Ordered Sequences

会议: ICLR2026
arXiv: 2508.07782
代码: 待确认
领域: 人体理解
关键词: gait recognition, snippet paradigm, temporal modeling, silhouette, 2D convolution

一句话总结

提出 Snippet 范式:将步态轮廓序列组织为若干"片段"(snippet),每个 snippet 由一个连续区间内随机抽取的帧构成,兼顾短程时序上下文与长程时序依赖,在 Gait3D 上以 2D 卷积骨干达到 77.5% Rank-1,超越所有 3D 卷积方法。

研究背景与动机

步态识别以轮廓(silhouette)序列为输入,当前主流建模范式有两种:

无序集合(Unordered Set):以 GaitSet 为代表,将所有帧视为无序集合用 2D 卷积独立提取特征,再通过 Set Pooling 聚合。优点是高效且对帧顺序扰动鲁棒,但每帧独立处理,丢失了相邻帧之间的短程时序上下文

有序序列(Ordered Sequence):以 GaitGL、DeepGaitV2-3D 为代表,用 3D/P3D 卷积联合建模时空特征。虽然能捕获局部时序,但训练时通常只采样约 30 帧连续段,难以建模长程时序依赖(真实场景序列可超过 200 帧)。

核心问题:能否找到一种新范式,同时获得短程时序感知和长程时序覆盖?

作者从人类认知中获得启发——识别一个人往往只需观察几个关键动作(甚至不需要完整步态周期),因此提出将步态视为个体化动作的组合,每个动作用一个 snippet 表示。

方法详解

整体思路

将轮廓序列切分为等长 segment,从每个 segment 中随机抽帧组成一个 snippet(代表一个局部动作),整个序列的步态特征由多个 snippet 的特征聚合而得。

3.1 Snippet Sampling

训练阶段

  • 将序列切分为 \(K\) 个等长 segment(长度 \(L=16\),约一个步态周期)
  • 随机选取 \(M=4\) 个 segment,每个 segment 内随机抽 \(N=8\) 帧组成一个 snippet
  • 总采样帧数 \(S = M \times N = 32\)
  • 第一个 segment 长度 \(L_1\) 随机取 \(\{1,\ldots,L\}\),增加采样多样性

推理阶段

  • 使用所有帧:每个 segment 内全部帧构成一个 snippet,\(M=K, N=L\)
  • 第一段长度固定为 \(L\),保证预测稳定性

3.2 Snippet Modeling

模型称为 GaitSnippet,核心解决三个子问题:

(1) Intra-Snippet Modeling(片段内建模)

目标:捕获 snippet 内部的局部时序上下文,增强帧级特征。设计 Snippet Block

  • Gathering:将 snippet 内帧视为无序集合,通过 Temporal Max Pooling(非参数化)聚合为 snippet 级表征
  • Smoothing:对聚合后的特征施加 \(1\times1\) 卷积,平滑噪声并缩小帧级/snippet 级特征的语义差距
  • Residual:通过残差连接将 snippet 级上下文信息与帧级特征融合

将 Snippet Block 嵌入标准 2D 残差块的两个空间卷积层之间,形成 Residual Snippet Block,作为骨干网络的基本构件。设计灵感来自 P3D——让帧级特征在逐层提取过程中持续感知局部时序上下文。

(2) Cross-Snippet Modeling(片段间建模)

  • 在骨干网络输出端,先对帧级特征做 Intra-Snippet Gathering 得到 snippet 级表征
  • 将所有 snippet 视为无序集合,再次通过 Temporal Max Pooling 聚合为序列级表征
  • 形成层级化无序集合结构:帧→snippet→序列

关键区别:虽然两层都用了 Set Pooling,但 snippet 内经过了 Snippet Block 的时序建模,因此整体不是帧级排列不变的——局部时序信息已融入帧级特征。

(3) Snippet-Level Supervision(片段级监督)

snippet 范式天然产生两级表征(序列级 + snippet 级),作者为 snippet 级特征引入额外监督分支:

  • 序列级损失:Triplet Loss \(\mathcal{L}_{tp}\) + Cross-Entropy Loss \(\mathcal{L}_{ce}\)(配合 BNNeck)
  • Snippet 级损失:\(\mathcal{L}_{tp}^{\star}\) + \(\mathcal{L}_{ce}^{\star}\),在 snippet 粒度构建正负对
  • 总损失:\(\mathcal{L}_{all} = \mathcal{L}_{tp} + \mathcal{L}_{ce} + \alpha(\mathcal{L}_{tp}^{\star} + \mathcal{L}_{ce}^{\star})\)\(\alpha=0.75\)
  • snippet 级分支仅用于训练,不增加推理开销

骨干网络

基于 DeepGaitV2-2D(ResNet 风格 2D 卷积骨干),将标准残差块替换为 Residual Snippet Block。使用 Horizontal Pyramid Mapping 提取多粒度局部表征。

实验关键数据

主实验(真实场景数据集)

方法 类型 骨干 Gait3D R1 Gait3D mAP GREW R1 GREW R5
GaitSet Set 2D 36.7 30.0 48.4 63.6
GaitBase Set 2D 64.6 55.3 60.1 75.5
DeepGaitV2-2D Set 2D 68.2 60.4 68.6 82.0
DeepGaitV2-3D Seq 3D 72.8 63.9 79.4 88.9
VPNet Seq 3D 75.4 80.0 89.4
SwinGait-3D Seq Swin3D 75.0 67.2 79.3 88.9
GaitSnippet Snippet 2D 77.5 69.4 81.7 90.9

核心发现:

  • GaitSnippet 用 2D 卷积骨干全面超越所有 3D 卷积方法
  • 相比同骨干的 DeepGaitV2-2D:Gait3D R1 提升 +9.3%,mAP 提升 +9.0%
  • 在 CCPG(换装场景)上 AVG 达 95.1%,CCGR-MINI R1 达 42.4%,均为最佳

消融实验(Gait3D)

Snippet Sampling 的效果

  • 仅将 DeepGaitV2-2D 的采样策略从 Set 换为 Snippet:R1 从 68.2% 升至 69.5%(+1.3%),说明 snippet 采样本身即有正则化效果
  • 最优超参:\(L=16, M=4, N=8\)

Snippet Block 各组件

  • 去掉 Gathering:R1 降至 73.3%(无法做 snippet 级监督)
  • 去掉 Smoothing:R1 降至 74.8%(噪声/语义差距增大)
  • 去掉 Residual:R1 降至 72.5%(丢失帧级细粒度信息,影响最大)

Snippet-Level Supervision

  • \(\alpha=0\)(无 snippet 级监督)仍有竞争力表现,说明 Snippet Block 本身有效
  • 加入 snippet 级监督(\(\alpha=0.75\))进一步提升性能

优点与局限

优点

  • 提出了介于集合和序列之间的第三种范式,概念清晰且有认知科学支撑
  • 仅用 2D 卷积骨干即超越所有 3D 方法,计算成本更低
  • Snippet Block 设计简洁(非参数化 pooling + 1×1 conv + 残差),易于集成到现有架构
  • 层级化监督(序列级 + snippet 级)充分利用了 snippet 范式的结构优势
  • 在受控(CCPG)和无约束(Gait3D/GREW)场景均表现最优

局限

  • Snippet 长度 \(L\) 固定为 16 帧,对步频差异较大的个体可能不够自适应
  • Cross-Snippet Modeling 仅用 Max Pooling 聚合,未探索更复杂的 snippet 间关系建模(如 Transformer)
  • 推理时需处理所有帧构成的全部 snippet,长序列下推理开销仍可能较高
  • 仅在轮廓模态上验证,未扩展到骨架/RGB 等其他模态

评分

  • 新颖性: ⭐⭐⭐⭐ 提出 snippet 新范式,概念贡献明确
  • 实验充分度: ⭐⭐⭐⭐⭐ 四个数据集 + 详尽消融
  • 价值: ⭐⭐⭐⭐ 2D 骨干超越 3D 方法,实用性强