Transformer
半年前刚开始踏入深度学习的时候,看李弘毅的视频了解了一点Transformer。这次的笔记也是基于李宏毅视频讲解的内容。
在处理seq2seq问题时,我们首先能想到的就时rnn,它的优势是能结合上下文把握全局,不足是,它的计算不能实现平行。如下图,要想得到b4,必须先计算出b1,b2,b3。但如果用cnn替换rnn那就可以实现并行了,只不过这样的cnn需要构建多层,如图右边(三角形就是cnn的结构)。
想结合上述rnn核cnn的优势,就有了self-Attention。
self-Attention
特点:能力和rnn一样,但优势在于可以同时计算b1-b4。
由a1,a2,a3,a4,乘以不同的w,得到相应的q,k,v。
然后拿每个q对每个k做Attention。如下所示:
得到阿法1,i后,进行softmax,然后再乘上各自的v,相加起来就得到b1了。以此类推,可以算出b2,b3,b4.
下面来解释平行化的过程,a1-4,q1-4…其实都可以用一个大的矩阵来表示。表示为I,Q,K,V。则K的转置乘以Q就得到所有得阿法A。后面求得b也是如此。
《Video Action Transformer Network》
基于对transformer的理解也不难推断出,这篇论文作者的思想是想从视频中人物目标的上下文来获取动作识别的有用信息。在文章的介绍部分,作者阐述道,动作识别的难点在于有些复杂的动作是需要结合目标人物的周围环境的。比如,一个人在盯着某处看,我们需要知道的是他观察的目标是个人还是仅仅是远处。
作者的模型构建如下所示,用一个时空I3D模型(在Kinetics-400上进行过预训练),提取目标的基础特征,I3D的输入是64帧的帧序列。RPN选取基础特征的中间一层,生成多个潜在的人员边界框和对象评分,选择具有最高的对象性得分的R个框(使用R = 300),进一步回归到一个紧密的边界框中,并使用“head”网络将其分类到操作类中。(前面的作用就是把person都框出来)
接下来介绍head框架,它使用RPN中的person框作为“查询”来定位要处理的区域,并聚合剪辑上的信息来对它们的操作进行分类。head是由Transformer改的,在作者的框架中,Transformer的输入是RPN网络生成的person box(对应q向量)和memory特征(上下文信息对应k和v向量)。
k特征和v特征简单计算为原始特征图从主干上的线性投影,因此每个特征图的形状为T×H×W×D。
而从中心剪辑中提取了person box的RoIPool-ed特征,将通过一个q预处理程序(QPr)和一个线性层进行传递,得到大小为1×1×D的q特征。其中QPr可以直接对整个空间的RoIpool特征进行平均,但是会丢失person框的所有空间布局。所以作者用11的卷积进行降维,将得到的7×7特征图(ActionTransformer头部使用的RoIPool生成14×14的输出,然后使用最大池得到7×7的feature map。所以q没经过处理时是77。)的单元连接成一个向量,最后,使用线性层将该特征映射的维数降低到128D(与查询和关键特征映射相同)。
得到k,q,v,接下来的即是通过这三类向量得到B。作者将dropout应用到a ®并将其添加到更新q中。生成的q通过一个残余分支传递。
实验
作者在AVA基准上对模型进行了实验评估。TheAtomicVisualActions(AVA)v2.1数据集包含211K的训练、57K的验证和117K的测试片段,以每秒1帧的速度从430个15分钟的电影片段中截取。每个剪辑的中心框架都用所有person包围框进行了详尽的标记,并为每个实例提供了80个活动的action类中的一个或多个。(这是论文里对AVA数据集的介绍,没下过,但感觉蛮厉害的)
I3Dhead是作者去除Tx,即不结合上下文信息做的比较模型。
上表是有无TxUinit,GTBoxes等情况下的结果对比,通过将第二行和第四行相比可以发现,Tx是有助于模型提升精度的。作者从第一行和第二行对比,得出有无GTBoxes对模型结果影响不大,模型中的RPN已经训练的很好了。但第四行和第六行比较岂不是得出完全相反的结论吗(当时我很诧异)?作者进一步解释,说这里 Action Transformer 给的RPN的R=64,是R值太低的原因。
后面作者进行了一系列的模型改进的比较实验,不全部总结了。最后作者给出了之前在AVA数据集上测试的模型结果进行综合比较,Tx+I3D(用96帧作为输入时)效果最好。