Gait Lateral Network: Learning Discriminative and Compact Representations for Gait Recognition
论文信息:
作者:Saihui Hou, Chunshui Cao, Xu Liu, and Yongzhen Huang
中国科学院自动化研究所,北京科技大学,银河水滴
ECCV 2020
摘要:
除了拥有具有区分度的表征之外,步态表征还应该更加简练,以便于存储gallery中的上百万的步态序列。这项工作中提出了一个新的网络:Gait Lateral Network(GLN),可以从步态识别的轮廓中学习更具有区分度的和更简练的特征。GLN利用深度卷积神经网络中的特征金字塔来增强步态表征。将不同阶段提取的轮廓级别和集合级别的的特征使用自顶向下的横向连接方式。除此以外,GLN还有一个Compact Block,能在不影响精度的前提下显著降低步态表征的维度。大量实验表明,256维的表征可以拥有最好的表现。
Intro
步态识别的目的是通过行走模式来识别不同的人,可以在远距离下进行,不需要受试者的配合。同时,它的一个关键挑战是从轮廓中学习不受服装、携带条件和摄像机视角等因素影响的表征。
为了解决这个问题,当今的方法大概可以被分为三类:第一类把一个完整的步态序列轮廓聚集到一图像中进行识别,例如GEI,尽管很简单,但时间和细粒度的空间信息会不可避免地在预处理过程中丢失;第二类是把步态序列看做视频,例如3D-CNN的提出和应用,但这种方法对于模型的训练来讲相对困难;第三种算法是将步态序列的轮廓作为一个无序集合处理,对轮廓的数量具有鲁棒性,并取得了显著的改进,但这种方法学到的表征维数高达15872,远高于人脸识别(180)和行人重识别(2048)。本文表征的维数为256,同时也提高了所有行走条件下的性能。
同时,文章注意到,在很多情况下不同被试的轮廓只有很细微的差异,而浅层特征通常编码局部特征,这样就使得浅层特征对步态识别非常重要。轮廓级别和集合级别的特征在不同的阶段被使用自顶向下的方式横向连接,每个阶段优化过的特征被横向分割以学习部分表示,并在每个阶段添加triplet loss作为中间的监督。
之前的研究表明HPM(可见复旦大学那篇文章)学习的高维特征被广泛用作部分表示学习,但存在大量冗余,本文的算法能够在不影响精度的前提下,将高维步态信息提取为更加紧凑的信息。其架构可以被集成到主干网络中并且以端到端的方式训练,把高维表示看成是低维表示的集合,利用Dropout选择一个小的子集,之后通过全连接层将其映射到一个紧凑的空间中。
本文贡献:
- 利用特征金字塔来增强步态表征来实现准确识别。通过自顶向下的方式将轮廓级别和集合级别的特征通过横向连接进行融合;
- 提出Compact Block可以显著降低步态表征的维度但不影响其精度;
- 在CASIA-B和OUMVLP两个数据集上做了实验,256维表征就可以在所有行走条件下实现最先进的性能。
Approach
如图所示,backbone中的层被划分为三个阶段,第一个阶段由两个卷积层组成,将轮廓转化为内部特征。第二阶段和第三阶段由两个分支组成,分别学习轮廓级别和集合级别的特征,本文中的SP层简单起见,只使用了最大池化方法。【文中这里参考了复旦大学19年的工作,区别:Stage1的后半部分是先进行了集合池化相加再进行普通池化,而复旦大学的工作是先进行了普通轮廓池化,再与集合池化的结果相加。】
横向连接(Lateral Connections)
普通池化沿着空间维度(高和宽)进行,而集合池化是沿着集合维度,三个阶段提取的特征记为 { C 0 , C 1 , C 2 } \{C_0,C_1,C_2\} {C0,C1,C2} ,他们相对于输入轮廓的步长为1、2、4。不同阶段的特征所捕获的是轮廓的不同的视觉细节,因此本文采用如图3所示的自上而下横向连接的方式。可以参考图2,具体来说,在最后两个阶段采用集合池化来处理轮廓及特征,并且在通道的维度上对集合和轮廓特征进行级联(图3中的黄色和蓝色箭头)。第一阶段只有轮廓级别的特征可用。之后在每个阶段,使用 1 × 1 1\times 1 1×1 的卷积层来重新排列特征并调整通道维数,再在空间维度进行上采样2倍,添加到上一阶段生成的特征中,这个过程将被迭代直到所有阶段生成的特征都被合并。之后通过一个平滑层,用来缓解由于上采样和不同阶段之间的语义差距。这里的输出为 { F 0 , F 1 , F 2 } \{F_0,F_1,F_2\} {F0,F1,F2} ,其空间维度与前面的 { C 0 , C 1 , C 2 } \{C_0,C_1,C_2\} {C0,C1,C2} 相同。
1 × 1 1\times 1 1×1 卷积层的输出与平滑层的通道数相同,固定在256维。平滑层是 3 × 3 3\times 3 3×3 的卷积层。在整个横向连接模块没有经过任何非线性层,并且在不同的阶段采用的是最近邻插值的上采样方法。
紧凑块(Compact Block)
这里的对复旦大学GaitSet文章中的HPM模块进行分析:我们仍然假设特征被分为了 S ∈ { 1 , 2 , 4 , 8 , 16 } S\in \{1,2,4,8,16\} S∈{1,2,4,8,16}个条带,其中, s ∈ S s\in S s∈S ,令 t ∈ { 1 , 2 , … , s } t\in \{1,2,…,s\} t∈{1,2,…,s} 。文中作者在深入研究了HPM的公式之后,观察到不同尺度的表征其实编码了一些重复信息,例如索引 ( s , t ) = ( 4 , 1 ) (s,t)=(4,1) (s,t)=(4,1) 和 ( s , t ) = { ( 8 , 1 ) , ( 8 , 2 ) } (s,t)=\{(8,1),(8,2)\} (s,t)={(8,1),(8,2)} 的部件表示对应于输入轮廓中相同的区域。由此可以推测,HPM得到的高维表示中其实存在大量冗余。
基于此,文章提出了一个紧凑块,目的是在不影响准确性的情况下,将高维表示的知识提取到紧凑的块中,如图3所示,这个紧凑块由BN-1、ReLU、Dropout、FC和BN-2组成,每一层的设计原则如下:
-
BN-Ⅰ:对HPM得到的级联特征进行归一化处理,有助于稳定训练过程;
-
ReLU作为激活函数增加紧凑块的非线性程度;
-
Dropout是紧凑块的核心模块。使用Dropout选择每个高维表示的小子集;
-
FC用于将Dropout的小子集映射到一个更有区分度的空间,FC的输出决定了最终表示的维数,本文实验将其设置为256;
-
BN-Ⅱ:是为了方便交叉熵损失的优化,训练集中的每一个subject都被当作一个单独的类。
Training Strategy
GLN模型的训练包括两个步骤:横向预训练和全局训练。如图3所示,损失函数包括两个部分:triplet loss和交叉熵损失。
为了获得更好的横向预训练特征,这里仍然使用三元组损失,可以结合我之前分析的博客【论文阅读】GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition_Dream_Poem的博客-CSDN博客里的triplet损失函数理解下面这个式子。
然后进行全局训练,全局训练使用triplet损失和交叉熵损失的和进行训练,对于交叉熵损失,使用的公式如下:
L c e = − 1 P × K ∑ i = 1 P ∑ j = 1 K ∑ n = 1 N q n i j log p n i j L_{ce}=-\frac{1}{P\times K}\sum_{i=1}^{P}\sum_{j=1}^{K}\sum_{n=1}^{N}q_n^{ij}\log p^{ij}_n Lce=−P×K1i=1∑Pj=1∑Kn=1∑Nqnijlogpnij
普通的交叉熵损失:
L = − 1 m ∑ i = 1 m ∑ j = 1 n p ( x i j ) log ( q ( x i j ) ) L=-\frac{1}{m}\sum^m_{i=1}\sum^n_{j=1}p(x_{ij})\log(q(x_{ij})) L=−m1i=1∑mj=1∑np(xij)log(q(xij))
其中,m为一个batch中的样本个数,n为需要分类的类别总数。
在本文中,由于每个样本都是一个序列,所以是 P × K P\times K P×K
这里 N N N 是训练集上的样本总数, p p p 是每个行人身份的概率, q q q 编码了真实数据集的身份信息,计算如下(这个形成的不是one-hot向量,但这样编码同样能使得当前身份位置上的概率最大):
q n i j = { 1 − N − 1 N ϵ i f n = y ϵ N o t h e r w i s e q_n^{ij}= \begin{cases} 1-\frac{N-1}{N}\epsilon &if \ n=y \\ \frac{\epsilon}{N} &otherwise \end{cases} qnij={1−NN−1ϵNϵif n=yotherwise
最终全局训练的公式即:
L = L t p + L c e L=L_{tp}+L_{ce} L=Ltp+Lce
这里有一个小点:compact block之后引入了另一个全连接层来计算每个类别的概率,但推理使不建议使用,仅使用compact block作为每个轮廓集的最终表示。
实验
与Baseline:和GEINet和GaitSet对比了准确率;维度低且准确率有上升。
消融实验
-
做了是否有Compact Block和是否有Smooth模块的对比实验
-
在训练策略上,文章有尝试直接开始从头训练,但效果较差,即横向连接模块确实是先需要预训练。
-
尝试了输出维度的不同,尝试了128、256和512,虽然128维在两种行走条件下都有较好的效果,但作者认为,穿着不同衣服在现实中是更常见的,因此选用256维。
-
在紧凑块的组成上,文章尝试了去掉非线性层、dropout的不同组合。
-
在训练时间上,尽管GLN的运行时间相比于GaiSet略有增加,但最终得到的维度比之前少了两个数量级,并且模型的性能得到了提高。