CoAtNet(NeurIPS 2023, Google)论文解读

news2024/11/19 11:22:38

paper:CoAtNet: Marrying Convolution and Attention for All Data Sizes

third-party implementation:https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/maxxvit.py

背景

自AlexNet以来,ConvNets一直是计算机视觉领域的主流模型。 Transformers在自然语言处理取得成功后,许多研究尝试将其引入计算机视觉领域。尽管Vision Transformer (ViT) 取得了一些成果,但其在小数据集上的表现仍不如ConvNets。

作者认为,Transformers可能缺乏卷积网络所拥有的某些理想的归纳偏差(inductive bias),这导致它们需要大量的数据和计算资源来补偿。因此本文主要讨论了如何将卷积神经网络(ConvNets)和自注意力机制(Transformers)结合在一起,以实现更好的图像分类性能。

创新点

该研究旨在解决以下问题:

  1. 如何在一个基本计算模块内结合卷积和自注意力机制。
  2. 如何垂直堆叠不同类型的计算模块,形成一个完整的网络。

创新点包括:

  1. 提出了深度卷积(depthwise Convolution)和自注意力(self-Attention)可以通过简单的相对注意力(relative attention)实现统一。
  2. 通过合理的方式垂直堆叠卷积层和注意力层,可以显著提高模型的泛化能力和容量。
  3. 提出了 CoAtNet 架构,它结合了 ConvNets 和 Transformers 的优点。

效果

  • 未使用额外数据时,CoAtNet达到了86.0%的ImageNet top-1准确率。
  • 在ImageNet-21K数据集(1300万张图像)上进行预训练后,CoAtNet达到了88.56%的top-1准确率,与使用300M张图像进行预训练的ViT-Huge相当,但数据量减少了23倍。
  • 在JFT-3B数据集上进行预训练后,CoAtNet达到了90.88%的top-1准确率,创下了新的记录。

方法介绍

Merging Convolution and Self-Attention

对于卷积作者主要关注MBConv block,它使用深度卷积来捕获空间相互作用。选择它的原始是Transforme中的FFN和MBConv block一样都采用了"inverted bottleneck"的设计。

深度卷积和self-attention都可以表示为一个在预先定义的感受野内进行每个维度值的加权求和过程。具体来说,卷积依赖一个固定的kernel从一个局部感受野内收集信息

$$ y_i=\sum_{j \in \mathcal{L}(i)} w_{i-j} \odot x_j \quad \text { (depthwise convolution), }  \qquad \tag1 $$ 

其中 \(x_i,y_x\in \mathbb{R}^D\) 分别是位置 \(i\) 处的输入和输出,\(\mathcal{L}(i)\) 表示 \(i\) 的一个局部邻域,比如中心点为 \(i\) 的一个3x3方格。

相比之下self-attention的感受野为全部空间位置

$$ y_i=\sum_{j \in \mathcal{G}} \underbrace{\frac{\exp \left(x_i^{\top} x_j\right)}{\sum_{k \in \mathcal{G}} \exp \left(x_i^{\top} x_k\right)}}_{A_{i, j}} x_j \quad \text{ (self-attention)}, \qquad \tag2 $$

其中 \(\mathcal{G}\) 表示全局位置空间。

在讨论如何更好地组合它们之前,我们先比较一下它们的相对优势和劣势,这有助于找到我们希望保留的特性。

  • 首先深度卷积核 \(w_{i-j}\) 是一个不依赖于输入的静态参数,而attention权重 \(A_{i,j}\) 则动态地依赖输入表示。因此self-attention更容易捕获不同空间位置之间复杂的交互关系,但这种灵活性也更容易过拟合,特别是在数据有限的情况下。
  • 其次给定任意一对位置 \((i,j)\),对应的卷积权重 \(w_{i-j}\) 只关心它们之间的相对位移即 \(i-j\) 而不关心 \(i,j\) 的具体值。这就是我们常说的平移不变性,这一特性可以提高有限数据下模型的泛化性。由于使用了绝对位置编码ViT缺乏这一特性,这也解释了为什么在数据量有限时ConvNets的效果比Transformers要好。

  • 相比于卷积的局部感受野,Transformer具有全局感受野,更大的感受野提供了更多的上下文信息,提高了模型的容量,同时也需要更多的计算量。

根据上面的分析,一个理想的模型应该同时具备表1中的三点特性。根据式(1)和式(2),一个直接的想法是将一个全局静态卷积核和一个动态注意力矩阵相加,在softmax函数之前或之后都可以,如下

$$y_i^{\text {post }}=\sum_{j \in \mathcal{G}}\left(\frac{\exp \left(x_i^{\top} x_j\right)}{\sum_{k \in \mathcal{G}} \exp \left(x_i^{\top} x_k\right)}+w_{i-j}\right) x_j \quad or \quad y_i^{\mathrm{pre}}=\sum_{j \in \mathcal{G}} \frac{\exp \left(x_i^{\top} x_j+w_{i-j}\right)}{\sum_{k \in \mathcal{G}} \exp \left(x_i^{\top} x_k+w_{i-k}\right)} x_j \tag3$$

