视觉架构大一统!港中文通过统一视角Container对Transformer, 深度卷积以及MLP-Mixer进行了大一统

2023-10-26

编辑:Happy
首发:AIWalker

前段时间MLP-Mixer提出后,引发了视觉架构圈的一篇轰动,包含但不限于以下几篇文章:

由此引发了关于“MLP->CNN->Transformer->MLP”怪圈的“恐慌”。今天,港中文李鸿升团队从一个更广义的视角对Transformer、深度卷积以及MLP-Mixer进行了“大一统”,并由此提出Container,该方案在图像分类、目标检测以及实例分割方面取得显著的性能提升。

标题&作者团队

Abstract

CNN在计算机视觉领域无处不在,并且具有无数有效、高效的改进。近年来,NLP领域中的Transformer已开始在CV领域发力并逐步占领不少CV子领域的高地。尽管早期的用户仍继续采用CNN骨干,但最新的一些网络则逐渐变成了无CNN的Transformer方案。近期另一项令人惊讶的发现表明:不带任何卷积或者Transformer,仅由简简单单的MLP构成的方案可以取得非常有效的视觉表达

尽管CNN、Transformer以及MLP-Mixer可能会被视作完全独立的架构,我们提供了一个统一视角表明:它们均是更广义方案下通过神经网络集成空间上下文信息的特例。我们提出了CONTAINER(CONText AggregatIon NEtwoRK),一种用于多头上下文集成(Context Aggregation)的广义构建模块,它可以类似Transformer捕获长距离相互作用,同时可以类似局部卷积探索归纳偏置进而导致更快的收敛速度。

仅需22M参数量,所提CONTAINER在ImageNet数据集取得了82.7%的的top1精度,以2.8%优于DeiT-Small;此外仅需200epoch即可达到79.9%的top1精度。不用于难以扩展到下游任务的Transformer方案(因为需要更高分辨率),该方案CONTAINER-LIGHT可以嵌入到DETR、RetinaNet以及Mask-RCNN等架构中用于目标检测、实例分割任务并分别取得了6.6,7.6,6.9指标提升。相比DeiT,在DINO框架(自监督学习)下,所提方法取得了令人非常由前途的结果。

总而言之,本文有以下几点贡献:

  • 提出了关于主流视觉架构的一个统一视角;
  • 提出了一种新颖的模块CONTAINER,它通过可学习参数和响应的架构混合使用了静态与动态关联矩阵(Affinity Matrix),在图像分类任务中表现出了很强的结果;
  • 提出了一种高效&有效的扩展CONTAINER-LIGHT在检测与分割方面取得了显著的性能提升。

Method

首先,我们对神经网络中常用的近邻/上下文集成模块提供了一个广义视角;然后,我们对三个主流架构进行回顾并表明它们是该广义视角下的特例;最后,我们提出了所提CONTAINER及其高效版本CONTAINER-LIGHT。

Contextual Aggregation for Vision

假设输入为 X ∈ R C × H × W X \in R^{C\times H \times W} XRC×H×W,它首先平展为一系列词 { X i R C ∣ i = 1 , c … , N } , N = H W \{X_i \R^C | i=1,c\dots, N\}, N= HW {XiRCi=1,c,N},N=HW并送入到网络中。视觉网络通常采用堆叠带残差连接的模块方式,可定义如下:
Y = F ( X , { W i } ) + X Y = \mathcal{F}(X, \{W_i\}) + X Y=F(X,{Wi})+X
我们首先定义关联矩阵 A ∈ R N × N \mathcal{A} \in R^{N \times N} ARN×N用于表示用于上下文集成的近邻,上述工时可以重写如下:
Y = ( A V ) W 1 + X Y = (\mathcal{A}V)W_1 + X Y=(AV)W1+X
其中 V ∈ R N × C V\in R^{N\times C} VRN×C表示X的变换: V = X W 2 V = XW_2 V=XW2 W 1 , W 2 W_1, W_2 W1,W2均为可学习参数。 A i , j \mathcal{A}_{i,j} Ai,j表示 X i X_i Xi X i X_i Xi之间的关联值。V与关联矩阵相乘则在特征值之间进行的信息流动。这种上下文集成模块(Context Aggregation Block, CAB)的建模能力可以通过引入多个关联矩阵提升,使得网络可以在X之间构建多个上下文关联路径。上式的多头版本定义如下:
Y = C o n c a t ( A 1 V 1 , ⋯   , A M 1 V M ) W 2 + X Y = Concat(\mathcal{A}_1V_1, \cdots, \mathcal{A}M1V_M)W_2 + X Y=Concat(A1V1,,AM1VM)W2+X
A m \mathcal{A}_m Am表示不同头的关联矩阵,不同的关联矩阵可以捕获不同的相关性,进而可以提升上下文集成的表达能力。注:上下文集成过程中仅仅产生了空间信息流动,而未发生跨通道信息交互,同时不存在非线性激活函数

