ASFormer:Transformer for Action Segmentation论文阅读笔记

摘要

为了解决动作分割类问题,作者设计了一个高效的基于transformer的动作分割任务模型,ASFormer,该模型具有以下三个特征:
(i)由于特征的高局部性,作者明确地引入了局部连通性归纳先验。它将假设空间限制在一个可靠的范围内,有利于动作分割任务用较小的训练集学习适当的目标函数。
(ii)作者应用了一个预定义的层次表示模式,可以有效地处理长输入序列。
(iii)作者仔细设计了解码器,以细化来自编码器的初始预测。在三个公共数据集上进行的大量实验证明了该方法的有效性。

简介

在解决使用Transformer的动作分割任务时,有三个主要的问题:
1.由于训练集的体积较小,缺乏Transformer的归纳偏差。归纳偏差的缺乏扩大了它们可以表示的特征,然而,这需要大量的训练数据。与NLP任务和其他视觉任务相比,动作分割任务的训练集相对较小,很难从较大的假设空间中学习目标函数。
2.由于长输入视频缺乏自我注意,Transformer很难形成有效的表示。在初始化时,自注意层对序列中的所有元素施加了几乎一致的注意权重。然而,动作分割任务的输入视频通常会持续数千帧,比其他视觉任务中的图像补丁序列要长得多。由于视频的长度,自我注意层学习适当的有意义的权重是一个挑战。每个自我注意层的缺陷进一步证实了一个严重的问题:一个Transformer模型中的这些自我注意层很难相互合作,形成输入的有效表示。
3.Transformer原来的编解码器结构不能满足动作分割任务的细化要求。多个动作片段之间的时间关系在动作分割任务中起着重要的作用,例如取瓶装水后的动作通常是饮水。给定一个初始预测,以前的工作通常在初始预测上应用TCNs或GCNs来执行一个细化过程,以提高性能。然而,在普通的编码器-解码器体系结构中的解码器并不是为这种用途而设计的。

在本文中,作者将解决上述三个问题,如下图所示。对于第一个问题,作者观察到动作分割任务的一个特性是特征的高局部性,因为每个动作都占据了持续的时间戳。因此,局部连通性归纳偏差对动作分割任务非常重要。它将假设空间限制在一个可靠的范围内,有利于用小的训练集学习一个适当的目标函数。作者通过在每一层中应用额外的时间卷积来引入这种强归纳先验。
ASFormer:Transformer for Action Segmentation论文阅读笔记_第1张图片
对于第二个问题,Transformer很难对长输入序列形成一个有效的表示,我们用预先定义的层次表示模式约束每个自注意层,迫使低层次的自注意层首先关注局部关系,然后逐渐扩大它们的足迹,以捕获高层中更长的依赖关系。局部到全局的过程为每个自我注意层分配了特定的任务,以便它们能够更好地合作,实现更快的收敛速度和更高的性能。这种分层表示模式还降低了总空间和时间的复杂度。最后,我们提出了一种新的解码器设计来获得精确的预测。解码器中的交叉注意力机制允许编码器中的每个位置参与细化过程中的所有位置,同时避免编码器对学习特征空间的干扰。
实验是在三个常见的公共数据集上进行的,包括50salads,breakfast和GTEA。实验结果表明,该方法能够处理小的训练数据集和数千帧的长视频。
解码器的设计还利用了多个动作片段之间的时间关系,以帮助获得更平稳和准确的预测。综上所述,本工作的主要贡献包括: 1)对具有三个显著特征的动作分割任务的探索:明确引入了局部连通性归纳偏差、预定义的层次表示模式和解码器的新设计;2)三个公共数据集上最先进的动作分割结果。

方法

在本工作中,作者提出ASfromer来处理动作分割任务,如上图所示。ASFormer采用了一个编解码器结构的Transformer。给定预先提取的帧视频特征序列,编码器首先预测每一帧的初始动作概率。然后初始预测将被传递给多个连续解码器以执行增量细化。第一小节中,我们首先说明编码器的结构,展示我们如何处理小的训练数据集和有数千帧的长视频。在第二小节中,我们介绍了解码器的设计和我们利用多个动作段之间的时间关系进行细化的方法。最后在第三节中,我们介绍了我们实现和训练的细节。

Encoder