本文采用 \(y_i^{pre}\),其实这就是一种relative self-attention,和swin-transformer中的relative position bias是一模一样。

Vertical Layout Design

在找到了如何将卷积和注意力结合起来后,作者研究了如何stack layers来构建网络。

由于attention的计算量和输入分辨率是二次方关系,直接将式(3)应用于原始输入会导致计算量过大。因此作者采用了对原始输入进行降采样,在分辨率到了一个可控水平后再应用global relative attention的方式。对于降采样有两种方式,一是像原始的ViT那样直接采用一个大步长stride=16的卷积进行降采样,二是像ConvNets那样多个stage逐步降采样。

作者首先给出了5种设计选项,然后通过实验来比较效果。第一种是应用ViT stem,然后堆叠 \(L\) 个relative attention的Transformer block,将其表示为 \(\mathbf{ViT}_{REL}\)。

然后是multi-stage的方式,一共包含5个stage(S0, S1, S2, S3, S4),在每个stage的开始进行2x的降采样。S0是一个2层卷积的stem,S1是一个带有SE的MBConv block,前两个stage的设计是固定的。然后S2到S4我们使用MBConv或Transformer block,其中保证卷积stage一定在Transformer stage前面,这样我们就得到了四种不同的变体,C-C-C-C、C-C-C-T、C-C-T-T、C-T-T-T,其中C和T分别表示卷积和Transformer。

作者在ImageNet-1K和JFT数据集上进行了模型容量和泛化性能的比较,结果如图1所示

泛化性能表现

$$\mathrm{C}-\mathrm{C}-\mathrm{C}-\mathrm{C} \approx \mathrm{C}-\mathrm{C}-\mathrm{C}-\mathrm{T} \geq \mathrm{C}-\mathrm{C}-\mathrm{T}-\mathrm{T}>\mathrm{C}-\mathrm{T}-\mathrm{T}-\mathrm{T} \gg \mathrm{VIT}_{\mathrm{REL}}$$

模型容量对比

$$\mathrm{C}-\mathrm{C}-\mathrm{T}-\mathrm{T} \approx \mathrm{C}-\mathrm{T}-\mathrm{T}-\mathrm{T}>\mathrm{VIT}_{\mathrm{REL}}>\mathrm{C}-\mathrm{C}-\mathrm{C}-\mathrm{T}>\mathrm{C}-\mathrm{C}-\mathrm{C}-\mathrm{C}$$

最后在C-C-T-T和C-T-T-T之间选择,作者又做了一个迁移性测试,两个在JFT上预训练的模型在ImageNet-1K上微调30个epoch,然后比较它们的性能,结果如表2所示

可以看到C-C-T-T的迁移性明显更好,最终CoAtNet选择了C-C-T-T multi-stage的设计。

实验结果

不同大小的CoAtNet的配置如下

在ImageNet-1k上和其它模型的对比如下

代码解析

代码没什么好讲的,其中式(3)的 \(y_i^{pre}\) 就是swin transformer中的relative position bias,代码都是一样的,可以参考Swin Transformer(ICCV 2021)论文与代码解析-CSDN博客。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1890553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

antfu/ni 在 Windows 下的安装

问题 全局安装 ni 之后,第一次使用会有这个问题 解决 在 powershell 中输入 Remove-Item Alias:ni -Force -ErrorAction Ignore之后再次运行 ni Windows 11 下的 Powershell 环境配置 可以参考 https://github.com/antfu-collective/ni?tabreadme-ov-file#how …

登录功能和校验

基础版 controller package com.web.management.controller;import com.web.management.pojo.Emp; import com.web.management.pojo.Result; import com.web.management.service.EmpService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.anno…

STM32F1+HAL库+FreeTOTS学习4——任务挂起与恢复

STM32F1HAL库FreeTOTS学习4——任务挂起与恢复 任务挂起和恢复的API介绍代码实现 上一期我们学习了FreeRTOS中任务创建的两种方法,这一期我们学习任务的挂起和恢复。 任务挂起和恢复的API介绍 在 :STM32F1HAL库FreeTOTS学习1——FreeRTOS入门 的学习中&…

Webpack: 核心流程之Init、Make、Seal

概述 在前文中,我们了解了 Webpack 的基本应用、性能优化、Loader 与 Plugin 组件开发方方面面的知识,相信学习过这些内容之后,你已经对 Webpack 有相当深入的理解了,可以开始从更底层的视角,自底向上重新审视 Webpac…

R可视化数据必要格式——长格式

一、引言 我们在对数据进行可视化时遇到最头疼、最常见的问题是什么?数据问题。 因为我们往往不会从零自己编程进行可视化,往往是现有模板或积累,而正确的数据格式对应正确的图形包要求,一定会正确出图,所以只有一个问…

uniapp H5页面设置跨域请求

