【论文阅读】Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based Gait Recognition

Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based Gait Recognition

    • 摘要
    • Intro
    • 本文方法
      • 帧质量(Frame Quality)
      • 部分质量(Part Quality)
      • 部分质量损失
      • 训练和评估
        • GQAN-backbone
        • GQAN
    • 实验
      • 消融实验
      • 讨论
        • FQBlock与MCM
        • 与更多基线的比较
        • training tricks的影响
        • 泛化能力
        • 关于步态可解释性的讨论


论文信息:

Saihui Hou , Xu Liu, Chunshui Cao, and Yongzhen Huang

北京师范大学,银河水滴

TNNLS 2022


摘要

当今的步态识别模型都面临着缺乏可解释性的问题,即并不清楚步态序列中的哪个轮廓以及人体中的哪个部位对于识别来说相对重要。本文中提出了一种用于步态识别的质量感知网络GQAN,该网络通过两个块明确评估每个轮廓和每个部分的质量:FQBlock和PQBlock,FQBlock以SE的方式工作,给轮廓赋予权重;文章另外提出PQLoss,可以使得在现有数据集上以端到端的方式进行训练。


Intro

现有的步态识别大致可以分为基于模型和基于外观两类,基于模型的方法从视频中提取人体结构,有点是对服装和携带条件具有鲁棒性,然而在低分辨率的条件下,身体参数很难准确估计。基于外观的方法从视频中学习步态特征,而无需对人体结构进行明确建模,轮廓线简单有效,通常作为基于外观的方法的输入。

之前的文献中,基于轮廓的方法拥有最先进的步态识别性能,然而这些方法面临的问题是:缺乏可解释性。比如,目前不清楚步态序列中的哪个轮廓以及人体中的哪个部分对识别更重要。在实际应用中,两种情况经常出现:两个不同身份的步态序列具有很高的相似性;或者两个相同身份的步态序列相似度很低。由于模型缺乏可解释性,很难分析这些情况发生的真实原因。

在本文中,关注的是基于轮廓的步态识别的可解释性。在之前深度学习的背景下处理可解释性的工作大多是分析每个神经元的作用,寻找输入中最有区分度的区域。在本文中,作者试图找到每个轮廓和每个部分在基于轮廓的步态识别中的相对重要性。

本文主要的贡献如下:

  • 提出具有可解释性的GQAN,可以根据相对重要性对轮廓和部件进行排序;

  • 提出PQLoss能够使GQAN以端到端的方式训练,只需要序列级别的身份标注;

  • 在CASIA-B and OUMVLP更好的实验结果。


本文方法

【论文阅读】Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based Gait Recognition_第1张图片

FQBlock算法将每个轮廓的帧质量结合起来,FQBlock算法使用squeeze-and-excitation(图像分类中的SEBlock方法)方式,通道的分数被用作相应轮廓帧的质量的反馈,这样可以学习到更有区分度的特征来增强可解释性。

另外,当计算两个步态序列之间的距离时,所有部分表示都会被同等对待,这对于步态识别来说可能不是最优的,PQBlock通过学习每个部分的自适应权重来解决这个问题。同时提出了一个损失函数PQLoss只用序列级的身份标识去训练PQBlock。

帧质量(Frame Quality)

步态序列的轮廓是互相补充的,但由于遮挡、变形、分割错误等,轮廓的质量无法被保证。FQBlock的结构如图3所示。在GQAN中,FQBlock工作模式与squeeze-and-excitation相同,先使用全局平均池化和全局最大池化将每个通道中的信息进行压缩,再通过两个全连接层,后面分别用ReLU和sigmoid函数连接,FQBlock水平地将每个轮廓的特征平均分割到多个条带中,并为不同的条带赋予独立的权重。

【论文阅读】Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based Gait Recognition_第2张图片

公式表示如下:

X i j = G A P ( F i j ) + G M P ( F i j ) Y i j = σ ( W J 2 δ ( W j 1 X i j ) ) Z i j = X i j ⊗ Y i j X_{ij}=GAP(F_{ij})+GMP(F_{ij}) \\ Y_{ij}=\sigma(W^2_J\delta(W^1_jX_{ij})) \\ Z_{ij}=X_{ij}\otimes Y_{ij} Xij=GAP(Fij)+GMP(Fij)Yij=σ(WJ2δ(Wj1Xij))Zij=XijYij

其中, ⊗ \otimes 表示对应位置的元素相乘。之后,第j个集合级别的特征获取方式如下:

