0%

image-20240704214425279

摘要

图卷积网络(GCNs)和transformer已被广泛应用于基于骨架的人体动作识别,每种网络在捕捉空间关系和长程依赖关系方面都具有独特的优势。然而,对于大多数GCN方法而言,拓扑结构的构建仅依赖于人体关节点的空间信息,限制了其直接捕获更丰富的时空依赖关系的能力。此外,许多Transformer方法的自注意力模块缺乏拓扑结构信息,限制了模型的鲁棒性和泛化性。为了解决这些问题,本文提出了一种联合轨迹图(Joint Trajectory Graph, JTG),将时空信息集成到一个统一的图结构中。本文还提出了一种联合轨迹图former (JT-GraphFormer),直接捕获所有关节轨迹之间的时空关系,用于人体行为识别。为了更好地将拓扑信息融入时空关系中。引入一种时空Dijkstra注意力(STDA)机制来计算JTG中所有关节的关系得分。此外,在分类阶段引入Koopman算子,以增强模型的表示能力和分类性能。实验表明,JT-GraphFormer在人体行为识别任务中取得了出色的性能,在NTU RGB+D、NTU RGB+D 120和N-UCLA数据集上的性能优于当前最先进的方法。

引言

论文认为的现有方法不足

首先,传统的GCN方法不能直接利用时空拓扑结构来捕获更全面的时空依赖关系。聚合图中邻近节点的信息以更新节点表示对于捕获空间依赖关系是有效的,而简单地扩展空间图并不足以有效地捕获时序动态关联。

其次,在关节坐标序列中,信息的密度可能在空间和时间维度之间变化,在时间维度上存在较大的冗余。

最后,自注意力机制虽然可以自适应地计算序列元素的相关性分数,但可能无法捕获每个序列元素的隐藏拓扑信息,导致模型的鲁棒性和泛化性受到负面影响。

解决方案

提出一种具有联合轨迹图(JTG)的Joint Trajectory GraphFormer(JT-GraphFormer)模型。JTG在原始空间图结构之上引入了时间维度,使其能够更好地封装与关节轨迹相关的复杂判别细节。与ST-GCN不同,JTG专注于构建一段时空周期内节点之间的拓扑结构。具体而言,构建某一帧序列内所有关节的动态轨迹拓扑,如图1 (a)所示。为了更有效地捕获复杂的时空依赖关系,JTG将连接扩展到相邻帧中的节点。该策略减少了冗余的时间信息,并利用统一的图结构捕获时空维度内的内在依赖,促进了跨时空域特征的聚集。

image-20240508222019765

当使用JTG作为Transformer的输入时,单帧内的节点会同时计算相邻帧内所有节点的注意力,这对模型处理复杂的时空关联提出了较高的要求。作者受Graphormer中空间编码的启发,提出了一种时空Dijkstra注意力(STDA)机制,将JTG中关节之间的距离作为时空拓扑信息添加到注意力分数的计算中,这使每个节点能够学习更多地关注与动作更相关的邻居节点。STDA将全局注意力得分和最短路径权重相结合,通过加入关节轨迹中存在的先验信息,表现出更强的表达能力。节点与其邻居的相关权重如图1 (b)所示,Dijkstra矩阵的热图如图1 (c)所示。

此外,作者将Koopman算子引入到分类阶段。

The Koopman operator is a linear operator that describes a nonlinear dynamical system by map ping it into an infinite-dimensional Hilbert space.

Koopman算子是一种线性算子,通过将非线性动力系统映射到无限维希尔伯特空间来描述非线性动力系统。

贡献

• Introduction of JTG as an input data representation, leveraging trajectory information to enrich feature aggregation capabilities for nodes and their interactions across frames.

• Proposal of STDA, augmenting feature aggregation among neighboring nodes via the integration of shortest path concepts between joints.

• Incorporation of the Koopman operator for classifica tion, facilitating an encompassing perspective and supe rior classification performance.

