CMT: Convolutional Neural Networks Meet Vision Transformers概述
0.前言
1.针对的问题
当前将transformer应用于视觉领域的模型存在一些问题:
虽然将图片打成patch可以大大简化将transformer应用于基于图像的任务的过程,很好地捕获补丁之间的远程依赖关系。但是,它忽略了基于序列的NLP任务和基于图像的视觉任务之间的根本区别,例如,会忽略图片内部潜在的2D结构和空间局部信息。
transformer的块输出和输入大小固定,难以显示提取多尺度特征和低分辨率的特征。
计算复杂度太高。自注意力的计算与输入图片的大小成二次复杂度。
作者的目标是建立一个混合网络,同时利用cnn和transformer的优势。
2.主要贡献
1.提出了一种新颖的 CMT(CNNs meet transformers)架构用于视觉识别
2.提出了局部感知单元(LPU)和反向残差前馈网络(IRFFN),可以帮助捕获中间特征内的局部和全局结构信息,并提高网络的表示能力。
3.方法
与ViT相比,CMT第一阶段生成的特征能够保持更高的分辨率,对于其他密集预测任务是必不可少的。此外,采用了类似于CNNs的stage-wise架构设计,使用stide为2的四个卷积层,逐步降低分辨率(序列长度),灵活增加维数。分stage设计有助于提取多尺度特征,减轻高分辨率带来的计算量。使用平均池化代替ViT中的class token,以获得更好的分类结果。使用一种简单的缩放策略来获得CMT变体族。模型主要包括3个模块:
CMT stem,用于解决in-patch信息的建模问题,减小图片大小,提取细粒度特征和局部信息。首先是一个stride为2的 3×3 卷积,输出通道数为32,用于减小图片大小,然后是两个stride为1的 3×3 卷积以获得更好的局部信息提取。
Conv Stride,卷积+layer norm,缩小中间特征的尺寸(分辨率下采样2倍),并将其投影到更大的维度(维度放大2倍),以产生层次化表示。
CMT block,有助于在中间特征中同时捕捉局部和全局结构信息,提高网络的表示能力,包括局部感知单元,轻量多头自注意力和反向残差前馈网络。
局部感知单元,用于缓解绝对位置编码对平移不变性的破坏和视觉transformer对局部关系和patch内部的结构信息的忽略。

式中,X∈RH×W×d,H×W为当前阶段输入的分辨率,d为特征的维度,DWConv(·)表示深度卷积。本质就是,将输入图片信息,与 3*3 的卷积操作后相加,旨在增加空间信息,可以和 ViT 的绝对位置编码对应理解
轻量多头自注意力,在原始的self-attention模块中,输入 X 被线性变换为 query,key,value 再进行计算,运算成本高,此模块主要功能就是使用深度卷积计算代替了 key 和 value 的计算,从而减轻了计算开销。


具体来说,在进行注意力操作之前,用步长为k的k×k深度卷积减小K和V的空间大小

,另外,在每个自注意力模块中添加一个相对位置偏差B,B∈
是随机初始化且可学习的。学习到的相对位置偏差也可以很容易地通过双三次插值转换为具有不同尺寸m1×m2的B'∈Rm1×m2,从而使得CMT可以很方便的微调用于其他下游任务,最后输入h个头,每个头输出一个大小为n×d/h的序列。然后将这些h序列连接成一个n×d序列。
反向残差前馈网络,深度卷积增强局部信息的提取,残差结构来促进梯度的传播能力。vit的FFN是两个线性层中间隔着一个GELU激活,第一个线性层将维度扩展4倍,第二个线性层将其减小相同的倍数,本文中的IRFFN与反向残差块类似,由一个扩展层+深度卷积+投影层组成,但是改变了shortcut connectin的位置以获得更好的性能。

删除了激活层,但是在后面保留了batch归一化和最后一层线性层。

CMT: Convolutional Neural Networks Meet Vision Transformers概述的更多相关文章
- [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)
论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ...
- 论文笔记——MobileNets(Efficient Convolutional Neural Networks for Mobile Vision Applications)
论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications MobileNet由Go ...
- 【论文翻译】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文链接:https://arxi ...
- [论文理解] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications Intro MobileNet 我 ...
- 【论文阅读】Learning Dual Convolutional Neural Networks for Low-Level Vision
论文阅读([CVPR2018]Jinshan Pan - Learning Dual Convolutional Neural Networks for Low-Level Vision) 本文针对低 ...
- 深度学习论文翻译解析(六):MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications
论文标题:MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications 论文作者:Andrew ...
- 【MobileNet-V1】-2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications-论文阅读
2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications Andrew H ...
- 深度学习论文翻译解析(十七):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
论文标题:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文作者:Andrew ...
- [C6] Andrew Ng - Convolutional Neural Networks
About this Course This course will teach you how to build convolutional neural networks and apply it ...
- Deep learning_CNN_Review:A Survey of the Recent Architectures of Deep Convolutional Neural Networks——2019
CNN综述文章 的翻译 [2019 CVPR] A Survey of the Recent Architectures of Deep Convolutional Neural Networks 翻 ...
随机推荐
- python 之excel文件读取封装
import os import xlrd PATH = lambda p: os.path.abspath( os.path.join(os.path.dirname(__file__), p) ) ...
- jdk调度任务线程池ScheduledThreadPoolExecutor工作原理解析
jdk调度任务线程池ScheduledThreadPoolExecutor工作原理解析 在日常开发中存在着调度延时任务.定时任务的需求,而jdk中提供了两种基于内存的任务调度工具,即相对早期的java ...
- DTMF2num拨号音识别
说明 很多出题人可能会把手机或者其他设备打电话的拨号音作为一个题目技能中的考察点. 什么是DTMF? 双音多频的拨号键盘是4×4的矩阵,每一行代表一个低频,每一列代表一个高频.每按一个键就发送一个高频 ...
- [seaborn] seaborn学习笔记10-绘图实例(2) Drawing example(2)
文章目录 10 绘图实例(2) Drawing example(2) 1. Grouped violinplots with split violins(violinplot) 2. Annotate ...
- 巧用Fiddler开启运营商定制版路由器被阉割的功能,免去刷公版固件的风险
前言: 三大运营商都有自己的定制版路由器,一般会在自家营销活动中作为赠品送给用户 正巧我家里就有两台电信定制版的华为路由器,都是这两年双十一在某宝上买宽带时送的 两台路由器型号分别是TC7001和TC ...
- [Leetcode]旋转链表
题目 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li ...
- python3进行3des的加密解密
#秘钥长度正常24位,16位补齐第一个八位 import pyDes import base64 print('=======key1=======') keys='1234567890123456' ...
- Ubuntu 22.04 安装 utools 时的疑难杂症
Error: libcrypto.so.1.1 原因:libcrypto.so.1.1 该依赖的版本不对,ubuntu 默认是使用的 openssl3 的依赖 这个是 openssl1 的 wget ...
- OpenMP Parallel Construct 实现原理与源码分析
OpenMP Parallel Construct 实现原理与源码分析 前言 在本篇文章当中我们将主要分析 OpenMP 当中的 parallel construct 具体时如何实现的,以及这个 co ...
- 12月5日内容总结——JS基础知识及变量常量、基本数据类型、运算符、流程控制、函数、内置对象
目录 一.JS简介 简介 ECMAScript的历史 二.JS基础 1.注释语法 2.引入js的多种方式 3.结束符号 三.变量与常量 编写和运行js代码的两种方式 变量声明 四.基本数据类型 1.数 ...