物尽其用,卷积和自注意力在Transformer中实现统一:多SOTA、ICLR 2022接收(2)

简介: 物尽其用,卷积和自注意力在Transformer中实现统一:多SOTA、ICLR 2022接收

视频分类

对于视频使用的 3D backbone,研究者加载 ImageNet-1K 预训练的 UniFormer-S 和 UniFormer-B,并进行卷积核展开。具体地,动态位置编码和 local MHRA 分别展开为 3x3x3 和 5x5x5 卷积。对于下采样层,他们只在第一次下采样同时压缩时间和空间维度,而在其余三次下采样仅压缩空间维度,也即是第一次下采样卷积核大小为 3x4x4、步长为 2x4x4,其余卷积核大小为 1x2x2、步长为 1x2x2。这样可以减少计算量的同时,保证模型的高性能。对于 global MHRA,研究者直接继承相应参数,将时空 token 序列化进行统一处理。

密集预测

对于下游密集预测任务,直接使用原始网络作为主干并不合适。因为这些任务往往输入大分辨率图像,比如目标检测中输入 1333x800 的图像,使用 global MHRA 会带来过多的计算量。研究者以 UniFormer-S 为例,统计不同分辨率输入下,不同操作所需的计算量。

左:模型整体计算量与第三 / 四层中 MatMul 运算所需计算量。右:第三层采用不同风格的 MHRA 所需的 MatMul 计算量。

从上图中可以看到,第三层中 MHRA 所需的 MatMul 运算随着分辨率的增加急剧上升,在输入分辨率为 1008x1008 时,甚至占了总运算量 50% 以上,而第四层仅为第三层的 1/28。因此,研究者仅对第三层的 MHRA 进行改进。

受先前工作 [7] 的启发,他们将 global MHRA 应用在限制的窗口内,这样会把原本 的复杂度降至 ,其中 p 为窗口大小。然而直接应用纯 window 化操作,不可避免地会带来性能下降,为此研究者将 window 和 global 操作结合。每个 hybrid 分组中包含 4 个 block,前 3 个为 window block,最后 1 个为 global block。UniFormer-S 和 UniFormer-B 分别包含 2 个和 5 个分组。

不同任务在训练和测试时使用特定改进

如上为研究者在五种任务上,训练和测试采用的特定改进。对于目标检测任务,由于训练和测试时输入分辨率都很大(如 1333x800),他们在第三层都采用 hybrid block。对姿态估计任务,输入分辨率相对较小(如 384x288),在第三层采用原本的 gloabl block。

而对于语义分割任务,往往在测试时使用几倍于训练输入的分辨率(如 2048x512 vs. 512x512),因此在训练时,对第三层采用 global block,而在测试时采用 hybrid block,但需要注意测试时 hybrid block 中 window size 需要与训练时 global block 的感受野一致(如 32x32),感受野不一致会导致急剧性能下降。这种设计可以保证训练高效的同时,提高测试的性能。

实验

图像分类

研究者在 ImageNet-1K 进行图像分类实验,采用了 DeiT [8] 的代码与训练策略,UniFormer-S/B/L 使用 droppath 比例为 0.1/0.3/0.4,对大模型额外加入 Layer Scale 防止网络训练崩溃 [9]。对于 Token Labeling,沿用其代码训练框架与超参。

ImageNet-1K

结果如上所示,其中带 * 为加入 Token Labaleing 进行训练,UniFormer-B 为前述 UniFormer-B 的增强版本。从中可以看到 UniFormer 在不同规模下都取得了 SOTA 性能,UniFormer-L-384 仅需 39G 的 FLOPs,即可取得 86.3% 的 top-1 精度。

视频分类

研究者在 Kinetics-400/600 以及 Something-Something V1/V2 上进行了视频分类实验,沿用 MViT 的代码和训练策略。对 Kinetics 采用 dense 采样方式,加载了 ImageNet-1K 的预训练模型加速训练,droppath 比例保持与前述一致。对 Sth-Sth 采用 uniform 采样方式,加载了 Kinetics 的预训练,droppath 设置为前述两倍,并不进行水平翻转。

左:Kinetics。右:Sth-Sth。

结果如上图所示,仅使用 ImageNet-1K 预训练,研究者在 Kinetics 上取得与使用 JFT-300M 预训练的 ViViT-L、使用 ImageNet-21K 预训练的 Swin-B 相近的性能,计算量大幅减小。而在 Sth-Sth 上,大幅高于先前 CNN 和 ViT 的结果,取得了新的 SOTA,在 Sth-Sth V1 上 61.2%,V2 上 71.4%。

目标检测和实例分割

研究者在 COCO2017 上进行了目标检测和实例分割实验,沿用了 mmdetection [10] 的代码框架,配置了 Mask R-CNN 与 Cascade Mask R-CNN 框架,使用 Swin Transformer 的训练参数,均取得了 SOTA 性能。

COCO 目标检测,Mask R-CNN


COCO 目标检测,Cascade Mask R-CNN

语义分割