• Rigorous evaluation of our proposed model across three diverse datasets (NTU RGB+D, NTU RGB+D 120, and N-UCLA), revealing its superiority over existing state of-the-art (SOTA) methods and underscoring its potential as a promising solution for action recognition tasks.

方法

Joint Trajectory Graph

将动作序列分成几个组。每个组有N个框架,并用图结构描述关节轨迹,称为Joint Trajectory Graph,\(G_{JT} = (G_t,G_{t+1},\ldots,G_{t+N-1},E_T) = (V_{JT},E_{JT})\) ,其中\(G_t\)是1帧中节点的空间图,\(E_T\)是对应的边集合,表示N帧中节点的关节轨迹,\((V_{JT},E_{JT})\)分别表示JTG中的节点和边集合。 \[ A_{JT}=\begin{bmatrix}A&A+I&A&\cdots&A\\A+I&A&A+I&\ddots&\vdots\\A&A+I&\ddots&\ddots&A\\\vdots&\ddots&\ddots&A&A+I\\A&\cdots&A&A+I&A\end{bmatrix} \]

A为框架中所有关节的物理连通性,I为单位对角矩阵,表示相邻框架中相同关节的连通性。

JT-GraphFormer

Positional Encoding

\(X\in\mathbb{R}^{C\times T\times V}\) ========> \(X\in\mathbb{R}^{C\times T/N\times V*N}\)

在JTG中,关节的运动轨迹涉及特定的时间信息,因此需要为每个帧进行位置编码(PE),以正确地表达顺序关系。 \[ \begin{aligned}&PE(p,2i)=\sin(p/10000^{2i/C_{in}}),\\&PE(p,2i+1)=\cos(p/10000^{2i/C_{in}}),\end{aligned} \]

STDA Module

作用:将时空拓扑信息引入多头注意力机制,增加了邻居节点之间关联的权重,从而使节点更偏向于聚合局部邻居的特征。

作者说受到Graphormer空间编码的启发,但实际上还是不一样的。

Graphormer STDA Module
image-20240509220501474 image-20240509220523849

公式: \[ \begin{array}{l} W=\exp(-D)+b,\\a_{map}=Tanh(QK^T/\sqrt{d_K}\times\alpha),\\a_{score}=a_{map}\cdot W,\end{array} \]

image-20240509222102870

Koopman Operator

Koopman算子是一个将非线性动力系统映射到无限维希尔伯特空间的线性算子。这种映射允许在线性空间中描述系统的演化,比原始的非线性空间更容易分析

在深度学习中,利用Koopman算子提取非线性动力系统的演化特征以提高分类性能。本文建立了时间演化函数\(f(\cdot)\),用于JT-GraphFormer跨不同帧的输出特征\(H\),将第\(t\)帧的特征\(h_t\)与下一帧的特征\(h_{t+1}\)联系起来,即\(h_{t+1} = f(h_t)\)

将Koopman算子\(K_{op}\)定义为一个\(N_{cls} × C_{out} × C_{out}\)线性算子,其中\(N_{cls}\)表示动作类别的数量,\(C_{out}\)表示最后一个JT-GraphFormer块的输出通道数量。\(K_{op}\)应用线性方法来近似时间维度上各类动作特征之间的相互关系,满足等式: \[ h_{t+1}\approx K_{op}h_t \] 由于我们在不同的帧步建立了线性相关性,因此可以近似表示任意连续帧段的特征\(H_x^y\),即从第\(x\)帧到第\(y\)帧的特征段。因此特征\(H_1^{T-1}\)可以表示为: \[ H_1^{T-1}\approx[h_1,K_{op}h_1,K_{op}^2h_1,\cdots,K_{op}^{T-2}h_1]\\ H_{t+1}^T\approx K_{op}H_t^{T-1} \] 采用DMD算法,通过最小化\(\| H_2^T- K_{op}H_1^{T- 1}\| _2\)的Frobenius范数来更新\(K_{op}\)。由于\(K_{op}\)表示各个动作类别的特征演化,我们可以对\(K_{op}\)在时间维度上进行平均,从而得到每个类别的概率分布,最终完成分类。

