侯赛辉,付杨,李奥奇,刘旭,曹春水,黄永祯*
1.北京师范大学人工智能学院,北京 100875;2.银河水滴科技有限公司,北京 100088
步态识别的目标是通过被试者的行走方式对其身份进行识别。与指纹、人脸和虹膜等其他生物特征相比,步态具有远距离获取、非受控识别、不易伪装以及适用范围广等特点,在刑侦破案、防疫流调等领域具有广阔的应用前景。步态的描述方法有多种形式,例如人体测量学数据、空间时间数据、运动学数据和动力学数据等(贲晛烨 等,2012),当前最常用的是将人体关键点或剪影作为步态模型的输入,对应的相关研究方法大致可以分为基于模型的方法和基于外观的方法两类。
基于模型的方法主要通过显式建模人体结构进行身份识别。例如,Liao 等人(2017)从原始视频中估计关键点,然后结合人体先验知识进行识别;Li等人(2021)利用SMPL(skinned multi-person linear)估计外观和姿态特征进行识别,整个模型能够以端到端的方式进行训练;Teepe等人(2021)利用图卷积神经网络从关键点序列提取步态特征;Li 和Zhao(2022)将关于步态周期的先验知识引入到基于关键点的特征提取过程中。基于模型的方法理论上具有对携带物和着装的不变性,但是在低分辨率条件下通常较难适用。
基于外观的方法通常不显式建模人体结构,而是通过分析轮廓变化等信息进行步态识别。基于外观的方法大部分以步态剪影作为输入,根据对待输入剪影的方式可以进一步划分为基于剪影模板的方法、基于剪影序列的方法、基于剪影集合的方法3 个子类。其中,基于剪影模板的方法将一个周期内的多幅剪影按照一定规则生成模板图像,如Han 和Bhanu(2006)将一个步态周期内的多幅剪影进行平均生成步态能量图。基于剪影序列的方法将输入剪影视为类似视频的有序序列提取空间和时序特征,如Lin等人(2021)利用3D卷积网络在时间维度上提取局部和全局特征用于步态识别;Fan 等人(2020)通过限制卷积的感受野和编码局部运动信息学习更具有判别性的身体部位特征;Huang 等人(2022)将空间和时序的解耦操作融入到基于3D 卷积的框架中,并提取多尺度特征用于步态识别。基于剪影集合的方法将剪影序列视为无序集合提取步态特征,如Chao 等人(2019)首次建立基于剪影集合的步态识别模型,该模型具有对输入剪影顺序的不变性;Hou 等人(2021)提出了面向集合的残差学习模块,并融合多层特征增强步态模型的判别性。此外,在近期的工作中,王新年等人(2021)提出将无肩姿态能量图、步态参数等姿态特征与步态参数的2 维傅里叶变换进行有效融合。徐硕等人(2022)为了在获得高准确率的同时对外观变化具有更好的鲁棒性,提出了一种双分支网络融合外观特征和姿态特征,以结合两种不同类型特征的优点。张红颖和包雯静(2022)针对目前基于生成式的识别方法采用特定视角的步态模板转换,识别率随视角跨度增大而不断下降的问题,提出融合自注意力机制的生成对抗网络以进行跨视角步态识别。除了以剪影作为输入以外,还有一些基于外观的方法以其他类型的数据作为输入,如光流(Bashir 等,2009)和灰度图(Castro等,2020)。基于外观的方法相对更适用于低分辨率的条件,因此在学术研究和实际应用中吸引了大量关注。
在上述工作中,以基于剪影集合的GaitSet(Chao等,2019)和基于剪影序列的GaitPart(Fan 等,2020)为代表的步态识别方法带来了显著的性能提升,其中多部位特征学习机制起到了重要作用。这里以GaitSet 为例对这一机制进行简要说明。为叙述方便,本文用F表示骨干网络提取的步态特征,其维度表示为H×W×C,其中H表示高度,W表示宽度,C表示通道维度。如图1所示,GaitSet的多部位特征学习机制主要包含3 个步骤。首先,沿H维度将F均匀划分为N个部位;然后,沿空间维度(宽和高)利用最大池化和平均池化对每个部位的特征进行处理,得到N个1 维特征;最后,利用不共享权重的全连接层对每个部位的1 维特征做进一步映射。上述机制能够使每个部位保留自己的运动特性,从而能够显著提高步态识别的准确率。但值得注意的是,在测试阶段通常是将不同部位的特征直接串联在一起作为整个序列的特征表示,而在训练阶段,除了共享骨干网络的权重以外,不同部位的特征提取过程是相对独立的,彼此之间缺乏交互,这有碍于识别准确率的进一步提高。
图1 GaitSet中的多部位特征提取Fig.1 Multi-part feature learning in GaitSet
针对这一问题,本文设计了一个即插即用的模块,通过引入“分离—共享”机制增强步态识别的多部位特征学习过程。分离机制同GaitSet 中的多部位特征学习类似,通过不同区域的池化操作和不共享权重的全连接层允许每个部位学习自身独有的特征,这对于步态识别的过程十分关键。共享机制的引入是为了允许不同部位的特征进行交互,从而更好地相互协作。本文提供了共享机制的两种不同实现方式。共享机制由特征归一化和特征重映射两部分组成,这两个部分相辅相成。特征归一化不带有任何参数,目的是使不同部位的特征具有相似的统计特性(均值、方差等),从而便于进行权重共享;特征重映射可以通过全连接层或逐项乘积实现,在不同部位之间共享权重。本文设计的模块能够很方便地与GaitSet或GaitPart 模型进行结合。在CASIA-B(Institute of Automation,Chiese Academy of Sciences)和OUMVLP数据集上的实验表明,本文设计的模块能够在不显著增加计算代价的条件下带来稳定的性能提升。
综上所述,本文的主要贡献包括:1)分析了现有步态识别方法中广泛采用的多部位特征学习机制存在的不足,指出不同部位特征之间缺乏交互,有碍于识别准确率的进一步提高;2)将“分离—共享”机制引入到步态识别的多部位特征学习过程中,设计了一个即插即用的多部位特征学习模块;3)在不同数据集和基线方法上的实验结果表明,本文设计的多部位特征学习模块能够在不显著增加计算代价的条件下带来稳定的性能提升。
本文设计的识别流程图如图2 所示,主要包含骨干网络特征提取和多部位特征提取两部分。其中,多部位特征提取又可以进一步划分为分离机制和共享机制两部分。本文以GaitSet 为例对每个模块进行简要介绍,其中多部位特征提取中的共享机制是本文的核心工作。值得注意的是,本文设计的多部位特征提取模块具有较强的适用性,也能够以类似的方式应用于GaitPart模型。
图2 识别流程图Fig.2 The illustration of recognition pipeline
骨干网络的设计借鉴了GaitSet 和GaitPart 等模型的主要思想,主要包含剪影特征提取和集合池化两部分。剪影特征提取中对每幅剪影单独提取,不同剪影之间相互独立;集合池化是对所有剪影的特征进行融合,获取整个序列的特征表示。
这一部分基于GaitSet 的结构如图3 所示,为了绘图方便,省略了GaitSet 原论文中multilayer global pipeline 这一分支。其中,剪影特征提取部分由多层卷积和池化操作组成,将剪影序列输入到该网络模块即可得到对应序列中每个剪影的特征。其次是集合池化,该模块将剪影序列视为无序集合,使用统计函数整合所有剪影的特征,得到整个剪影集合的特征。将剪影序列视为一个集合的依据在于每个剪影在步态周期上具有独特的姿态信息,可以通过这种外观信息和人体运动的一般规律,对序列进行时序上的排序,因此可以将剪影序列用一个无序的集合表示。同时考虑到在现实环境中,序列中剪影的数量是任意的,所以对于该统计函数的选择,不仅需要满足集合的无序性,同时还需满足该集合可以有任意数目的元素。对应满足条件的常见的统计函数有最大函数、最小函数和中值函数等。在本文的实验中采用最大统计函数,即最大池化。
图3 骨干网络结构图Fig.3 The illustration of backbone structure
1.2.1 分离机制
分离机制的设计借鉴了GaitSet 中的多部位特征学习模块。首先使用多个尺度将骨干网络输出特征图水平划分为多个部分;其次将得到的多尺度下的多个特征图进行平均和最大池化操作;最后经过不共享权重的全连接层,获得具有判别性的多部位特征。这里对于骨干网络输出的特征用F进行表示,使用S个尺度进行划分,一共可以得到多尺度下N个部位的特征,其中。然后,在不同尺度下的空间维度进行池化操作,对于第i个部位特征fi,经过池化操作的特征f#i可以表示为
式中,GAP表示全局平均池化(global average pooling),GMP表示全局最大池化(global max pooling)。最后使用具有独立权重的全连接层对每个部位进行特征映射,将得到的每个部位的特征用d表示,其维度用c表示。
值得一提的是,使用不共享权重的全连接层的出发点在于不同尺度下的部位拥有不同的感受野,而在同一感受野下的不同部位对应着不同的空间位置信息。上述过程能够有效保留水平方向上每个身体部位各自的运动特性,不同部位之间相互独立,称为分离机制。
1.2.2 共享机制
本文通过引入共享机制,增加每个部位在特征提取过程中的交互性和协同性,从而获取更具有判别性的步态特征。本文设计的共享机制由特征归一化和特征重映射两部分组成。
首先,特征归一化是不带任何参数的操作,它的目标是使不同部位的特征具有相似的统计特性,有利于后续进行的特征重映射操作。本文将上步分离机制得到的每个部位特征di(i= 1,2,…)分别通过特征归一化得到对应的部位特征,这一过程可以表示为
式中,E[]表示对每个di向量各个元素的均值计算,Var[]表示方差计算,ε为一个常量,避免分母为0,本文所有实验中ε设置为10-5。
其次,特征重映射是带有参数的,在不同部位之间共享权重,完成不同部位之间信息的交互和协同。本文采用两种不同的方式实现特征重映射,分别是共享权重的全连接层(fully-connected layer)和共享权重的逐项乘积(element-wise multiplication)。
1)共享权重的全连接层。用w表示不同部位共享的全连接层的权重(忽略bias 向量),对特征归一化后的每个部位特征d#i使用w进行矩阵乘法,输出向量用oi表示,将不同部位特征串联起来,得到模型的输出向量Efully。该过程可表示为
式中,×表示矩阵乘法。
式中,Φ表示串联操作,c表示每个部位特征的维度,N表示身体部位的数目。
2)共享权重的逐项乘积。用v表示一个具有与每个部位特征相同维度的向量。对特征归一化后的每个部位特征,使用同一个v进行逐项乘积,输出向量用ei进行表示,将不同部位的输出串联起来组成模型输出特征向量Eelement。该过程可表示为
式中,⊙表示逐项乘积,Φ,c,N的含义如前所述。值得一提的是,基于逐项乘积的共享机制实现方式类似于Layer Normalization层中的操作。
本文提出的多部位特征学习机制能够很方便地与GaitSet 或GaitPart 基线模型结合,为保证公平的性能对比,训练和测试阶段的参数跟对应基线模型保持一致。
以GaitSet 为例,在训练阶段,对训练集所有被试者进行均匀采样。每个批次包含的序列样本通常用P×K进行表示,其中,P代表被试者数目,K表示每个被试者选取的剪影序列数目。损失函数采用Hermans 等人(2017)提出的Batch All 三元组损失函数。损失函数首先对每个身体部位分别进行计算,然后在所有身体部位之间进行平均。
在测试阶段,首先将测试集中所有被试者的序列分为probe 和gallery 两部分,然后计算每个probe序列与gallery 序列的距离,将距离最近的gallery 序列的身份标签赋给对应的probe序列。其中,两个序列之间的距离计算方式是首先衡量每个对应身体部位特征之间的欧氏距离,然后在不同部位之间进行平均。当probe包含多个行走条件的序列时,通常将probe划分为多个子集分别进行测试。
2.1.1 数据集
CASIA-B(Yu 等,2006)是由中国科学院自动化研究所提供的步态数据集,广泛应用于步态模型评估。该数据集包含124 个受试者在3 种行走条件和11 个角度下的视频序列。其中,124 个受试者使用标签001-124 表示。在每个受试者下包含3 种行走条件,包括6 个正常行走(normal walking,NM)、2 个背包行走(walking with bags,BG)和2 个换衣状态(walking in different clothes,CL),分别使用nm-01—nm-06、bg-01 和bg-02、cl-01 和cl-02 表示。在每个行走条件下包含11 种角度(从0°~180°,间隔为18°),使用000-180 表示。该数据集不仅提供了原始的视频数据,同时提供了剪影序列数据。本文实验中采用的是剪影数据。实验时,将数据集划分为74 个受试者为训练集,剩余50 个为测试集。在测试阶段,nm-01—nm-04 作为gallery,其余分为3 组probe,分别是nm-05 和nm-06、bg-01 和bg-02、cl-01和cl-02。
OUMVLP(Takemura 等,2018)是日本大阪大学研究者创建的步态数据集,是目前公开的包含被试者数目最多的步态数据集,包含了10 307 个受试者在多个角度的数据,但仅有正常行走条件下的步态序列。对每个受试者记录了14 个角度,即0°~90°、180°~270°,间隔为15°。每个角度下包含两段序列(编号为00,01)。在本文实验中,将5 153 个被试者的数据作为训练集,将5 154个被试者的数据作为测试集。在测试阶段,将每个被试者编号为01 的序列作为gallery,编号为00的序列作为probe。
2.1.2 实现细节
所有模型使用Pytorch 实现,在TITAN-V GPU 上进行训练。
基于数据集中提供的原始剪影序列,通过使用Takemura 等人(2018)描述的方法进行对齐操作后作为模型的输入。对于CASIA-B 数据集,输入分辨率为128 × 88 像素,每批样本包含128 个序列,其中P为8,K为16。对于OUMVLP 数据集,输入分辨率为64 × 44 像素,每批样本包含512 个序列,其中P为32,K为16。在训练阶段,对于每个序列,随机抽取30 帧剪影作为模型输入。在测试阶段,将每个序列中的所有剪影作为模型输入提取步态特征进行比对。
在基于GaitSet 的实现中,在分离阶段,使用了5 个尺度(1,2,4,8,16),加上Multilayer Global Pipeline 全局分支,共得到62 个部位,在池化操作后,特征经过输出通道数为256 的不共享参数的全连接,得到该部位的输出。在共享阶段,将分离机制得到的特征进行归一化处理,再对每个部分使用输入输出均为256 的全连接层进行处理或使用维度为256 的向量进行逐项乘积。对于模型训练,在CASIA-B 数据集上采用随机梯度下降法(stochastic gradient descent,SGD)优化器,初始学习率设置为0.1,每迭代10 000 次将学习率降低10 倍,在该数据集上共迭代40 000 次。在OU-MVLP 上数据集上采用Adam 优化器,学习率设置为10-4,并在第150 000 次迭代时,将学习率降为10-5,在该数据集上一共迭代250 000 次。
基于GaitPart 的实现方式与GaitSet 基本类似,但模型结构和对应的优化过程略有不同。在模型训练过程中,在CASIA-B 数据集上采用Adam 优化器,学习率设置为10-4,并在第100 000 次迭代时,将学习率降为10-5,在该数据集上共迭代120 000 次。在OU-MVLP 上数据集上采用Adam 优化器,学习率设置为10-4,并在150 000 次迭代时,将学习率降为10-5,在该数据集上一共迭代250 000次。
表1—表3 为在CASIA-B 数据集上,分别使用GaitSet 和GaitPart 作为基线方法以及两种共享机制的实现方式,在各个角度下正常行走(NM)、背包行走(BG)和换衣状态(CL)的模型准确率。
表1 不同模型在CASIA-B数据集上的正常行走条件下的准确率Table 1 Accuracy of different models under normal walking conditions on the CASIA-B dataset/%
表2 不同模型在CASIA-B数据集上的背包行走条件下的准确率Table 2 Accuracy of different models under carrying bags walking conditions on the CASIA-B dataset/%
表3 不同模型在CASIA-B数据集上的换衣行走条件下的准确率Table 3 Accuracy of different models under changing clothes walking conditions on the CASIA-B dataset/%
在共享机制的实现中,本文用Norm 代表特征归一化操作,特征重映射分别使用了共享参数的全连接(fully)和逐项乘积(element)两种方式。从表中可以看出,在正常行走(NM)和背包行走(BG)条件下,“分离—共享”机制能够带来稳定的性能提升,说明共享机制的引入能够有效地协同不同部位的特征学习,从而获取更具有判别性的步态特征。在复杂的换装行走(CL)条件下,在以GaitSet作为基线方法时,“分离—共享”机制能够稳定地提升识别准确率;而在以Gait-Part作为基线方法时,分离共享机制会使识别准确率略微降低,这很有可能是由于过拟合导致的。但是从3个行走条件下平均识别准确率的角度分析,“分离—共享”机制能够为GaitSet和GaitPart带来稳定的性能提升。此外,与最近基于剪影序列的方法(Huang等,2022)相比,本文方法在换装条件下的性能略低,但是在正常行走和背包的情况下能够实现较高的准确率。本文工作和Huang 等人(2022)工作从不同的维度对步态识别任务进行了进一步探索。
表4 为GaitSet 和GaitPart 两个基线方法及其改进模型在OUMVLP 数据集上的表现。同样,使用“分离—共享”机制的模型在多个视角下准确率都有稳定的提升。
表4 不同模型在OUMVLP数据集上的准确率Table 4 Accuracy of different models on OUMVLP dataset/%
本文提出了共享机制的两种实现方式,由于在不同部位之间共享权重,引入的参数量以及增加的运算量都相对有限。从表1—表4 的实验结果可以看出,在大部分情况下,逐项乘积(element)的方法能够取得比全连接(fully)方法更高的识别准确率。通过比较两种实现方式发现,逐项乘积的方法引入的参数数量仅与单个身体部位特征的维度相等(忽略bias向量)。换言之,本文能够在不显著增加计算代价的前提下带来稳定的性能提升。
本文针对目前步态识别领域广泛采用的多身体部位特征学习机制中存在的问题,设计了一种“分离—共享”机制,用于学习更具有判别力的各个身体部位特征。本文方法首先通过分离机制,提取多身体部位独立的运动特性,接着通过共享机制,建立身体多部位特征之间的联系,使多部位特征之间更好地进行信息交互。本文使用GaitSet 和GaitPart 作为基线模型,分别尝试了两种共享机制的实现方式,并在CASIA-B和OUMVLP数据集上进行训练和测试。实验结果表明,与基线模型相比,本文提出的增强多部位特征学习的策略能够在不显著增加计算代价的条件下,稳定地提高步态模型在多个视角和行走状态下的识别准确率。
目前,步态识别研究中广泛使用的多部位特征学习模块是从行人重识别中借鉴而来,在步态相关研究工作中缺乏对这一模块的原理分析。本文的核心观点是不同身体部位的特征学习之间缺乏交互有碍于步态识别准确率的进一步提高。为了缓解这一问题,本文将“分离—共享”机制引入到多部位特征学习中,并提供了共享机制的两种简单有效的实现方式。针对不同部位之间缺乏交互这一问题的进一步解决方案,以及设计更为复杂的共享机制,都值得在未来工作中进一步探索。