研究者在 ADE20K 上进行了语义分割实验,沿用了 mmsegmentation [11] 的代码框架,配置了 Semantic FPN 与 UperNet 两种框架,分别使用了 PVT 和 Swin 的训练参数,均取得了 SOTA 性能。

ADE20K 语义分割,左:Semantic FPN。右:UperNet。

人体姿态估计

研究者在 COCO2017 上进行了姿态估计实验,沿用了 mmpose [12] 的代码框架,配置了简单的 Top-down 框架,使用了 HRFormer 的训练参数,取得了 SOTA 性能。

COCO 姿态估计,Top-down

消融实验

研究者进行了详尽的消融实验,首先在图像和视频分类任务上验证了 backbone 的结构设计。其次,他们对视频 backbone 的预训练、训练以及测试策略进行了探究。最后,我们验证了下游密集预测任务上改进的有效性。

图像和视频 backbone 的模型设计

结构设计

  • FFN:首先将 local block 替换为 MobileNet block,其中 ReLU 替换为 GeLU,expand ration 设置为 3 保持计算量一致,保留动态编码以公平比较,可以看到 local block 在图像和视频分类任务上都要明显优于 MobileNet block。由此可知 transformer 风格,以及其特有的 FFN 确实增强了 token 的特征表达;
  • DPE:将动态位置编码去掉,在图像和视频任务上性能均下降,视频任务上更是掉了 1.7%,由此可知位置编码有助于更好的时空特征学习;
  • Local MHRA size:将 local MHRA 的卷积核大小设置为 3、5、7、9,性能差异并不大,最终采用大小为 5 的卷积核,以取得最好的计算量与准确率的权衡;
  • MHRA configuration:由纯 local MHRA(LLLL)出发,逐层替换使用 global MHRA。结果可以发现,仅使用 local MHRA 时,计算量很小,但性能下降明显。逐层替换 global MHRA 后,性能逐渐提升。但全部替换为 global MHRA 后,视频分类准确率急剧下降,计算量急剧上升,这主要是因为网络缺失了提取细节特征的能力,冗余的 attention 在有限的 video 数据下导致了急剧的过拟合。


视频 backbone 的预训练、训练和测试

迁移性能、卷积核展开方式、训练采样方式

  • Transfer learning:表 11 中比较了不同结构的预训练性能以及小数据集上的迁移学习性能,可以发现,联合的时空学习方式,不仅在预训练模型上性能更好,在小数据集上的迁移学习性能提升明显。而纯 local MHRA 以及时空分离的学习方式,迁移小数据训练未能带来提升;
  • Infalting methods:表 12 中比较了是否对卷积核进行展开,可以发现,展开为 3D 卷积核,在场景相关的数据集 Kinetics-400 上性能接近,但在时序相关的数据集 Sth-Sth V1 上提升明显,尤其是在强与训练的加持下,这表明 3D 卷积核对时空特征的学习能力更强;
  • Sampling strides of dense sampling:表 13 中比较了研究者在训练 Kinetics 时,使用不同间隔采样的结果。可以发现更稀疏的采样,在单 clip 测试上效果往往更好,但在多 clip 测试时,间隔 4 帧采样更好;
  • Sampling methods of Kinetics pre-trained model:由于加载 Kinetics 预训练模型训练 Sth-Sth,而 Sth-Sth 采用 uniform 采样,有必要知道预训练覆盖更多帧是否能带来提升。表 14 的结果表明,预训练的不同采样方式差别并不大,16x4 采样在大部分条件下性能都较好。


左:不同数据集预训练。右:不同测试策略。

  • Pre-trained dataset scales:图 6 比较了不同规模数据预训练的结果,可以发现对于小模型,大数据集预训练的提升非常明显,而对于大模型则相差无几;
  • Testing strategies:图 7 比较了不同的测试策略,可以发现对于使用 dense 采样方式训练的场景相关数据集 Kinetics 而言,多 clip 测试方案较好,且 1x4 综合性能最优。对于使用 uniform 采样方式训练的时序相关数据集 Sth-Sth 而言,多 crop 测试方案较好,且 3x1 综合性能最好。


下游任务的自适应设计

下游改进

  • 目标检测:表 15 比较了目标检测任务上,第三层采用不同类型 block 的结果。尽管在 1x 训练时,hybrid block 的性能比纯 global block 性能略差,但经过 3x 的充分训练后,hybrid block 的性能已经能和纯 global block 持平;
  • 语义分割:表 16 比较了了语义分割任务上,第三层采用不同类型 block 的结果。可以发现更大的窗口大小,以及 global block 的使用都能明显提升性能,由于纯 global block 计算量较大,我们采用性能相近的 hybrid block;
  • 姿态估计:表 17 分别比较了姿态估计任务上,第三层采用不同类型 block 的结果。由于图像分辨率较小,zero padding 消耗了更多的计算量。


可视化

图像分类与视频分类

目标检测、语义分割、姿态估计

写在最后的思考