P j = S e t P o o l ( Z 1 j , Z 2 j , … , Z N j ) P_j=SetPool(Z_{1j},Z_{2j},…,Z_{Nj}) Pj=SetPool(Z1j,Z2j,,ZNj)

这里,FQBlock与SENet有三处不同:①SENet用于图像分类,而FQBlock用于处理无序集的帧质量,并且,FQBock的中间输出被看作是每个轮廓的帧质量;②FQBlock是通过GAP和GMP对每个通道的信息进行压缩;③注意力机制在动作识别领域被广泛应用,使用递归模型来找到连续帧中的代表区域,而FQBlock主要由两个完全连通的层组成,处理的是无序集。自注意网络利用自注意机制捕捉不同帧里位置和运动的相关性,而FQBlock处理的是每个轮廓的质量。同时,这里与自注意力机制无关,因为自注意机制涉及到的查询、键、值在本文中并未涉及。

部分质量(Part Quality)

普通的对于两个步态序列距离计算方法:

D e q ( G 1 , G 2 ) = 1 S ∑ j = 1 S D ( P ^ j G 1 , P ^ j G 2 ) D_{eq}(G_1,G_2)=\frac{1}{S}\sum_{j=1}^SD(\hat P^{G_1}_j,\hat P^{G_2}_j) Deq(G1,G2)=S1j=1SD(P^jG1,P^jG2)

这里 P ^ j G 1 \hat P^{G_1}_j P^jG1 表示上文中 P j P_j Pj 的输出再通过一个 1 × \times × 1 的卷积层。这样表明,在步态识别过程中,各个部分被平等对待。但假设一个人换了一件外套,那么他的头和腿的权重就要比上半身的权重高。于是本文提出PQBlock算法,为每个部分学习自适应权重。

PQ块的结构简单但有效,包括一个全连接层和一个Sigmoid函数。它在集合级别进行操作,通过预测一个评分去估计每个部分的相对相关性。:

q j = σ ( M j P j ) q_j=\sigma (M_jP_j) qj=σ(MjPj)

M j M_j Mj 是全连接层的权重。那么两个步态序列的计算方法就可以表示为:

D a d a ( G 1 , G 2 ) = 1 ∑ j = 1 S q j G 1 q j G 2 ∑ j = 1 S q j G 1 q j G 2 D ( P ^ j G 1 , P ^ j G 2 ) D_{ada}(G_1,G_2)= \frac{1}{\sum^S_{j=1}q^{G_1}_jq^{G_2}_j} \sum_{j=1}^Sq^{G_1}_jq^{G_2}_jD(\hat P^{G_1}_j,\hat P^{G_2}_j) Dada(G1,G2)=j=1SqjG1qjG21j=1SqjG1qjG2D(P^jG1,P^jG2)

部分质量损失

目前步态数据集仅提供序列级别的身份标注,手动标注个部位权重是不可能的,为了解决这个问题,文章提出PQLoss,使得PQBlock能够只用序列级的身份标注进行训练。PQLoss的核心思想是在特征空间中使得同一类别中的两个样本距离更近,不同样本之间的距离更远。损失函数可以写成:

L p q = 1 N a p + ∑ l ( G 1 ) = l ( G 2 ) [ m a p + D a d a ( G 1 , G 2 ) − D e q ( G 1 , G 2 ) ] + + 1 N a n + ∑ l ( G 1 ) ≠ l ( G 2 ) [ m a n + D e q ( G 1 , G 2 ) − D a d a ( G 1 , G 2 ) ] + L_{pq}=\frac{1}{N_{ap+}}\sum_{l(G_1)=l(G_2)} [m_{ap}+D_{ada}(G_1,G_2)-D_{eq}(G_1,G_2)]_+ \\ +\frac{1}{N_{an+}}\sum_{l(G_1)\neq l(G_2)} [m_{an}+D_{eq}(G_1,G_2)-D_{ada}(G_1,G_2)]_+ Lpq=Nap+1l(G1)=l(G2)[map+Dada(G1,G2)Deq(G1,G2)]++Nan+1l(G1)=l(G2)[man+Deq(G1,G2)Dada(G1,G2)]+

ap:anchor-positive,同一个身份的序列;

an:anchor-negtive,不同身份的序列。

l()表示步态序列的身份, m a p m_{ap} map m a n m_{an} man是margin,为了避免给已经正确的序列对纠错。

