【深度学习】CNN+Transformer汇总

参考

1.CNN+Transformer算法总结

前言

  • 总结了2021年以来,所有将CNN与Transformer框架结合的CV算法
  • 在卷积神经网络(CNN)中,卷积运算擅长提取局部特征,但在捕获全局特征表示方面还是有一定的局限性。 在Vision Transformer中,级联自注意力模块可以捕获长距离的特征依赖,但会忽略局部特征的细节

cnn与transformer

CNN具有非常良好的性能。这在很大程度上归因于卷积操作,
优点:它以分层的方式收集局部特征以获得更好的图像表示。
缺点:尽管在局部特征提取方面具有优势,但CNN捕获全局表示的能力还是不足,这对很多high-level的计算机视觉任务又是非常重要的。
一个最直观的解决方案是扩大感受野,但是这就会破坏池化层的操作

Transformer

  1. ViT方法
  • 通过将每个图像分割为具有位置嵌入的Patch来构建一系列token;
  • 然后用Transformer Block来提取参数化向量作为视觉表示。
    由于自注意力机制(Self-Attention)和多层感知机(MLP)结构,Vision Transformer能够反映了复杂的空间变换和长距离特征依赖性,从而获得全局特征表示。
    缺点:Vision Transformer会忽略了局部特征细节,这降低了背景和前景之间的可辨别性

因此,一些工作提出了一个tokenization模块或利用CNN特征图作为输入token来捕获特征的邻近信息。然而,这些方法依旧没有从根本上解决好局部建模和全局建模之间的关系。

如何在cnn中插入transformer

类似的工作比如说DETR,用CNN提取图像特征,在之后接了Transformer的encoder和decoder。

例如:2021年1月27日在arxiv上发的一篇文章Bottleneck Transformers for Visual Recognition同样是采用了CNN+Transformer,但在我看来,似乎是更加elegant的做法:

  1. 将Transformer的Self-attention融入了一个CNN的backbone中,而非叠加;

  2. 具体来说是在ResNet的最后三个bottleneck blocks中用MHSA(多头自注意力层,Multi-Head Self-attention)替换了原本的3x3卷积(下图)。这些新的blocks被命名为BoT blocks,这一新的网络被命名为BotNet

在这里插入图片描述
好处:

  1. 能够利用成熟的、经过检验的CNN网络结构提取特征,CNN在视觉领域是有一些先验或者inductive biases的;

  2. CNN对输入图像做了下采样后,再由self-attention进行运算,相比于直接使用self-attention在原图上处理,能够降低运算量;

  3. 这样的设计能够与其他方法结合,例如可能作为backbone应用于DETR中。

在MHSA层中,特征输入X经过WQ, WK, WV三个矩阵映射成q,k,v,分别代表query,key和value。Self-attention的操作一般是对qkv进行计算。

2021 ICCV-Conformer(国科大&华为&鹏城)

详情

2021 IEEE/CVF International Conference on Computer Vision (ICCV) -9 May
论文:原论文
代码:代码
参考:
1CNN+Transformer=Better,国科大&华为&鹏城实验室提出Conformer,84.1% Top-1准确率
2.论文笔记32 – Conformer: Local Features Coupling Global Representations for Visual Recognition

本文提出了一种混合网络结构,称为Conformer,将(卷积操作)和(自注意力机制)结合增强特征表示的学习。Conformer 依靠特征耦合单元(FCU),以交互的方式在不同分辨率下融合局部特征表示和全局特征表示。此外,Conformer采用并行结构,以最大限度地保留局部特征和全局表示。
作者通过实验证明,在相似的参数和复杂度下,Conformer在ImageNet上比DeiT-B好2.3%。在MS-COCO数据集上,它在目标检测和实例分割任务上,分别比ResNet-101高出3.7%和3.6%的mAP。

框架概述

双网络结构Conformer,能够将基于CNN的局部特征与基于Transformer的全局表示相结合,以增强表示学习。Conformer由一个CNN分支和一个Transformer分支组成,这两个分支由局部卷积块、自我注意模块和MLP单元的组合而成。在训练过程中,交叉熵损失函数被用于监督CNN和Transformer两个分支的训练,以获得同时具备CNN风格和Transformer风格的特征。

考虑到CNN与Vision Transformer特征之间的不对称性,作者设计了特性耦合单元(FCU)作为CNN与Vision Transformer 之间的桥接
一方面,为了融合两种风格的特征,FCU 利用1×1卷积对齐通道尺寸,用下/上采样策略对齐特征分辨率,用LayerNorm和BatchNorm对齐特征值 。
另一方面,由于CNN和Vision Transformer分支倾向于捕获不同级别的特征(局部和全局),因此将FCU插入到每个block中,以 连续 交互的方式消除它们之间的语义差异 。这种融合过程可以极大地提高局部特征的全局感知能力和全局表示的局部细节。

方法

猜你喜欢

转载自blog.csdn.net/zhe470719/article/details/124196490