【步态识别】GQAN步态质量感知网络 算法学习《Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based》

1. 论文&代码源

《Gait Quality Aware Network: Toward the Interpretability of Silhouette-Based Gait Recognition》
论文地址:https://ieeexplore.ieee.org/document/9737002
代码下载地址: 作者未提供

2. 论文亮点

1) 基于轮廓的步态识别的可解释性
提出步态质量感知网络,通过两个Block明确评估每个轮廓和每个部分的质量。

2) FQBlock模块
FQBlock将每个轮廓帧的质量结合起来,进行基于集合的特征学习,这可以学习到更多鉴别性特征,并调高可解释性。

3) PQBlock+PQLoss模块
PQBlock通过学习每个部分的自适应全中,解决水平分割时忽视忽视重要部分的问题,同时提出PQLoss来辅助更新PQBlock中的权重系数。

3. 框架结构

illustration
仅便于说明独立权重,将特征图分为4个不同颜色的条。

3.1 FQBlock(Frame Quality Block)

核心是使用挤压和激励网络(Squeeze-and-Excitation Networks, SENet),使得每个步态轮廓的质量可以自主学习。
FQBlock

首先用GAP+GMP(全局平均池化和全局最大池化)压缩每个通道的信息;然后两个FC(全连接层)自适应地重新校准每个步态轮廓的特征,中间和最后分别有一个ReLU函数和一个Sigmoid函数进行非线性化处理。

G G G表示一个由 N N N个剪影图像构成的步态序列,经过Encoder后输出特征序列 F = { F 1 , F 2 , . . . , F N } F=\{F_1, F_2, ..., F_N\} F={ F1,F2,...,FN},在FQBlock中经过HSlice进行水平平均切割,切割成 S S S条,所以 F F F可以被进一步表示为 F i j F_{ij} Fij   ( i ∈ [ 1 , 2 , . . . , N ] ,   j ∈ [ 1 , 2 , . . . , S ] ) \space (i \in [1, 2, ..., N], \space j \in [1, 2, ..., S])  (i[1,2,...,N], j[1,2,...,S]),计算过程如下: X i j = G A P ( F i j ) + G M P ( F i j ) ( 1 ) Y i j = σ ( W j 2 δ ( W j 1 X i j ) ) ( 2 ) Z i j = X i j ⊗ Y i j ( 3 ) X_{ij} = \mathrm{GAP}(F_{ij})+ \mathrm{GMP}(F_{ij}) \qquad(1)\\Y_{ij} = \sigma(W_j ^2 \delta(W_j ^1 X_{ij})) \qquad(2)\\Z_{ij} = X_{ij} \otimes Y_{ij} \qquad(3) Xij=GAP(Fij)+GMP(Fij)(1)Yij=σ(Wj2δ(Wj1Xij))(2)Zij=XijYij(3)其中,GAP和GMP是在空间维度上的挤压操作(池化); W j 1 W_j^1 Wj1 W j 2 W_j^2 Wj2表示两个FC层的权重系数; δ \delta δ表示ReLU函数; σ \sigma σ表示Sigmoid函数; ⊗ \otimes 表示元素的乘法。

最后,得到第 j j j条的集合级表示: P j = S e t P o o l ( Z 1 j , Z 2 j , . . . , Z N j ) ( 4 ) P_j = \mathrm {SetPool}(Z_{1j}, Z_{2j}, ..., Z_{Nj})\qquad(4) Pj=SetPool(Z1j,Z2j,...,ZNj)(4)

扫描二维码关注公众号,回复: 14740662 查看本文章

因为人从头到脚的区别很大,所以每一个被水平切割的条所对应的权重系数是相互独立的(独立进行训练),这一点是对应于后面的PQBlock模块。

与经典的SENet构架相比,作者提出了以下3点差异:(博主认为后两条实质上是第一条衍生出来的结果)

  1. SENet用于单图像分割,而FQBlock用于评估无序帧的质量,并将输出视为帧的质量指标;
  2. FQBlock引入了GAP和GMP;
  3. FQBlock有一系列相互独立的权重系数。

3.2 PQBlock(Part Quality Block)

PQBlock
为了保持符号的一致性(这句没太看懂。。。),对 P j P_j Pj使用 1 × 1 1\times 1 1×1卷积,得到 P ^ j   ( j ∈ [ 1 , 2 , . . . , S ] ) \hat P_j \space (j \in [1, 2, ..., S]) P^j (j[1,2,...,S]),表示的是从步态序列 G G G中提取的集合级的第 j j j个部分的表征。
两个步态序列的距离计算式为: D e q ( G 1 , G 2 ) = 1 S ∑ j = 1 S D ( P ^ j G 1 , P ^ j G 2 ) ( 5 ) D_{eq}(G_1, G_2) = \frac 1S \sum _{j=1}^S D(\hat P_j^{G_1} ,\hat P_j^{G_2}) \qquad(5) Deq(G1,G2)=S1j=1SD(P^jG1,P^jG2)(5)

