《Gait Recognition via Effective Global-Local Feature Representation and Local Temporal Aggregation》
论文地址:https://ieeexplore.ieee.org/document/9710710
代码下载地址: 作者未提供
1. 建立全局和局部特征提取器(GLFE):
在特征提取过程中建立全局和局部特征提取器(Global and Local Feature Extractor, GLFE);
2. 集成多个全局和局部卷积层(GLConv):
GLFE中集成了多个全局和局部卷积层,全局卷积用于提取整个步态视觉外观的特征,局部卷积层用于提取步态细节(以principle方式提取特征);
3. 构建局部时间聚合模块(LTA):
为避免2D CNN空间池化降低分辨率导致信息丢失,为了更充分地利用空间信息,构建局部时间聚合模块(Local Temporal Aggregation, LTA),通过代替传统的空间池化层,聚合局部片段的时间信息,利用时间分辨率以获得更高的空间分辨率。
模型的结构如下图所示,目的是为了步态识别提取更全面的特征表示,大致分为3个关键部分。
首先使用卷积从原始输入序列中提取浅层特征,使用局部时间聚合操作(LTA)来聚合时间信息,以保留更多的空间信息;之后使用全局和局部特征提取器(GLFE),以提取全局和局部信息的组合特征;最后使用时间池化和GeM池化层来实现特征映射,并使用三元组损失和交叉熵损失来训练模型。
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} Xin∈RC1×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} XLTA∈RC2×T2×H1×W1
尽管现有方法能够提取出局部特征,提供比步态特征更加详细的信息,但局部特征并没有注意到局部区域之间的关系,因此,作者提出了GLFE模块来同时利用全局和局部信息。
GLFE模块由GLConv层实现,它包含全局和局部特征提取器。根据组合的形式又可以分为GLConvA和GLConvB两种类型。
假设 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} Xglobal∈Rc1×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={Xlocali∣i=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} Xlocalli∈Rc1×t×nh×w。
使用3D CNN分别提取全局和局部特征。
注意:提取局部步态的卷积网络权值共享
对全局和局部特征有两种结合方式:
{ 逐元素加法 (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+Ylocal∈Rc2×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=cat⎩⎪⎪⎪⎨⎪⎪⎪⎧f3×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
由于输入的步态序列长度可能不同,作者引入时间池化来聚合整个序列的时间信息,假设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} XGLFE∈RC3×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} YTP∈RC3×1×H2×W2。
为了提高特征表示能力,在时间池化后,步态特征图被分割成条状,并使用最大和平均两个统计函数来汇总每个条状的信息,空间特征映射可以表示为:
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} YMA∈RC3×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} YGeM∈RC3×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)
引入多个独立全连接来聚合 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
采用三元组损失和交叉熵损失:
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]+
训练阶段:
与Giatset、GaitPart模型的参数设置类似,此处不一一赘述。
考虑到内存的限制,作者将输入序列的长度设定为一个固定值。
测试阶段:
为了计算Rank-1准确率,测试数据集被分为gallery set和probe set两组,gallery set被视为要检索的标准视图,而probe set的特征向量则用于匹配gallery中的特征向量。gallery与probe之间的度量策略可以使用欧氏距离、余弦距离等,本文使用的是欧氏距离。
实验使用的是CASIA-B和OU-MVLP两个数据集,具体的参数设置见下表:
本文提出了一个新的步态识别框架,基于三维卷积产生具有判别力的特征表示。
首先,为了提取更全面的步态信息,作者提出了一个全局和局部特征提取器(GLFE)来提取稳定的步态特征。其次,为了利用更多的信息,作者引入了局部时间聚合模块(LTA)来取代传统的空间聚合模块。此外,作者还引入了广义均值池化层(GeM)来自适应地聚合空间信息,提高特征映射的性能。
在公共数据集上的实验结果验证了识别框架的有效性。
参考博客:
(ICCV-2021)通过有效的全局-局部特征表示和局部时间聚合进行步态识别(一)
(ICCV-2021)通过有效的全局-局部特征表示和局部时间聚合进行步态识别(二)
(ICCV-2021)通过有效的全局-局部特征表示和局部时间聚合进行步态识别(三)