过去一年多,研究者在视频模型设计上尝试了 CNN(CTNet,ICLR2021)、ViT(UniFormer,ICLR2022)以及 MLP(MorphMLP,arxiv)三大主流架构。总的来说,Transformer 风格的模块 + CNN 的层次化架构 + convolution 的局部建模 + DeiT 强大的训练策略,保证了模型的下限不会太低。但相比卷积以及线性层而言,自注意力的性价比仍是最高的,同等计算量尤其是小模型下,自注意力带来的性能提升明显,并且对大数据集预训练的迁移效果更好。

但传统 ViT 对不同分辨率输入并不友好,并且对大分辨率输入的计算量难以承受,这在 UniFormer 中都尽可能以简洁的方式解决,DWConv 有限制地引入,也并不会导致过多的显存开销与速度延迟,最后在不同的任务上都能取得很好地性能权衡。

本文 UniFormer 提供了一个尽可能简单的框架,研究者也希望后面的工作能在这个框架的基础上,去考虑视频中的运动信息、时空维度的冗余性、帧间的长时关系建模等等更复杂的问题,实现更大的突破。

参考文献

1. Token Labeling https://github.com/zihangJiang/TokenLabeling2. ViViT https://arxiv.org/abs/2103.156913. MobileNetV2 https://arxiv.org/abs/1801.043814. TimeSformer https://arxiv.org/abs/2102.050955. Swin Transformer https://arxiv.org/abs/2103.140306. CPE https://arxiv.org/abs/2102.108827. stand-alone https://arxiv.org/abs/1906.059098. DeiT https://github.com/facebookresearch/deit9. Layer 物尽其用,卷积和自注意力在Transformer中实现统一:多SOTA、ICLR 2022接收Scale https://arxiv.org/abs/2103.1723910. mmdetection https://github.com/open-mmlab/mmdetection11. mmsegmentation https://github.com/open-mmlab/mmsegmentation12. mmpose https://github.com/open-mmlab/mmpose

相关文章
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformer:Attention机制、前馈神经网络、编码器与解码器
Transformer:Attention机制、前馈神经网络、编码器与解码器
263 1
|
1月前
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
60 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
Transformer模型
【10月更文挑战第3天】
78 0
|
3月前
|
机器学习/深度学习 自然语言处理 数据建模
7.2 Transformer:具有里程碑意义的新模型——自注意力模型
该文章详细介绍了Transformer模型及其核心组件自注意力模型(Self-Attention Model),解释了其如何克服循环神经网络在处理长序列数据时遇到的长程依赖问题,并促进了深度学习在多个领域的应用发展。
|
4月前
|
机器学习/深度学习 自然语言处理 并行计算
【YOLOv8改进 -注意力机制】Mamba之MLLAttention :基于Mamba和线性注意力Transformer的模型
YOLOv8专栏探讨了该目标检测模型的创新改进,包括使用Mamba模型的线性注意力Transformer变体,称为MLLA。Mamba的成功关键在于遗忘门和块设计,MLLA结合了这些优点,提升了视觉任务的性能。文章提供全面分析,并提出MLLA模型,其在效率和准确性上超过多种视觉模型。论文和代码可在提供的链接中找到。MLLA Block的代码示例展示了如何整合关键组件以实现高效运算。更多配置详情见相关链接。
|
5月前
|
机器学习/深度学习 算法 计算机视觉
【YOLOv8改进】CPCA(Channel prior convolutional attention)中的通道注意力,增强特征表征能力 (论文笔记+引入代码)
该专栏聚焦YOLO目标检测的创新改进与实战,介绍了一种针对医学图像分割的通道优先卷积注意力(CPCA)方法。CPCA结合通道和空间注意力,通过多尺度深度卷积提升性能。提出的CPCANet网络在有限计算资源下,于多个数据集上展现优越分割效果。代码已开源。了解更多详情,请访问提供的专栏链接。
|
6月前
|
机器学习/深度学习 自然语言处理 数据处理
Transformer模型中的Attention机制是什么?
Google研究团队为解决机器翻译准确性问题,推出了Transformer模型,核心是Attention机制。Transformer摒弃RNN和CNN,利用Attention处理全局依赖,提高长文本处理效率。模型包含编码器-解码器与自Attention,多头Attention增强信息捕获,位置编码处理顺序信息。虽在翻译质量和速度上有显著提升,但面临泛化能力、长距离依赖处理和计算复杂度等问题,仍有优化空间。
71 0
Transformer模型中的Attention机制是什么?
|
6月前
|
机器学习/深度学习 编解码 自动驾驶
全新ViT Backbone | PLG-ViT 同时具有并行局部和全局自注意力的轻量化视觉Transformer
全新ViT Backbone | PLG-ViT 同时具有并行局部和全局自注意力的轻量化视觉Transformer
229 0
中文核心论文实战:基于通道注意力cbam+lstm的工业用电功率预测时间序列
中文核心论文实战:基于通道注意力cbam+lstm的工业用电功率预测时间序列
115 0
|
机器学习/深度学习 自然语言处理 vr&ar
除了Transformer,还有哪些基于自注意力机制的模型?
除了Transformer,还有哪些基于自注意力机制的模型?
145 0