实验

image-20240509223854689
image-20240509230840926

研究了JTG结构的静态和动态配置之间的性能差异,以及是否采用层间共享权重。此外,对JTG是否需要归一化进行了探讨。

image-20240509231053683
image-20240509231132890
image-20240509231219842

paper

看latex像是投eccv,目前代码未公布,但点出奇的高。

摘要

基于骨骼数据的动作识别是一种根据关节坐标及其在骨骼数据中的连接性对人类动作进行分类的技术,在各种场景中被广泛应用。虽然图卷积网络(GCNs)已被提出用于表示为图的骨骼数据,但它们受到关节连接性限制的有限感受野的影响。为了解决这一限制,最近的进展引入了基于Transformer的方法。然而,捕获所有帧中所有关节之间的相关性需要大量的内存资源。为了缓解这一问题,我们提出了一种称为Skeletal-Temporal Transformer(SkateFormer)的新方法,它根据不同类型的骨骼-时间关系(Skate-Type)对关节和帧进行划分,并在每个分区内执行骨骼-时间自注意力(Skate-MSA)。我们将用于动作识别的关键骨骼-时间关系分类为四种不同类型。这些类型结合了(i)基于物理上相邻和远离的关节的两种骨骼关系类型,以及(ii)基于相邻和远离帧的两种时间关系类型。通过这种分区特定的注意力策略,我们的SkateFormer可以以高效的计算方式选择性地关注对动作识别至关重要的关节和帧。在各种基准数据集上进行的广泛实验证明我们的SkateFormer优于最近的最先进方法。

Read more »

(面Cvte时被问到了F1,没说出来。。。)

F1 score是分类问题中常用的评价指标,定义为精确率(Precision)和召回率(Recall)的调和平均数。 \[ F1=\frac{1}{\frac{1}{Precision}+\frac{1}{Recall}}=\frac{2×Precision×Recall}{Precision+Recall} \]

补充一下精确率和召回率的公式:

TP( True Positive):真正例

FP( False Positive):假正例

FN(False Negative):假反例

TN(True Negative):真反例

精确率(Precision): \(Precision=\frac{TP}{TP+FP}\)

召回率(Recall): \(Recall=\frac{TP}{TP+FN}\)

精确率,也称为查准率,衡量的是预测结果为正例的样本中被正确分类的正例样本的比例

召回率,也称为查全率,衡量的是真实情况下的所有正样本中被正确分类的正样本的比例。

F1 score 综合考虑了精确率和召回率,其结果更偏向于 Precision 和 Recall 中较小的那个,即 Precision 和 Recall 中较小的那个对 F1 score 的结果取决定性作用。例如若 \(Precision=1,Recall \approx 0\),由F1 score的计算公式可以看出,此时其结果主要受 Recall 影响。

如果对 Precision 和 Recall 取算术平均值(\(\frac{Precision+Recall}{2}\)),对于 \(Precision=1,Recall \approx 0\),其结果约为 0.5,而 F1 score 调和平均的结果约为 0。这也是为什么很多应用场景中会选择使用 F1 score 调和平均值而不是算术平均值的原因,因为我们希望这个结果可以更好地反映模型的性能好坏,而不是直接平均模糊化了 Precision 和 Recall 各自对模型的影响。

补充另外两种评价方法:

加权调和平均:

上面的 F1 score 中, Precision 和 Recall 是同等重要的,而有的时候可能希望我们的模型更关注其中的某一个指标,这时可以使用加权调和平均: \[ F_{\beta}=(1+\beta^{2})\frac{1}{\frac{1}{Precision}+\beta^{2}×\frac{1}{Recall}}=(1+\beta^{2})\frac{Precision×Recall}{\beta^{2}×Precision+Recall} \]\(\beta > 1\) 时召回率有更大影响, \(\beta < 1\) 时精确率有更大影响, \(\beta = 1\) 时退化为 F1 score。