PQBlock由一个FC(全连接层)和一个Sigmoid函数组成。对于第 j j j个部分的权重系数,公式 ( 4 ) (4) (4)求得的 P j P_j Pj作为输入,计算式如下: q j = σ ( M j P j ) ( 6 ) q_j = \sigma (M_j P_j) \qquad(6) qj=σ(MjPj)(6)其中, M j M_j Mj表示FC层的权重; σ \sigma σ表示Sigmoid函数; G 1 G_1 G1 G 2 G_2 G2的距离计算式为: 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 ) ( 7 ) D_{ada}(G_1, G_2) = \frac 1{\sum _{j=1}^S q_j^{G_1}q_j^{G_2}} \sum_{j=1}^S q_j^{G_1}q_j^{G_2}D(\hat P_j^{G_1}, P_j^{G_2})\qquad(7) Dada(G1,G2)=j=1SqjG1qjG21j=1SqjG1qjG2D(P^jG1,PjG2)(7)
对集合级的条状部分进行操作,并预测一个分数来评估每个部分的相对重要性,如前文所言,FC层的权重对不同部分是独立的。为了如何训练得到一个“好用”的PQBlock,就需要引出下面的PQLoss。

3.3 PQLoss(Part Quality Loss)

只需要序列级别的标注,每个部分的相对重要性可以自主学习,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 3 ) [ m a n + D e q ( G 1 , G 3 ) − D a d a ( G 1 , G 3 ) ] + ( 8 ) 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_3)} [m_{an} +D_{eq}(G_1, G_3)-D_{ada}(G_1, G_3)]_+ \qquad(8) Lpq=Nap+1l(G1)=l(G2)[map+Dada(G1,G2)Deq(G1,G2)]++Nan+1l(G1)=l(G3)[man+Deq(G1,G3)Dada(G1,G3)]+(8)其中, l ( ⋅ ) l(\cdot) l()表示步态序列的身份标签; N a p + N_{ap+} Nap+ N a n + N_{an+} Nan+分别表示导致非零损失项的anchor-positive和anchor-negative的个数; m a p m_{ap} map m a n m_{an} man是避免纠正“已经正确”对的边际阈值。

3.4 训练与评估

作者将训练与评估对于GQAN-Backbone和GQAN分别进行讲解。

3.4.1 GQAN-Backbone

对于GQAN-Backbone的训练,损失函数使用三元组损失和交叉熵损失,其中三元组损失函数表示为: 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 ) − ( P ^ j G 1 , P ^ j G 3 ) ] + ( 9 ) L_{tp}^j = \frac 1{N_{tp^+}^j} \sum _{l(G_1)=l(G_2), l(G_1)\neq l(G_3)} [m+D(\hat P_j^{G_1}, \hat P_j^{G_2})- (\hat P_j^{G_1}, \hat P_j^{G_3})]_+ \qquad(9) Ltpj=Ntp+j1l(G1)=l(G2),l(G1)=l(G3)[m+D(P^jG1,P^jG2)(P^jG1,P^jG3)]+(9)交叉熵损失函数的计算公式同GLN算法,这个算法是作者两年前提出的一个算法,如有需要可以参考我的另一篇博客【步态识别】GLN 算法学习《Gait Lateral Network: Learning Discriminative and Compact Representations for Gait R》
最终的损失函数为: L 1 = L t p + α L c e ( 10 ) L_1 = L_{tp}+\alpha L_{ce} \qquad(10) L1=Ltp+αLce(10)其中, α \alpha α是损失权重,用来平衡两种损失函数的权重占比。

3.4.2 GQAN

GQAN部分的损失函数较前者多了一个PQLoss,计算式为: L 2 = L t p + α L c e + β L p q ( 11 ) L_2 = L_{tp} + \alpha L_{ce} + \beta L_{pq} \qquad(11) L2=Ltp+αLce+βLpq(11)同理, β \beta β是PQLoss的权重系数。

4. 实验结果

table1
table2
table3
result
table4
result2

table5
table6
result3

5. 总结

本文作者提出了一个名为GQAN的模型,旨在提高基于剪影的步态识别的可解释性,它试图通过FQBlock和PQBlock两个模块来评估每个剪影和每个部分的识别质量。具体来说,FQBlock以挤压和激发的方式工作(Squeeze-and-Excitation),重新校准每个剪影的特征,并将所有通道的分数作为帧质量指标加入。PQBlock为每个部分预测一个分数,以计算probe和gallery之间的加权距离。提出了一个PQLoss使GQAN只使用序列级的身份索引值来进行训练。
最终,GQAN在CASIA-B和OU-MVLP的所有行走条件下取得了非常有竞争力的识别性能。

参考博客:

(TNNLS-2022)步态质量感知网络:面向轮廓步态识别的可解释性

猜你喜欢

转载自blog.csdn.net/weixin_45074807/article/details/128259329