论文
1 Introduction
先前的研究都是将人体的整个步态作为网络输入进行特征提取,而本文最大的亮点在于发现人体步态的不同部分在形状以及行走时的移动模式上具有显著的区别,并且这些信息将为网络提供更多的细粒度信息,并且为此设计出了FConv模块(FPFE)和MCM模块,并且提出了基于当前为止的SOTA网络:


核心模块:
① FPFE(帧级特征提取器):利用Focal Convolution(焦点卷积)提供步态局部细节,获得细粒度的空间特征
② MCM(微动作捕捉模块):微动作模式是最具有判别性表示的特征,利用基于注意力及机制的MCM对局部微动作进行建模,进而全局理解整个步态序列
2 Related Work
在行人重识别(判断图像或者视频序列中是否存在特定的行人)任务中,特征图分割为条带并合成为列向量的Part-based方法应用广泛,它忽略了空间对齐。
但是不同于行人重识别领域中的part-independent(人体各个部位有可能具有相同属性,例如颜色和纹理),GaitPart应该设计为一种Part-dependent的方式,因为人体各个部分在外观和运动模式上有显著差异。

**主流方法的缺点:**3DCNN方法难以训练且效果没那么好,LSTM的方法保留了不必要的长期序列约束(没有认识到步态的周期性,造成了冗杂,丧失了步态识别的灵活性),GaitSet没有明确的对时间变化进行建模。(注意,LSTM是长距离时间建模,GaitPart是短距离时间建模,而GaitSet没有明确的时间建模)从这里也可以看出,GaitPart不能接受无序的步态序列作为输入。

3 Proposed Method
3.1 主干网络简介
FPFE:帧级特征提取器,特别设计的卷积网络,用于提取每一帧的空间特征
HP:水平池化,将FPFE得到的特征图水平分割为n个部分,提取人体局部特征,并且通过平均+最大池化进行下采样
MCM:微动作捕捉模块,对被水平分割的特征图的每个部分进行微动作捕捉**(对整行进行聚合,即同一个part的不同帧)**,多个并行的MCM组成了TFA

3.2 帧级特征提取器(Frame-level Part Feature Extractor)
作用:提取每帧图像的局部空间特征,加强对图像的细粒度特征的提取
组成:三个Block,每个Block包括两个FConv(焦点卷积)层 + 池化

FConv的介绍:
定义:焦点卷积层即特殊卷积层,它将特征图水平划分为p个部分并对每个部分进行卷积。特别的,当p=1时,FConv=Conv
作用:随着网络深入,神经元的感受野将比正常情况下更加狭窄,有利于神经元关注跟多细节信息(感受野:卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小,即特征图上的一个点对应输入图上的区域的大小)

3.3 水平池化(HP)
该部分与GaitSet基本一致,GaitSet之所以有“金字塔”的称呼,是因为水平条(尺度)的大小分为1,2,4,8,16。而在GaitPart中,水平条(尺度)的大小均为16,因此呈不是一个类似金字塔的形状,经过HP后将得到RP-Matrix:

3.4 时序特征聚合器(Temporal Feature Aggregator)
多个并行的MCM组成了TFA,每个MCM代表一个part的短距离时空特征。MCM包括:
① 微动作模板构建器MTB

作用:将PR-Matrix中的帧级部件特征映射为微动作特征。任意时刻的微动作模式应该完全由其自身及其相邻帧决定。
组成:

TempFunc(时序模板):将当前帧与相邻帧通过平均池化与最大池化进行聚合。注意,是所有帧级别(frame-level)的特征都进行,并且池化是一种绝对操作(没有可以共享的参数),这意味着它不需要被划分为16个部分。

Channel-wise Attention(通道级注意力机制):通过一个一维卷积核对特征向量进行重新加权(点乘)以获得更具有判别性的微动作表示,具体操作是在不同的通道施加一次一维卷积操作。注意,微动作需要分part进行,因此需要划分为16个部分,不共享参数。

而后将从TF和CA中获得的特征进行点乘,从而完成从Sp到Sm的转变:

从此处可以得知:相邻帧的数量取决于卷积核与池化的大小,即2r+1。例如当卷积核大小为5时(一维卷积),r=2,即前两帧、后两帧与当前帧作为一个窗口进行卷积(channel-wise attention)与池化(TempFunc)。
② 时序池化TP
基本原则:周期性的步态在经过一个完整周期后不会有判别信息增益
在实际应用中,采用max统计函数作为TP,原因如下:
① mean统计函数:由于真实步态视频长度t(t > T,T为一个完整步态周期)不确定,均值函数不是一个好选择(只有t为T整数倍的时候,下列两式才相等)


② max统计函数:由于步态的周期性,max在不同步态长度下等价(下列两式相等)

在GaitPart的实际应用中,MCM模块由两个窗口值不同(2r+1)的MTB模块以及TP模块组成:

代码
1 FPFE

'''self.FPFE = SetBlockWrapper(FPFE())'''
# 维度压缩函数 [n, s, c, h, w] => [n, s, ...]
class SetBlockWrapper(nn.Module):
def __init__(self, forward_block):
super(SetBlockWrapper, self).__init__()
self.forward_block = forward_block
def forward(self, x):
"""
In x: [n, s, c, h, w]
Out x: [n, s, ...]
"""
n, s, c, h, w = x.size()
x = self.forward_block(x.view(-1, c, h, w))
input_size = x.size()
output_size = [n, s] + [*input_size[1:]]
return x.view(*output_size)
# FPFE主模块
class FPFE(nn.Module):
def __init__(self):
super(FPFE, self).__init__()
self.feature = self.whole_layers() # 获取所有Layers
def forward(self, seqs):
out = self.feature(seqs) # 前向传播
return out
# 获取整个FPFE模块
def whole_layers(self):
# Block1 特别注意,由于p=1,FConv相当于Conv
Layers = self.make_layers('BC', 1, 32, 5, 1, 2, 0) # 5×5 Conv
Layers += self.make_layers('BC', 32, 32, 3, 1, 1, 0) # 3×3 Conv
Layers += self.make_layers('M', 0, 0, 0, 0, 0, 0) # MaxPooling
# Block2
Layers += self.make_layers(

论文提出了一种新的步态识别方法GaitPart,通过FocalConvolution (FPFE)提取局部细节,关注步态不同部分的显著差异;微动作捕捉模块(MCM)利用注意力机制捕捉微动作特征,提升全局理解。对比了主流方法的不足,如3DCNN和LSTM。
&spm=1001.2101.3001.5002&articleId=122884741&d=1&t=3&u=e650e6a7bee54e5a86ddb95ea8e745b6)
1536

被折叠的 条评论
为什么被折叠?