记录一下本地服务在uniapp H5页面访问请求报跨域的错误 这是我在本地起的服务端口号为8088 ip大家可打开cmd 输入ipconfig 查看 第一种方法 在源码视图中配置 "devServer": {"https": false, // 是否启用 https 协议,默认false"port&q…

AI与大模型工程师证书研修班报名啦!

人工智能大模型是指拥有超大规模参数(通常在十亿个以上)、超强计算资源的机器学习模型,能够处理海量数据,完成各种复杂任务,如自然语言处理、图像识别等。计算机硬件性能不断提升,深度学习算法快速优化&…

【笔记】太久不用redis忘记怎么后台登陆了

!首先启动虚拟机linux的centos7 2.启动finalshell 我的redis启动在根目录用 redis-server redis.conf --启动 systemctl status redis --查看redis状态 是否active redis-cli -h centos的ip地址 -p 你要用的redis端口号(默认为6379) -a 你…

基于xilinx FPGA的GTX/GTH/GTY位置信息查看方式(如X0Y0在bank几)

目录 1 概述2 参考文档3 查看方式4查询总结: 1 概述 本文用于介绍如何查看xilinx fpga GTX得位置信息(如X0Y0在哪个BANK/Quad)。 2 参考文档 《ug476_7Series_Transceivers》 《pg156-ultrascale-pcie-gen3-en-us-4.4》 3 查看方式 通过…

动态住宅代理IP的优势是什么?什么地方用到?

在大数据时代的背景下,代理IP成为了很多企业顺利开展的重要工具。代理IP地址可以分为住宅代理IP地址和数据中心代理IP地址。选择住宅代理IP的好处是可以实现真正的高匿名性,而使用数据中心代理IP可能会暴露自己使用代理的情况。 住宅代理IP是指互联网服务…

NSSCTF-Web题目22(弱比较、数组绕过)

目录 [鹤城杯 2021]Middle magic 1、题目 2、知识点 3、思路 [WUSTCTF 2020]朴实无华 4、题目 5、知识点 6、思路 [鹤城杯 2021]Middle magic 1、题目 2、知识点 代码审计,弱比较、数组绕过 3、思路 打开题目,出现源代码,我们进行审…

探讨命令模式及其应用

目录 命令模式命令模式结构命令模式适用场景命令模式优缺点练手题目题目描述输入描述输出描述题解 命令模式 命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其…

昂科烧录器支持MindMotion灵动微电子的32位微控制器MM32L052NT

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中MindMotion灵动微电子的32位微控制器MM32L052NT已经被昂科的通用烧录平台AP8000所支持。 MM32L052NT使用高性能的ARM Cortex-M0为内核的32位微控制器,最高工作频率…

助力游戏实现应用内运营闭环,融云游戏社交方案升级!

通信能力在所有应用场景都是必备组件,这源于社交属性带给应用的增长神话。 在游戏场景,玩家从少数核心向大众用户泛化扩展的过程,就是游戏深度融合社交能力的过程。 从单机到联机,游戏乐趣的升级 1996 年,游戏界顶流…

cesium楼层分户分析

文章目录 1. 区域绘制2. 户型切分3. 楼房分层4. 编辑房户信息5. 查看房户信息6. 数据库6.1. 楼栋数据库6.2. 单位数据库 7. 房户数据库 1. 区域绘制 点击绘制图形,激活画笔,右键结束绘制。 输入框可以更换地址前缀。 分户坐标是由绘制的多个点组成的&…

自动化任务工具 -- zTasker v1.94 绿色版

软件简介 zTasker 是一款功能强大的自动化任务管理软件,以其简洁易用、一键式操作而著称。软件体积小巧,启动迅速,提供了超过100种任务类型和30多种定时/条件执行方法,能够满足用户在自动化方面的多样化需求。 zTasker 支持定时任…

js学习--制作选项卡

选项卡制作 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>.text_one {width: 11.4%;height: 200px…

gdbserver 指南

文章目录 1. 前言2. gdbserver 远程调试2.1 准备工作2.1.1 准备 客户端 gdb 程序2.1.2 准备 服务端 gdbserver2.1.3 准备 被调试程序 2.2 调试2.2.1 通过网络远程调试2.2.1.1 通过 gdbserver 直接启动程序调试2.2.1.2 通过 gdbserver 挂接到已运行程序调试 2.2.2 通过串口远程调…

浏览器自动填充登录用户名和密码,如何清除

文章目录 刷新网页的时候浏览器会自动填充用户名和密码刷新之后效果图解决方案完整的login.vue代码核心代码原理(添加 readonly 和监听 focus 事件) 刷新网页的时候浏览器会自动填充用户名和密码 刷新之后效果图 解决方案 完整的login.vue代码 <template><div class…

linux系统主机查看系统日志(可查看被执行命令和远程登录等)

linux系统中&#xff0c;在/var/log/messages日志文件中&#xff0c;会记录显示系统所有运行的相关日志 如果被黑客攻击进来&#xff0c;可以在此日志做排查&#xff01; 例如&#xff1a;记录远程登录日志 记录执行命令日志