The Transformer, Depthwise Convolution and MLP-Mixer

Transformer, Depthwise Convolution以及MLP-Mixer是计算机视觉中三个独立的基础模块。接下来,我们将表明:通过定义不同的关联矩阵,它们均可以通过前述上下文集成模块表示

Transformer 在Transformer的自注意力机制中,关联矩阵通过投影query-key对之间的相似性建模。以带M头为例,m头的关键矩阵 A m s a \mathcal{A}_m^{sa} Amsa可以写成如下形式:
A m s a = S o f t m a x ( Q m K m T / C / M ) \mathcal{A}_m^{sa} = Softmax(Q_m K_m^T/\sqrt{C/M}) Amsa=Softmax(QmKmT/C/M )
其中, K m , Q m K_m, Q_m Km,Qm分别表示m头的key与query。自注意力中的关联矩阵可以动态生成并可以捕获实例级信息。然而,这种表达方式会带来二阶计算复杂度,对于高分辨率特征而言,计算量尤其大。

Depthwise Convolution 卷积操作可以同时进行空域与通道信息集成。这与上述上下文集成模块不同。然而,深度卷积是组卷积的极限特例。考虑到CAB的头数等于通道数C,我们定义如下卷积关联矩阵:
A m i j c o n v = { K e r [ m , 0 , ∣ i − j ∣ ] , ∣ i − j ∣ ≤ k 0 , ∣ i − j ∣ > k \mathcal{A}_{mij}^{conv} = \begin{cases} Ker[m,0,|i-j|], |i-j| \le k \\ 0, |i-j| > k \end{cases} Amijconv={Ker[m,0,ij],ijk0,ij>k
其中, A m i j \mathcal{A}_{mij} Amij表示m头时 X i X_i Xi X j X_j Xj之间的关联值。注:不同于自注意力中的关联矩阵随输入动态变化,卷积中的关联矩阵时静态的

MLP-Mixer 近期新提出的MLP-Mixer不依赖于任何卷积或者自注意力模块,MLP-Mixer的核心为转置MLP操作,它可以表示为: X = X + ( V T W M L P ) T X=X + (V^TW_{MLP})^T X=X+(VTWMLP)T。对此我们可以定义如下关联矩阵:
A m l p = ( W M L P ) T \mathcal{A}^{mlp} = (W_{MLP})^T Amlp=(WMLP)T
其中 W M L P W_{MLP} WMLP表示可学习参数。这种简单的工时表明:转置MLP操作本身即视一种上下文集成操作。相比自注意力与深度卷积,转置MLP关联矩阵是静态的、稠密的、参数不共享

上面简单的统一揭示了Transformer、深度卷积以及MLP-Mixer之间的相似与区别。也就是说,每个模块都可以通过定义不同的关联矩阵而得到。这种发现驱使我们构建一种更强有力、高效的基础模块CONTAINER用于视觉任务。

The CONTAINER Block

正如前面所提到:不同的架构或采用静态,或采用动态关联矩阵进而具有了各自不同的优势。我们所提模块CONTAINER通过可学习参数组合两种两类型的关联矩阵。单头CONTAINER定义如下:
Y = ( ( α A ( X ) ⏞ Dynamic + β A ⏞ Static ) V ) W 2 + X Y = ((\alpha \overbrace{\mathcal{A}(X)}^\text{Dynamic} + \beta \overbrace{\mathcal{A}}^\text{Static})V)W_2 + X Y=((αA(X) Dynamic+βA Static)V)W2+X
其中, A ( X ) \mathcal{A}(X) A(X)表示由X动态生成,而 A \mathcal{A} A表示静态关联矩阵。接下来,我们呈现几个关于CONTAINER模块的特例。

  • α = 1 , β = 0 , A ( X ) = A s a \alpha = 1, \beta=0,\mathcal{A}(X)=\mathcal{A}^{sa} α=1,β=0,A(X)=Asa:带自注意力的朴素Transformer模块;
  • α = 0 , β = 1 , M = C , A = A c o n v \alpha=0, \beta=1, M=C, \mathcal{A} = \mathcal{A}^{conv} α=0,β=1,M=C,A=Aconv:深度卷积模块。在深度卷积中,每个通道具有不同的静态关联矩阵。
  • α = 0 , β = 1 , M = 1 , A = A m l p \alpha=0, \beta=1, M=1, \mathcal{A} = \mathcal{A}^{mlp} α=0,β=1,M=1,A=Amlp: MLP-Mixer模块。当 M ≠ 1 M \ne 1 M=1时,我们称之为为MH-MLP:即将通道拆分为M个组,每个组实行不同的MLP以捕获静态关联。
  • α = L , β = L , A ( X ) = A s a , A = A m l p \alpha=\mathcal{L}, \beta=\mathcal{L},\mathcal{A}(X) = \mathcal{A}^{sa}, \mathcal{A} = \mathcal{A}^{mlp} α=L,β=L,A(X)=Asa,A=Amlp:该模块同时融合了动态与静态信息,但静态关联集成了MLP-Mixer矩阵。我们称之为CONTAINER-PAM。
  • α = L , β = L , A ( X ) = A s a , A = A c o n v \alpha=\mathcal{L}, \beta=\mathcal{L},\mathcal{A}(X) = \mathcal{A}^{sa}, \mathcal{A} = \mathcal{A}^{conv} α=L,β=L,A(X)=Asa,A=Aconv:该模块同时融合了动态与静态信息,但静态关联集成了深度卷积矩阵。该静态关联矩阵包含了平移不变局部约束,使其更适用于视觉任务。此为我们实验中的默认配置。

所提CONTAINER非常容易实现并可以轻易嵌入到现有神经网络中。上述不同版本的CONTAINER会产生不同的架构、不同的性能,并呈现出不同的优势于局限性。因为动态矩阵与静态矩阵可以线性组合,CONTAINER模块的计算复杂度与朴素Transformer相当

The CONTAINER Network Architecture

在这里,我们将提供实验中的基础架构。前文的统一表达使得我们可以方便与自注意力、深度卷积以及MLP进行对比。

受启发于已有工作,所提架构包含4个阶段。不同于ViT/DeiT的固定分辨率,所提方法采用逐渐降低图像分辨率的方式。逐渐下采样可以保留图像细节,这对于下游任务(比如分割、检测)非常重要。每个阶段包含多个级联模块,每个模块包含两个子模块:(1) 用于集成空域信息的子模块,我们称之为空域集成模块;(2) 用于融合通道信息的子模块,我们称之为前向模块。

在该文中,我们固定通道融合模块为2层MLP;设计一种更佳的空域集成模块时本文的主要聚焦点。这四个阶段分别包含2-3-8-3个级联模块;每个阶段采用块嵌入融合 p × p p\times p p×p的块为向量。对于这四个阶段,p值分别为4-4-2-2。不同阶段的特征维度则为128-26-320-512。该架构具有与DeiT-S相近的参数量。

The CONTAINER-LIGHT Network

与此同时,我们还提出了一个高效版本CONTAINER-LIGHT,它采用了与CONTAINER相同的基础架构,但关闭了前三个阶段的动态关联矩阵。这种配置使其可以大幅降低计算量,进而可以高效处理大分辨率图像并在下游任务取得优异性能。
$$
\mathcal{A}_m^{CONTAINER-LIGHT} = \begin{cases}
\mathcal{A}_m^{conv}, \text{ Stage}=1,2,3 \
\alpha \mathcal{A}_m^{sa} + \beta \mathcal{A}_m^{conv}, \text{ Stage}=4

\end{cases}
$$

Experiments

接下来,我们在ImageNet、目标检测、实例分割以及自监督学习等任务上对所提方案进行系统分析。

ImageNet Classification

上表对CNN、Transformer、MLP以及本文Container进行了对比,从中可以看到:

  • 相比ViT,DeiT,所提Container与Container-light具有更佳指标,同时具有更少参数量;
  • 相比PVT、Swin等分层架构,所提方法同样具有更佳的性能;
  • 所提方案仅弱于使用了NAS技术的EfficientNet与RegNet;
  • Container-light不仅具有高精度,同时具有更低的FLOPs,更快的吞吐量。

Detection with RetinaNet

下表对比了RetinaNet框架下不同方案的性能对比,从中可以看到:

  • 相比ResNet50,所提方案取得了43.8mAP,在 A P S , A P M , A P L AP_S,AP_M, AP_L APS,APM,APL指标上分别超出7.0,7.2,10.4,同时具有相当的参数量和复杂度;
  • 所提方案同样超过了更大的骨干X-101-64以及纯Transformer的架构,如PVT-S, ViL-S, SWIN-T;
  • 相比更大的Transformer骨干(比如ViL-M,ViL-B),所提方法具有相当的性能,但具有更少的参数量和计算量。

上表还给出了Mask-RCNN框架的不同方案性能对比,从中可以看到:所提方法同样大幅优于ResNet50、ResNet1010以及PVT、ViL、SWIN-T、BoT等方案

Detection with DETR

上表给出了DETR框架下不同方案的性能对比,从中可以看到:相比ResNet50骨干,所提方案取得了显著性能提升,提升高达6.6mAP

Self supervised Learning

上表给出了自监督学习框架下不同方案的性能对比,可以看到:Container-light大幅超过了DeiT

参考code

class Attention(nn.Module):
  def __init__(self, dim, num_heads=8, qkv_bias=False, qk_scale=None, attn_drop=0., proj_drop=0., seq_l=196):
    super().__init__()
    self.num_heads = num_heads
    head_dim = dim // num_heads
    self.scale = qk_scale or head_dim ** -0.5
    self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)
    #Uncomment this line for Container-PAM
    #self.static_a = #nn.Parameter(torch.Tensor(1, num_heads, 1 + seq_l , 1 + seq_l))
    #trunc_normal_(self.static_a)
    self.attn_drop = nn.Dropout(attn_drop)
    self.proj = nn.Linear(dim, dim)
    self.proj_drop = nn.Dropout(proj_drop)
  def forward(self, x):
    B, N, C = x.shape
    qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
    q, k, v = qkv[0], qkv[1], qkv[2]
    attn = (q @ k.transpose(-2, -1)) * self.scale
    attn = attn.softmax(dim=-1)
    #Uncomment this line for Container-PAM
    #attn = attn + self.static_a
    attn = self.attn_drop(attn)
    x = (attn @ v).transpose(1, 2).reshape(B, N, C)
    x = self.proj(x)
    x = self.proj_drop(x)
    return x

推荐阅读

  1. “重参数宇宙”再添新成员:RepMLP,清华大学&旷视科技提出将重参数卷积嵌入到全连接层
  2. 新坑!谷歌提出MLP-Mixer:一种无卷积、无注意力,纯MLP构成的视觉架构
  3. MLP再添新砖,Facebook入局!ResMLP:完全建立在MLP上的图像分类架构
  4. CV圈杀疯了!继谷歌之后,清华、牛津等学者又发表三篇MLP相关论文,LeCun也在发声
  5. 突破置换模块计算瓶颈,MSRA开源轻量版HRNet,超越主流轻量化网络!|CVPR2021
  6. EfficientNet v2来了!更快,更小,更强!
  7. CVPR2021|“无痛涨点”的ACNet再进化,清华大学&旷视科技提出Inception类型的DBB
  8. TNT|为充分利用局部与全局结构信息,华为诺亚提出全新Transformer:TNT
  9. 金字塔Transformer,更适合稠密预测任务的Transformer骨干架构
  10. 来自Transformer的降维打击:ReID各项任务全面领先,阿里&浙大提出TransReID
  11. ResNet被全面超越了,是Transformer干的:依图科技开源“可大可小”T2T-ViT,轻量版优于MobileNet
  12. CNN与Transformer的强强联合!谷歌最新开源BoTNet,ImageNet达84.7%准确率
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

视觉架构大一统!港中文通过统一视角Container对Transformer, 深度卷积以及MLP-Mixer进行了大一统 的相关文章

  • jQuery基础使用

    什么是 jQuery jQuery是一个JavaScript函数库 jQuery是一个轻量级的 写的少 做的多 的JavaScript库 所以jQuery库本质上还是JavaScript代码 它只是对JavaScript语言进行包装处理 通
  • ../lib/crt1.o: In function `_start':

    出现以上错误是因为你改变了 gcc 或者是 arm gcc xxx的 sysroot gcc v 看一下 把默认sysroot下面的库拷贝到你指定的sysroot即可
  • JSBox 移动端 JavaScript 编程环境

    什么是 JSBox JSBox 是一个 JavaScript 的集成开发环境 你可以在这里学习如何编写 JavaScript 我们提供了一系列的工具来增强你的开发体验 JSBox 对编程新手和有经验的工程师都是非常友好的 你不想试试吗 别再

随机推荐

  • 【Spring】RestTemplate访问https

    文章目录 1 概述 1 概述 今天要对接华为的环境 然后我们要使用https连接对方的yarn环境 对方的访问地址如下 https xxx port Yarn ResourceManager 33 proxy application 165
  • MOS管的电路设计的经典应用(2)-开关电路设计

    上一节 我们讲了MOS管做双向电平转换中的应用 这一应用可以说是非常的经典 今天给大家讲讲MOS管作为开关使用 硬件人都知道MOS管属于电压控制型元器件 即在MOS管的栅极加上电压时 当栅 源电压压差大于Vgs th 时 MOS管即可导通
  • 【精品课设】经典PID与专家PID控制的对比与分析(二)

    精品课设 经典PID与专家PID控制的对比与分析 二 目录 精品课设 经典PID与专家PID控制的对比与分析 二 1经典PID控制的设计与仿真 1 1 被控对象传递函数的设计 1 2 经典PID控制的仿真 2专家PID控制的设计 2 1 专
  • sqli-labs:less-4(双引号报错注入)

  • php 代码分析软件,代码分析工具PhpStorm基本介绍

    PhpStorm 1 0版本已经推出后 都有不少人关注这款代码分析工具对Php的支持情况 本文将做一个基本的介绍 让大家能够快速了解该工具 方便日常开发 本文主要是针对Windows 其他的操作系统做一下相应改变即可 首先我们要设置php的
  • Kotlin快速入门(3) -- 其他常用新特性

    1 空值检查 空安全 Kotlin 是空指针安全的 如果一个变量可能为空 必须在定义的时候显式地指定出来 在类型后面加上 如 var a String 666 a null 可以编译通过 var b String 666 b null 无法
  • 解决“创建或打开C++浏览数据库文件*.sdf时发生错误”问题的过程

    Win7系统的电脑上安装了VS2013和SQL Server 2012 想用VS进行一些简单的C语言开发 网上搜索了常见的VS中建C语言工程的帖子 Visual C gt Win32控制台 gt 空工程 去掉预编译头和安全开发 OK后 程序
  • xp系统链接不上宽带连接服务器,XP系统网络连接正常却上不了网怎么解决

    有XP用户遇到了无法上网的现象 网络却已连接 一切都正常 但是 网页就是无法打开 有时甚至会出现时连时断网的现象 XP系统网络连接正常却上不了网怎么解决 现小编介绍解决办法 具体步骤如下 1 打开 运行 对话框 或按Win R组合键 输入命
  • dlib 人脸识别原理详细讲解

    dlib 是一个 C 库 提供了许多机器学习算法和工具 其中包括人脸识别 dlib 的人脸识别算法基于深度学习技术 使用卷积神经网络 Convolutional Neural Network CNN 进行训练 dlib 的人脸识别算法主要分
  • L2-042 老板的作息表

    新浪微博上有人发了某老板的作息时间表 表示其每天 4 30 就起床了 但立刻有眼尖的网友问 这时间表不完整啊 早上九点到下午一点干啥了 本题就请你编写程序 检查任意一张时间表 找出其中没写出来的时间段 输入格式 输入第一行给出一个正整数 N
  • android.app包---------ActivityManager类介绍

    ActivityManager类介绍 ActivityManager与系统与所有正在运行Activity进行交互 相关方法介绍 getDeviceConfigurationInfo 获取设备配置属性值 getMemoryClass 返回当前
  • 编译FriendlyDesktop的Uboot源码、内核,修改开机图片logo

    1 安装依赖包 参照官网wiki教程 12章节 Nanopi 教程wiki 安装以下依赖包 sudo apt get y install bison g multilib git gperf libxml2 utils make pytho
  • mac制作ssl证书

    注意 mac 自带 openssl 所以没必要像 windows 一样先安装 openssl 直接生成即可 生成 ssl 自签名 证书 生成 key 生成rsa私钥 des3算法 server ssl key是秘钥文件名 1024位强度 o
  • 左神《直通BAT面试算法精讲课》

    左神精讲视频课 可以使用优惠码 也可以直接点进去链接购买 可以减十元 大家一起学习 共同进步 专属优惠码为 AFyqyO0 专属优惠购课链接 http www nowcoder com courses 1 coupon AFyqyO0
  • 一文带你读懂感知机的前世今生(上)

    一文带你读懂感知机的前世今生 前言 男女不分 什么是神经元 M P神经元 全或无定律 McCulloch和Pitts 一种高度简化的模型 MP神经元和真值表 MP神经元的几何理解 后记 参考 前言 男女不分 朋友 当你看到类似下图的这样一副
  • ENSP安装华为防火墙模拟器(附USG模拟设备安装包)

    1 防火墙定义 防火墙是位于两个网络中间的系统 它在这些网络之间实施访问控制策略 例如 您的系统正在连接的专用 LAN 和不安全的公共网络 它管理进出系统的进出网络的数据流量 用外行的话来说 防火墙可以被视为您网络的安全卫士 或者可以被视为
  • mybatis- useSSL=true会报错

    D Java jdk1 8 0 144 bin java exe ea Didea test cyclic buffer size 1048576 javaagent D IntelliJ IDEA 2019 3 4 lib idea rt
  • excel巧用拼接函数CONCATENATE输出JSON字符串

    使用 CONCATENATE 其中一个文本函数 将两个或多个文本字符串联接为一个字符串 在 Excel 2016 Excel Mobile 和 Excel 网页版 中 此函数已替换为 CONCAT 函数 语法 CONCATENATE tex
  • gitkraken免费版本6.5.1,Linux下载地址

    来源 https www kaisawind com 2020 03 04 2020 03 05 git gitkraken自6 5 3本地库开始收费 所以推荐下载旧版本下载地址 收费版本 version 6 5 3 url deb htt
  • 视觉架构大一统!港中文通过统一视角Container对Transformer, 深度卷积以及MLP-Mixer进行了大一统

    编辑 Happy 首发 AIWalker 前段时间MLP Mixer提出后 引发了视觉架构圈的一篇轰动 包含但不限于以下几篇文章 重参数宇宙 再添新成员 RepMLP 清华大学 旷视科技提出将重参数卷积嵌入到全连接层 新坑 谷歌提出MLP