几何平均数: \[ G=\sqrt{Precision×Recall} \] ## 参考链接 1.CV_interviews_Q-A/计算机视觉/32_为什么用F1-score.md at master · GYee/CV_interviews_Q-A

img # 为什么要归一化

在机器学习领域,数据分布是很重要的概念。如果训练集和测试集的分布很不相同,那么在训练集上训练好的模型,在测试集上应该不奏效(比如用ImageNet训练的分类网络去在灰度医学图像上finetune再测试,效果应该不好)。对于神经网络来说,如果每一层的数据分布都不一样,后一层的网络则需要去学习适应前一层的数据分布,这相当于去做了domain的adaptation,无疑增加了训练难度,尤其是网络越来越深的情况。因此,只是对输入的数据进行归一化处理也是不够的,这样只能保证输入的数据分布一致,不能保证每层网络的输入数据分布一致,因此在神经网络的中间层也需要加入归一化操作。 # 归一化流程

  1. 计算出均值
  2. 计算出方差
  3. 归一化处理到均值为0,方差为1
  4. 变化重构,恢复出这一层网络所要学到的分布

\[ \begin{aligned} \mu_{\mathcal{B}} & \leftarrow \frac{1}{m} \sum_{i=1}^{m} x_{i} \\ \sigma_{\mathcal{B}}^{2} & \leftarrow \frac{1}{m} \sum_{i=1}^{m}\left(x_{i}-\mu_{\mathcal{B}}\right)^{2} \\ \widehat{x}_{i} & \leftarrow \frac{x_{i}-\mu_{\mathcal{B}}}{\sqrt{\sigma_{\mathcal{B}}^{2}+\epsilon}} \\ y_{i} & \leftarrow \gamma \widehat{x}_{i}+\beta \equiv \operatorname{BN}_{\gamma, \beta}\left(x_{i}\right) \end{aligned} \] 上式是BN的公式,前两行计算输入数据一个batch的均值与方差,之后均值、方差变换为0、1即标准正态分布,最后每个元素乘以 \(\gamma\) 再加上 \(\beta\) 得到输出, \(\gamma\)\(\beta\) 是可训练的参数。 # 区别

BN

  1. BN的计算就是把每个通道的NHW单独拿出来归一化处理

  2. 针对每个channel我们都有一组γ,β,所以可学习的参数为2*C

  3. 当batch size越小,BN的表现效果也越不好,因为计算过程中所得到的均值和方差不能代表全局 ## LN

  4. LN的计算就是把每个CHW单独拿出来归一化处理,不受batchsize 的影响

  5. 常用在RNN和Transformer,但如果输入的特征区别很大,那么就不建议使用它做归一化处理。主要是用于NLP,但CV中ViT和ConvNext也用了。 ## IN

  6. IN的计算就是把每个HW单独拿出来归一化处理,不受通道和batchsize 的影响

  7. 常用在风格化迁移,但如果特征图可以用到通道之间的相关性,那么就不建议使用它做归一化处理 ## GN

  8. GN的计算就是把先把通道C分成G组,然后把每个gHW单独拿出来归一化处理,最后把G组归一化之后的数据合并成CHW

  9. GN介于LN和IN之间,当然可以说LN和IN就是GN的特列,比如G的大小为1或者为C

参考资料

  1. CV_interviews_Q-A
  2. 深度学习中的五种归一化(BN、LN、IN、GN和SN)方法简介)

过拟合与欠拟合

## 过拟合

模型在训练集上的表现非常好,但是在测试集、验证集以及新数据上的表现很差,损失曲线呈现一种高方差状态。(高方差指的是训练集误差较低,而测试集误差比训练集大较多)

原因