其中,第一项使得ap的自适应权重的距离小于等于平等权重的距离;第二项使得an的自适应权重的距离大于平等权重的距离。

训练和评估

GQAN-backbone

和GaitSet大致相同,具体修改可见实验部分。损失函数包括两个部分,三元组损失和交叉熵损失:

L t p j = 1 N t p + j ∑ l ( G 1 ) = l ( G 2 ) l ( G 1 ) ≠ l ( G 3 ) [ m + D ( P ^ j G 1 , P ^ j G 2 ) − D ( P ^ j G 1 , P ^ j G 3 ) ] L_{tp}^j=\frac{1}{N^j_{tp+}}\sum_{ l(G_1)=l(G_2) \atop l(G_1)\neq l(G_3)} [m+D(\hat P^{G_1}_j,\hat P^{G_2}_j) -D(\hat P^{G_1}_j,\hat P^{G_3}_j)] Ltpj=Ntp+j1l(G1)=l(G3)l(G1)=l(G2)[m+D(P^jG1,P^jG2)D(P^jG1,P^jG3)]

交叉熵损失【论文阅读】Gait Lateral Network: Learning Discriminative and Compact Representations for Gait Recognition_Dream_Poem的博客-CSDN博客中的交叉熵相同,即为 L c e L_{ce} Lce ,则backbone的损失为( α \alpha α 为平衡两项损失的权重):

L 1 = L t p + α L c e L_1=L_{tp}+\alpha L_{ce} L1=Ltp+αLce

GQAN

对于GQAN的训练包括三个部分,可以写为:

L 1 = L t p + α L c e + β L p q L_1=L_{tp}+\alpha L_{ce}+\beta L_{pq} L1=Ltp+αLce+βLpq

实验

这里GQAN-Backbone是在GaitSet的基础上进行修改的,

  • 使用S=16而不是 S = { 1 , 2 , 4 , 8 , 16 } S=\{1,2,4,8,16\} S={1,2,4,8,16} 进行横向分割;

  • 去除MGP的pipeline,使得能够评估集合中的单个轮廓质量,并加速训练减少GPU内存消耗;

  • 添加BNNeck,计算所有拼接特征的交叉熵损失;

  • 使用warmup策略在训练开始时调整学习速率;

  • 使用随机擦除数据增强(random erasing data augmentation)防止过拟合;

  • 在OUMVLP上做实验时添加两个卷积层以适应大规模数据集。

这里不能直接在GaitSet、GLN、SRN上进行实验,因为这三个网络都有一个全局分支用于聚合轮廓分支和集合分支。但文章将FQBlock与GaitPart的MCM模块做了对比实验。

在两个大数据集上的实验结果在GQAN-Backbone和GQAN上都取得了较好的效果。

消融实验

验证了不同的块对实验的影响:

【论文阅读】Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based Gait Recognition_第3张图片

验证了低分辨率的表现(说明网络对低分辨率有更好的鲁棒性)
【论文阅读】Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based Gait Recognition_第4张图片

可视化(很直观的东西,可以看到有衣服影响的时候,头和脚的权重更高;得分刚高的帧分割出的图像相对完整)
【论文阅读】Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based Gait Recognition_第5张图片

【论文阅读】Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based Gait Recognition_第6张图片

讨论

FQBlock与MCM

首先,两个模块的设计目的是不同的,MCM用于建模相邻帧的微运动特征,而FQBlock用于衡量每个帧的质量。其次,两个块的工作机制时不同的。假设D-S是轮廓数量、D-P是人体部分,D-C是特征通道的数量,MCM只在D-S上对相邻帧的相关性做处理,而FQBlock是在D-C维度上分别处理了每个帧。第三,注意力权重的值有不同的意义:MCM只是相邻帧上进行建模,结果会受到时序卷积核的大小、轮廓顺序和丢失帧的影响;而FQBlock只依赖与特征本身,并且对轮廓顺序具有鲁棒性,并且FQBlock在不同的序列上共享同一权重,使得注意力值在不同的帧上是可比较的。同时 作者也做了实验。

与更多基线的比较

training tricks的影响

文章在SRN加上了GQAN-Backbone的一些training tricks,发现结果有提高,但仍然没有GQAN效果好

泛化能力

在2021年最新的数据集HID上也做了实验

关于步态可解释性的讨论

可以对人体的关键部位进行建模,另外文章也在考虑融合轮廓特征和关键点信息的特征。

你可能感兴趣的:(深度学习,计算机视觉,机器学习)