Set Residual Network for Silhouette-Based Gait Recognition
论文信息:
作者:Saihui Hou, Xu Liu, Chunshui Cao, and Yongzhen Huang
中国科学院自动化研究所,银河水滴,北京师范大学
TBIOM 2021
Intro
对于步态识别来说,会受到相机视角、服装等的影响,因此对于步态识别来说关键的挑战是学习与上述因素无关的步态特征。
现有的步态识别方法主要以步态序列的轮廓作为输入,通常可以被分为三类:
①将步态序列的轮廓聚合成步态能量图像(简单但忽略了时序信息);
②将步态信息当做视频,就可以同时提取时间和空间信息(模型难训练);
③把步态序列的轮廓视为集合。第三种方式能够将步态序列的轮廓打乱重排,这样也能够拥有时序信息。
本文也是一种基于集合的步态序列轮廓方法,不同的是,这是一个集合残差网络(SRN),能够有效地协调轮廓和集合信息,以从中提取到更有区分度的特征。网络引入了SRBlock,使得轮廓特征和集合特征以两个并行的分支进行提取,然后在每个块内进行连接。轮廓分支只学习轮廓特征,而集合分支将所有的轮廓作为一个整体学习。
轮廓分支在最后一层ReLU之前与集合分支相加。SRBlock的结构类似于常规的残差块,能够使用残差连接来解决梯度消失或爆炸,在SRN中,SRBlock被视为构建基于集合的步态识别架构的基本块。
另外,不同人物的轮廓特征在很多情况下只有微小的差别,通常编码在较浅的卷积层中,但浅层的特征如今还不能在步态识别领域被充分利用。而水平切割以学习局部表征的方式已经被证明对于人物识别有显著的作用,由此提出了一个新的技术:Dual Feature Pyramid。它能够利用浅层的轮廓和集合级别的特征学习到更好的局部表征,这样就不需要上采样和横向连接,只需要一些额外的存储成本。
Related Work
步态识别部分和intro中内容大致相同。
残差学习
残差学习通常被用于构建深度网络的视觉任务。但步态识别的网络相对较浅,通常不涉及到普通的残差块。本文中的SRBlock与残差块的不同如下:①使用残差连接不是为了解决梯度消失或梯度爆炸的问题,而是为了协调轮廓和集合的特征信息;②普通残差连接可选,但本文中的两个分支都是必要的;③在最后使用LeakyReLU取代普通的ReLU。
本文模型
集合残差学习
网络结构大概就是这个样子,左边是普通的残差结构,右边是文章提出的集合残差块。SRBlock由两个平行分支组成,轮廓分支学习单独的每个轮廓的特征,而集合分支将所有轮廓看做是一个整体。SF是Set Function,用于将轮廓特征聚合到集合特征中。
![](https://i-blog.csdnimg.cn/blog_migrate/41ee7e2b9da5a97ec188068080f26f79.png#pic_center)
公式是这样的(感觉公式(3)和(4)前面如果Y上加个撇会更好理解一点儿,因为确实不是一个东西hh):
Θ
s
i
l
\Theta_{sil}
Θsil 和
Θ
s
e
t
\Theta_{set}
Θset 是代表两个分支里的层,
σ
\sigma
σ 是最后的Leaky ReLU,第一个SRBlock包含了一个额外的Set Function处理,即上图中的虚线部分。
最大池化层(可以在下面的整体网络结构中找到)为特征提供了基本的平移不变性,并且减小了特征的空间大小,因为基于集合的步态识别训练会消耗大量的GPU内存。
另外,Set Function也是通过最大池化来实现的,用于聚合轮廓的特征,其顺序应该与集合中的轮廓特征顺序相同。与模型主干中的最大池化不同,模型主干中的最大池化沿空间维度(即宽和高)操作,而这里的最大池化沿集合维度进行操作。
整个网络的模型长这样:
双特征金字塔(Dual Feature Pyramid)
-
层特征金字塔Layer Feature Pyramid:来自浅层的特征编码局部空间结构信息,而来自深层的特征编码全局上下文感知特征。通常需要上采样(引入噪声)或横向连接(可见Gait Lateral Network【这篇文章的实验中也有提到,GLN的训练时间比GaitSet略长】,需要更多参数)来组合多尺度特征。但浅层特征的步态识别很重要。
-
水平特征金字塔Horizontal Feature Pyramid:水平切割以获得局部表示(可见GaitSet),通常在模型的最后一层使用。
-
双特征金字塔:利用浅层特征获得更强大的局部表示。不需要上采样或横向连接,只需要一些内存成本。公式如下,这里公式(5)中的池化均是全局池化,形成的结果是一维向量。
像图里所做的,把不同块的轮廓特征和集合特征分别拿出来,进行横向分割,然后使用全局的最大/平均池化,再将这些一维向量进行级联,最后再通过一个1x1的卷积或者全连接层,以减少不同层的之间的语义间隙。这里因为只多了一维的向量,所以多消耗的GPU内存只是一个边际GPU成本。
损失函数部分(与GLN模型的横向连接损失相同):
实验
和baseline对比了准确率,作者这里还做了加入CBlock的实验,即将步态识别表征维数降低的块(可见GLN的文章),发现无论是否加入CBlock,SRN的效果都是最好的:
消融实验
-
对比了双特征金字塔的有效性,这里是通过使用和不使用浅层特征实现的;
-
对比了不同的激活函数,SF的池化函数:
-
对比了几个模型训练和测试消耗的时间(证明GPU边际成本有效):
-
将步态表征序列可视化,发现本文的方法序列聚合更好: