【步态识别】GaitGL 算法学习《Gait Recognition via Effective Global-Local Feature Representation and Local Temp》

1. 论文&代码源

《Gait Recognition via Effective Global-Local Feature Representation and Local Temporal Aggregation》
论文地址:https://ieeexplore.ieee.org/document/9710710
代码下载地址: 作者未提供

2. 论文亮点

1. 建立全局和局部特征提取器(GLFE):

在特征提取过程中建立全局和局部特征提取器(Global and Local Feature Extractor, GLFE);

2. 集成多个全局和局部卷积层(GLConv):

GLFE中集成了多个全局和局部卷积层,全局卷积用于提取整个步态视觉外观的特征,局部卷积层用于提取步态细节(以principle方式提取特征);

3. 构建局部时间聚合模块(LTA):
为避免2D CNN空间池化降低分辨率导致信息丢失,为了更充分地利用空间信息,构建局部时间聚合模块(Local Temporal Aggregation, LTA),通过代替传统的空间池化层,聚合局部片段的时间信息,利用时间分辨率以获得更高的空间分辨率。

3. 模型结构

模型的结构如下图所示,目的是为了步态识别提取更全面的特征表示,大致分为3个关键部分。

首先使用卷积从原始输入序列中提取浅层特征,使用局部时间聚合操作(LTA)来聚合时间信息,以保留更多的空间信息;之后使用全局和局部特征提取器(GLFE),以提取全局和局部信息的组合特征;最后使用时间池化和GeM池化层来实现特征映射,并使用三元组损失和交叉熵损失来训练模型。
overview

3.1 局部时间聚合(Local Temporal Aggregation, LTA)

LTA可以整合局部片段的时间信息,同时保留更多的空间信息。

假设 X i n ∈ R C 1 × T 1 × H 1 × W 1 X_{in} \in \Bbb R^{C_1 \times T_1 \times H_1 \times W_1} XinRC1×T1×H1×W1是LTA的输入,其中, C 1 C_1 C1是通道数; T 1 T_1 T1是步态序列长度; ( H 1 , W 1 ) (H_1, W_1) (H1,W1)是每帧(步态)图像的大小,此模块的计算式为: X L T A = f a × a × a b × 1 × 1 ( X i n ) X_{LTA} = f_{a \times a \times a}^{b \times 1 \times 1}(X_{in}) XLTA=fa×a×ab×1×1(Xin)
f a × a × a b × 1 × 1 ( ⋅ ) f_{a \times a \times a}^{b \times 1 \times 1}( \cdot ) fa×a×ab×1×1()表示的是核大小为 a a a,时间步长为 b b b的3D CNN。

输出为 X L T A ∈ R C 2 × T 2 × H 1 × W 1 X_{LTA} \in \Bbb R^{C_2 \times T_2 \times H_1 \times W_1} XLTARC2×T2×H1×W1

3.2 全局和局部特征提取(Global and Local Feature Extractor, GLFE)

GLall

尽管现有方法能够提取出局部特征,提供比步态特征更加详细的信息,但局部特征并没有注意到局部区域之间的关系,因此,作者提出了GLFE模块来同时利用全局和局部信息
GLFE

GLFE模块由GLConv层实现,它包含全局和局部特征提取器。根据组合的形式又可以分为GLConvA和GLConvB两种类型。
GLConv
假设 X g l o b a l ∈ R c 1 × t × h × w X_{global} \in \Bbb R^{c_1 \times t \times h \times w} XglobalRc1×t×h×w是LTA的输入,其中, c 1 c_1 c1是通道数; t t t是特征序列长度; ( h , w ) (h, w) (h,w)是每帧(特征)图像的大小。

根据输入的下标 g l o b a l global global不难理解输入的是一张完整的特征图像,也就是全局图,现在需要将它分割为局部特征图,我们定义 X l o c a l = { X l o c a l i ∣ i = 1 , 2 , . . . , n } X_{local} = \{X_{local}^i | i=1,2, ..., n\} Xlocal={ Xlocalii=1,2,...,n} n n n是在图像高度上划分的区域数,划分得到 X l o c a l l i ∈ R c 1 × t × h n × w X_{locall}^i \in \Bbb R^{c_1 \times t \times \frac hn \times w} XlocalliRc1×t×nh×w

使用3D CNN分别提取全局和局部特征。
注意:提取局部步态的卷积网络权值共享

2type
对全局和局部特征有两种结合方式:
{ 逐元素加法 (GLConvA) 串联法 (GLConvB) \begin{cases} \text{逐元素加法 (GLConvA)}\\ \text{串联法 (GLConvB)}\\ \end{cases} { 逐元素加法 (GLConvA)串联法 (GLConvB)
相应的表达式如下:
Y G L C o n v A = Y g l o b a l + Y l o c a l ∈ R c 2 × t × h × w Y_{GLConvA} = Y_{global}+Y_{local} \in \Bbb R^{c_2 \times t \times h \times w} YGLConvA=Yglobal+YlocalRc2×t×h×w Y G L C o n v A = c a t { Y g l o b a l Y l o c a l } ∈ R c 2 × t × 2 h × w Y_{GLConvA} = cat \begin{Bmatrix} Y_{global}\\ Y_{local} \end{Bmatrix} \in \Bbb R^{c_2 \times t \times 2h \times w} YGLConvA=cat{ YglobalYlocal}Rc2×t×2h×w
其中, Y g l o b a l Y_{global} Yglobal Y l o c a l Y_{local} Ylocal的计算式分别为:
Y g l o b a l = f 3 × 3 × 3 ( X g l o b a l ) ∈ R c 2 × t × h × w Y_{global} = f_{3 \times 3 \times 3}(X_{global})\in \Bbb R^{c_2 \times t \times h \times w} Yglobal=f3×3×3(Xglobal)Rc2×t×h×w Y l o c a l = c a t { f 3 × 3 × 3 ′ ( Y l o c a l 1 ) f 3 × 3 × 3 ′ ( Y l o c a l 2 ) ⋮ f 3 × 3 × 3 ′ ( Y l o c a l n ) } ∈ R c 2 × t × h × w Y_{local} = cat \begin{Bmatrix} f'_{3 \times 3 \times 3}(Y_{local}^1)\\ f'_{3 \times 3 \times 3}(Y_{local}^2)\\ \vdots \\ f'_{3 \times 3 \times 3}(Y_{local}^n)\\ \end{Bmatrix} \in \Bbb R^{c_2 \times t \times h \times w} Ylocal=catf3×3×3(Ylocal1)f3×3×3(Ylocal2)f3×3×3(Ylocaln)Rc2×t×h×w
这里的 Y l o c a l i Y_{local}^i Ylocali和上文的 X l o c a l i X_{local}^i Xlocali应该是一回事,只不过作者忘记改过来了?

GLFE中前几个用GLConvA,最后一个用GLConvB

3.3 特征图(Feature Mapping)

FM

3.3.1 时间池化(Temporal Pooling, TP)

由于输入的步态序列长度可能不同,作者引入时间池化来聚合整个序列的时间信息,假设GLFE模块的输出为 X G L F E ∈ R C 3 × T 2 × H 2 × W 2 X_{GLFE} \in \Bbb R^{C_3 \times T_2 \times H_2 \times W_2} XGLFERC3×T2×H2×W2,其中 C 3 C_3 C3通道数; T 2 T_2 T2是特征图的长度; ( H 2 , W 2 ) (H_2, W_2) (H2,W2)是特征图的大小。

因为在GLFE中经历了空间维度上的池化,所以特征图的大小由 ( h , w ) (h, w) (h,w)变为 ( H 2 , W 2 ) (H_2, W_2) (H2,W2)

时间池化 T P ( ⋅ ) TP(\cdot) TP()可以用下式表示:
Y T P = F M a x T 2 × 1 × 1 ( X G L F E ) Y_{TP} = F_{Max}^{T_2 \times 1 \times 1}(X_{GLFE}) YTP=FMaxT2×1×1(XGLFE)其中 F M a x T 2 × 1 × 1 ( ⋅ ) F_{Max}^{T_2 \times 1 \times 1}(\cdot) FMaxT2×1×1()为最大池化层;输出 Y T P ∈ R C 3 × 1 × H 2 × W 2 Y_{TP} \in \Bbb R^{C_3 \times 1 \times H_2 \times W_2} YTPRC3×1×H2×W2

3.3.2 广义平均池化(Generalized-Mean pooling, GeM)

为了提高特征表示能力,在时间池化后,步态特征图被分割成条状,并使用最大和平均两个统计函数来汇总每个条状的信息,空间特征映射可以表示为:
Y M A = α F M a x 1 × 1 × W 2 ( Y T P ) + β F A v g 1 × 1 × W 2 ( Y T P ) Y_{MA} = \alpha F_{Max}^{1 \times 1 \times W_2}(Y_{TP}) + \beta F_{Avg}^{1 \times 1 \times W_2}(Y_{TP}) YMA=αFMax1×1×W2(YTP)+βFAvg1×1×W2(YTP)输出 Y M A ∈ R C 3 × 1 × H 2 × 1 Y_{MA} \in \Bbb R^{C_3 \times 1 \times H_2 \times 1} YMARC3×1×H2×1,权重系数 α \alpha α β \beta β是预先设定好的,所以引出广义平均池化。

广义平均池化能够自适应地整合空间信息,其表达式为:
Y G e M = ( F A v g 1 × 1 × W 2 ( ( Y T P ) p ) ) 1 p Y_{GeM} = (F_{Avg}^{1 \times 1 \times W_2}((Y_{TP})^p))^{\frac 1p} YGeM=(FAvg1×1×W2((YTP)p))p1输出 Y G e M ∈ R C 3 × 1 × H 2 × 1 Y_{GeM} \in \Bbb R^{C_3 \times 1 \times H_2 \times 1} YGeMRC3×1×H2×1,参数 p p p是一个可以通过网络训练得到的学习参数,有一下两种情况:
{ if  p = 1 ,   Y G e M = Avg 1 × 1 × W 2 ( Y T P ) if  p → ∞ ,   Y G e M = Max 1 × 1 × W 2 ( Y T P ) \begin{cases} \text {if} \space p = 1 , \space Y_{GeM} = \text {Avg}^{1 \times 1 \times W_2}(Y_{TP})\\ \text {if} \space p \to \infty , \space Y_{GeM} = \text {Max}^{1 \times 1 \times W_2}(Y_{TP})\\ \end{cases} { if p=1, YGeM=Avg1×1×W2(YTP)if p, YGeM=Max1×1×W2(YTP)

3.3.3 全连接(Fully Connection, FC)

引入多个独立全连接来聚合 Y G e M Y_{GeM} YGeM的通道信息,表达式为: Y o u t = F s f c ( Y G e M ) ∈ R C 4 × 1 × H 2 × 1 Y_{out} = F_{sfc}(Y_{GeM}) \in \Bbb R^{C_4 \times 1 \times H_2 \times 1} Yout=Fsfc(YGeM)RC4×1×H2×1

3.4 损失函数(Loss Function)

采用三元组损失和交叉熵损失:
L c o m b i n e d = L t r i + L c e s L_{combined} = L_{tri} + L_{ces} Lcombined=Ltri+Lces L t r i = [ D ( F ( i ) , F ( k ) ) − D ( F ( i ) , F ( j ) ) + m ] + L_{tri} = [D(F(i),F(k))-D(F(i),F(j))+m]_+ Ltri=[D(F(i),F(k))D(F(i),F(j))+m]+

4. 模型的训练和测试

训练阶段:
与Giatset、GaitPart模型的参数设置类似,此处不一一赘述。
考虑到内存的限制,作者将输入序列的长度设定为一个固定值。

测试阶段:
为了计算Rank-1准确率,测试数据集被分为gallery set和probe set两组,gallery set被视为要检索的标准视图,而probe set的特征向量则用于匹配gallery中的特征向量。gallery与probe之间的度量策略可以使用欧氏距离、余弦距离等,本文使用的是欧氏距离。

5.实验结果

5.1 参数设置

实验使用的是CASIA-B和OU-MVLP两个数据集,具体的参数设置见下表:
structure

5.2 模型准确率

5.2.1 CASIA-B

CASIA-B
with GG

5.2.2 OU-MVLP

OU-MVLP

5.3 消融实验

A1
A2
A3

6.总结

本文提出了一个新的步态识别框架,基于三维卷积产生具有判别力的特征表示。
首先,为了提取更全面的步态信息,作者提出了一个全局和局部特征提取器(GLFE)来提取稳定的步态特征。其次,为了利用更多的信息,作者引入了局部时间聚合模块(LTA)来取代传统的空间聚合模块。此外,作者还引入了广义均值池化层(GeM)来自适应地聚合空间信息,提高特征映射的性能
在公共数据集上的实验结果验证了识别框架的有效性。

参考博客:

(ICCV-2021)通过有效的全局-局部特征表示和局部时间聚合进行步态识别(一)

(ICCV-2021)通过有效的全局-局部特征表示和局部时间聚合进行步态识别(二)

(ICCV-2021)通过有效的全局-局部特征表示和局部时间聚合进行步态识别(三)

猜你喜欢

转载自blog.csdn.net/weixin_45074807/article/details/128106490
今日推荐