编码器的输入是预先提取的大小为T×D的特征序列,其中T为视频长度,D为特征维度。编码器的第一层是一个全连接层,用来调整输入特征的尺寸。然后,这一层后面是一系列的编码器块。在此之后,一个全连接层将从最后一个编码器块中输出预测y∈RT×C,其中C表示动作类的数量。
每个编码器模块包含两个子层。第一个是前馈层,第二个是单头自注意层。我们在两个子层周围使用残差连接,然后进行实例归一化和ReLU激活,如上图(a)所示。与普通transformer不同的是,我们使用一个扩展的时间卷积作为前馈层,而不是点级全连接层。
该设计的灵感来自于动作分割任务的特性,即a)缺乏大型训练集,b)特征的高局部性,因为每个动作都占据了输入视频中持续的时间段。与全连接层相比,时间卷积层可以给我们的模型带来有益的局部归纳偏差。
自注意层很难学会在数千帧中专注于有意义的位置。对于输入视频,这些自我注意层很难相互合作形成有效的表示。为了减轻这个问题,我们预先定义了一个分层表示模式。这种层次模式的灵感来自于现代神经网络设计:首先关注局部特征,然后逐渐扩大接受域来获取全局信息。例如,cnn通过连续的池化层来实现这种模式,以扩大更高层的接受域;或者使用随着扩张率逐渐增加的扩张卷积。由于这种层次模式的成功,我们将每个自我注意层的接受域约束在一个大小为w的局部窗口内(例如,对于帧t,我们只计算其局部窗口内的框架计算注意权重)。然后,局部窗口的大小在第i层(即,w=2i,i=1,2……)上加倍。同时,随着编码器深度的增加,我们还将时间卷积层的膨胀率提高了一倍,并与自注意层保持一致。
对于一个带有J个blocks的编码器,一个普通变压器的整个近似内存使用量为(J·T·T),其中T是视频长度。通过分层表示模式,我们将总空间复杂度降低到((2−ε)·2J·T),其中ε是一个很小的数字。在我们的设置中,我们使用J = 9,其中2J = 512几乎比t小10倍。与普通变压器相比,我们的ASfrore适用于接收长输入序列。

Decoders

多个动作片段之间的时间关系在动作分割任务中起着重要的作用。在动作部分之间有一些先后的关系,例如拿瓶子后的动作,通常是喝水。在之前的工作中,在初始预测上应用额外的TCNs或GCNs来执行细化过程可以提高性能。在本节中,我们将说明新设计的解码器如何对编码器一次输出的初始预测执行细化任务。为了更好地解释,我们首先引入一个单一的解码器,并自然地将其扩展到多个版本,以执行迭代细化。

A Single Decoder

解码器的输入是编码器输出的初始预测。解码器的第一层是用于调整维度的全连接层,然后是一系列解码器块。每个解码器块的体系结构如上图©所示与编码器类似,我们使用时间卷积作为前馈层,而层次模式也应用于交叉注意层。
与自注意层相比,交叉注意有以下区别:查询Q和键K是从编码器和前一层的输出连接得到的,而值V仅从前一层的输出得到。交叉注意机制允许编码器中的每个位置都能够参与细化过程中的所有位置。特征空间V完全由输入预测转换而成,不会被编码器的参与者干扰,因为生成的注意权值只用于在V内执行线性组合。

Multiple Decoders

人们自然会将单个解码器扩展到多个版本来执行迭代细化。在多解码器中,每个解码器的输入来自前一个,如上图(b)所示。
交叉注意机制允许引入外部信息来指导重新细化过程。我们希望逐渐减少外部信息的权重,以避免误差积累的问题。对于每个解码器块中的输入x,我们使用一个加权残差连接作为前馈层和交叉注意层的输出:
在这里插入图片描述
我们为第一个解码器设置α = 1,然后为之后的解码器指数降低α。

Loss Function

损失函数是每一帧的分类损失Lcls和平滑损失Lsmo的组合。分类损失是一个交叉熵损失,而平滑损失计算超过帧级概率的均方误差。最终的损失函数L为,
在这里插入图片描述
其中,ytˆc是时间t时gt标签ˆc的预测概率。λ是在我们的实验中设置为0.25的平衡权重。最后,为了训练完整的模型,将编码器和所有解码器上的损耗之和最小化。

实验

ASFormer:Transformer for Action Segmentation论文阅读笔记_第2张图片

你可能感兴趣的:(笔记,transformer,论文阅读,深度学习)