从两个角度去分析:

  1. 模型的复杂度:模型过于复杂,把噪声数据的特征也学习到模型中,导致模型泛化性能下降

  2. 数据集规模大小:数据集规模相对模型复杂度来说太小,使得模型过度挖掘数据集中的特征,把一些不具有代表性的特征也学习到了模型中。例如训练集中有一个叶子图片,该叶子的边缘是锯齿状,模型学习了该图片后认为叶子都应该有锯齿状边缘,因此当新数据中的叶子边缘不是锯齿状时,都判断为不是叶子。 ### 过拟合的解决方法

  3. 获得更多的训练数据:使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减少噪声的影响。

    当然直接增加实验数据在很多场景下都是没那么容易的,因此可以通过数据扩充技术,例如对图像进行平移、旋转和缩放等等。

    除了根据原有数据进行扩充外,还有一种思路是使用非常火热的生成式对抗网络 GAN 来合成大量的新训练数据。

    还有一种方法是使用迁移学习技术,使用已经在更大规模的源域数据集上训练好的模型参数来初始化我们的模型,模型往往可以更快地收敛。但是也有一个问题是,源域数据集中的场景跟我们目标域数据集的场景差异过大时,可能效果会不太好,需要多做实验来判断。

  4. 降低模型复杂度:在深度学习中我们可以减少网络的层数,改用参数量更少的模型;在机器学习的决策树模型中可以降低树的高度、进行剪枝等。

  5. 正则化方法 常用的有 L1、L2 正则化,L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓惩罚是指对损失函数中的某些参数做一些限制

    添加BN层

    使用dropout技术(dropout在训练时会随机隐藏一些神经元,导致训练过程中不会每次都更新(预测时不会发生dropout),最终的结果是每个神经元的权重w都不会更新的太大,起到了类似L2正则化的作用来降低过拟合风险。)

  6. Early Stopping:Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。

    Early stopping方法的具体做法是:在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。这种做法很符合直观感受,因为accurary都不再提高了,在继续训练也是无益的,只会提高训练的时间。那么该做法的一个重点便是怎样才认为validation accurary不再提高了呢?并不是说validation accuracy一降下来便认为不再提高了,因为可能经过这个Epoch后,accuracy降低了,但是随后的Epoch又让accuracy又上去了,所以不能根据一两次的连续降低就判断不再提高。一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。

  7. 集成学习方法:集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险,例如Bagging方法。

    如DNN可以用Bagging的思路来正则化。首先我们要对原始的m个训练样本进行有放回随机采样,构建N组m个样本的数据集,然后分别用这N组数据集去训练我们的DNN。即采用我们的前向传播算法和反向传播算法得到N个DNN模型的W,b参数组合,最后对N个DNN模型的输出用加权平均法或者投票法决定最终输出。不过用集成学习Bagging的方法有一个问题,就是我们的DNN模型本来就比较复杂,参数很多。现在又变成了N个DNN模型,这样参数又增加了N倍,从而导致训练这样的网络要花更加多的时间和空间。因此一般N的个数不能太多,比如5-10个就可以了。

  8. 交叉检验,如S折交叉验证,通过交叉检验得到较优的模型参数,其实这个跟上面的Bagging方法比较类似,只不过S折交叉验证是随机将已给数据切分成S个互不相交的大小相同的自己,然后利用S-1个子集的数据训练模型,利用余下的子集测试模型;将这一过程对可能的S种选择重复进行;最后选出S次评测中平均测试误差最小的模型。 ## 欠拟合

欠拟合的表现

模型无论是在训练集还是在测试集上的表现都很差,损失曲线呈现一种高偏差状态。(高偏差指的是训练集和验证集的误差都较高,但相差很少)

img

欠拟合的原因

同样可以从两个角度去分析:

  1. 模型过于简单:简单模型的学习能力比较差
  2. 提取的特征不好:当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合

欠拟合的解决方法

  1. 增加模型复杂度:如线性模型增加高次项改为非线性模型、在神经网络模型中增加网络层数或者神经元个数、深度学习中改为使用参数量更多更先进的模型等等。
  2. 增加新特征:可以考虑特征组合等特征工程工作(这主要是针对机器学习而言,特征工程还真不太了解……)
  3. 如果损失函数中加了正则项,可以考虑减小正则项的系数 \(\lambda\)

参考链接

  1. CV_interviews_Q-A
  2. 过拟合与欠拟合及方差偏差

paper code

摘要

人类动作识别旨在从视频片段中分类人类动作的类别。最近,人们开始设计基于GCN的模型来从骨架中提取特征,以执行此任务,因为骨架表示比其他模态(如RGB帧)更有效且更稳健。然而,在使用骨架数据时,一些重要的线索如相关项也被丢弃了。这导致一些模糊的动作很难被区分并且容易被错误分类。为了缓解这个问题,我们提出了一个辅助特征细化头(FR Head),它包括空间-时间解耦和对比特征细化,以获取骨架的有区别的表示。模糊样本在特征空间中动态发现并校准。此外,FR Head可以强加在GCN的不同阶段,以构建更强的监督的多级细化。我们在NTU RGB+D、NTU RGB+D 120和NW-UCLA数据集上进行了大量实验。我们提出的模型获得了与最先进方法相竞争的结果,并且可以帮助区分这些模糊的样本。

Read more »

paper code

Skeleton MixFormer: Multivariate Topology Representation for Skeleton-based Action Recognition # 摘要

Vision Transformer在各种视觉任务中表现出色,但在基于骨架的动作识别中遇到了瓶颈,并且不及先进的基于图卷积网络(GCN)的方法。其根本原因在于当前的骨架变换器依赖于完整通道的全局关节的自注意机制,忽略了通道内高度区分性的差异相关性,因此难以动态学习多变拓扑的表达。为解决这一问题,我们提出了Skeleton MixFormer,这是一种创新的时空架构,能够有效表示紧凑的骨架数据的物理相关性和时间交互性。该提议框架由两个基本组成部分组成:1)空间MixFormer。利用通道分组和混合注意力计算动态的多变拓扑关系。与全通道自注意方法相比,空间MixFormer更好地突出了通道组之间的区别以及关节邻接的可解释学习。2)时间MixFormer,包括多尺度卷积、时间变换器和顺序保持模块。多变时间模型确保了全局差异表达的丰富性,并实现了序列中关键间隔的区分,从而更有效地学习动作中的长期和短期依赖关系。我们的Skeleton MixFormer在四个标准数据集(NTU-60、NTU-120、NW-UCLA和UAV-Human)的七种不同设置上展现出最先进(SOTA)的性能。

Read more »

paper code

摘要

骨架序列表示学习通过其对人体关节和拓扑结构的建模能力,在动作识别中显示了巨大的优势。然而,当前的方法通常需要大量的标注数据来训练计算昂贵的模型。此外,这些方法忽略了如何利用骨架不同关节之间的细粒度依赖关系,来预训练一个可以泛化到不同数据集的高效骨架序列学习模型。在本文中,我们提出了一个高效的骨架序列学习框架,命名为骨架序列学习(SSL)。为了全面捕获人体姿态并获得有区分性的骨架序列表示,我们构建了一个基于非对称图的编码器-解码器预训练架构,命名为SkeletonMAE,它将骨架关节序列嵌入图卷积网络,并根据先验人体拓扑知识重构被屏蔽的骨架关节和边。然后,预训练的SkeletonMAE编码器与空间-时域表示学习(STRL)模块相结合,构建SSL框架。大量的实验结果显示,我们的SSL可以很好地泛化到不同的数据集,并在FineGym、Diving48、NTU 60和NTU 120数据集上优于目前最先进的自监督基于骨架的方法。此外,我们获得了可与一些完全监督方法相媲美的性能。

Read more »