RepLKNet论文详解:31×31的超大卷积核模型

2023-10-31

一切都是为了顺利毕业而努力!这个读作Rep L P Net

论文名称:Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs

原论文地址:https://arxiv.org/pdf/2203.06717.pdf 

代码:GitHub - DingXiaoH/RepLKNet-pytorch: Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs (CVPR 2022)

目录

1. 论文主要干啥

2.大卷积核架构设计原因

2.1 优势

2.2 问题

2.3 大卷积核架构指代原则

3. RepLKNet整体架构

4. 总结


1. 论文主要干啥

(1)在卷积神经网络中,采用少量大卷积是比大量小卷积更好

(2)提出大卷积核神经网络架构RepLKNet,其卷积核尺寸能达到31*31,在分类,检测,分割上均显著强于传统的CNN架构,取得了和主流Vision Transformers相似或者更强的性能,运行的效率更高

(3)对于Vit 来说,Self-attention模块的大感受野是它取得优异性能的重要原因,在使用了大卷积核的设计之后,CNN架构也可以拥有相当的性能,并且在Shape bias等方面和Vit 的表现更为接近

2.大卷积核架构设计原因

2.1 优势

(1)相比直接加深,大卷积核可以更高效的提升有效感受野

根据有效感受野理论,有效感受野的尺寸正比于卷积核尺寸,跟卷积核的层数开根号成正比,就是说通过添加深度的方式提高感受野,不如直接把卷积核拉大对感受野的提升更为有效。

(2)大卷积核可以部分回避模型深度增加带来的优化难题

ResNet看起来可以做的很深,或者可以达到成百上千层,但是他的有效深度并不深,它的很多信号是shortcut层过去的,它并没有增加它的有效深度,如图,把ResNet从101层提高到152层,虽然深度提升了很多,但是他的有效感受野大小其实基本不变,但是如果把卷积核尺寸增大,从13增加到31,有效感受野扩大的趋势就非常显著。

(3)大卷积核对FCN-based(全卷积)的视觉下游任务提升更明显

2.2 问题

(1)大卷积核不够高效:计算量成倍增加

(2)大卷积核难以兼顾局部特征,容易出现过度平滑

(3)相比自注意力模块,卷积的归纳偏置过强,限制了在大数据集上的表示能力

2.3 大卷积核架构指导原则

(1)使用Depthwise等结构稀疏化卷积,辅以恰当的底层优化

(2)Identity shortcut在大卷积核设计中非常重要

(3)用小卷积核做重参数化,避免过度平滑的问题

(4)关注下游任务的性能,不能只看 ImageNet 点数高低

       对下游任务来说,感受野越大越好,大卷积核可以带来更大的感受野;对分类任务来说,形状比较重要,但是传统的CNN更多的是学习到纹理特征,增加卷积核可以使网络学习到更多的形状信息。

(5)在小feature map(特征图)上也可以用大卷积,常规分辨率就能训练大卷积核模型

       基于以上准则,参考 Swin Transformer 的宏观架构,提出了一种架构 RepLKNet,区别就是使用很大的Depthwise卷积,取代了Swin Transformer自带的window attention,用重参数化技术来重参数化大卷积,在推理的时候这些小卷积核将会吸收进大卷积,因此不会带来额外的计算复杂度。

3. RepLKNet整体架构

整体形式参考的Swin Transformer结构。主要在于把 attention 换成超大卷积和与之配套的结构,再加一点 CNN 风格的改动。根据以上五条准则,RepLKNet 的设计元素包括 shortcut、Depthwise超大 kernel、小 kernel 重参数化等。

RepLKNet的结构如图所示,各模块细节如下:

(1)Stem:由于RepLKNet的主要应用是下游任务,所以需要在网络前期捕捉更多的细节。在开始的stride=2 3x3卷积下采样之后接一个3x3深度卷积来提取低维特征,之后接一个1x1卷积和3x3深度卷积用于下采样

(2)Stages 1-4:RepLKNet的核心层,由RepLK Block以及ConvFFN堆叠而成,RepLK Block 包含了归一化层、1×1卷积和深度可分离卷积,以及最重要的残差连接。

根据准则3,每个深度卷积并行一个5x5深度卷积用于结构重参数。除了感受域和空间特征提取能力,模型的特征表达能力还和特征的维度有关。为了增加非线性和通道间的信息交流,在深度卷积前用1x1卷积增加特征维度。

(3)ConvFFN:参考transformers和MLPs网络使用的Feed-Forward Network(FFN),论文提出CNN风格的ConvFFN,包含短路连接、两个1x1卷积核GELU,使用了1×1卷积替代全连接层。同样的ConvFFN也使用了层间的残差连接。在应用时,ConvFFN的中间特征一般为输入的4倍。参照ViT和Swin,将ConvFFN放置在每个RepLK Block后面。

(4)Transition Blocks:放在stage之间,先用1x1卷积扩大特征维度,再通过两个3x3深度卷积来进行2倍下采样。
 

4. 总结

(1)大卷积有更大的感受野:单层大卷积核要比多层小卷积更有效。

(2)大卷积能够学到更多的形状信息:大卷积核的RepLKNet更注重形状特征,当卷积核减少时,RepLKNet-3则变为更注重上下文特征。

(3)密集(普通)卷积和空洞卷积:空洞卷积在相邻的卷积核中插入孔洞,使得原卷积核拥有了更大的感受野,是一个常用的扩大卷积范围的方法,论文对空洞深度卷积和普通深度卷积进行了对比,尽管最大感受域可能一样,但空洞深度卷积的表达能力要弱很多,准确率下降非常明显,也就是说虽然空洞卷积的感受域较大,但其计算用的特征非常少。RepLKNet用深度可分离卷积重新思考了大卷积核的使用,同样是扩大感受野,RepLKNet则取得了更好的效果,纯空洞卷积组成的MobileNet V2效果比原模型更差。这个空洞卷积还挺有意思的,等整明白了写一篇,先留着。

以上,over,水一篇,我能行!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RepLKNet论文详解:31×31的超大卷积核模型 的相关文章

  • 如何在 Ubuntu 18.04 上设置 WireGuard VPN

    WireGuard 是一种采用最先进加密技术的现代 VPN 虚拟专用网络 技术 与其他类似解决方案 例如 IPsec 和 相比OpenVPN WireGuard 更快 更容易配置且性能更高 它是跨平台的 几乎可以在任何地方运行 包括 Lin
  • Linux 中的 pkill 命令

    本文涵盖了 Linux 的基础知识pkill命令 pkill是一个命令行实用程序 它根据给定的条件向正在运行的程序的进程发送信号 可以通过进程的完整名称或部分名称 运行进程的用户或其他属性来指定进程 The pkill命令是的一部分proc
  • Linux 触摸命令

    touch 命令允许我们更新现有文件和目录的时间戳以及创建新的空文件 在本指南中 我们将通过实际示例和最常见命令选项的详细说明向您展示如何使用 touch 命令 Linux 文件时间戳 在讨论如何使用 touch 命令之前 我们首先回顾一下
  • 如何在 Ubuntu 上安装 Deb 文件(包)

    Deb 是所有基于 Debian 的发行版使用的安装包格式 Ubuntu 存储库包含数千个 deb 软件包 可以从 Ubuntu 软件中心或使用命令行安装apt and apt get公用事业 许多应用程序不包含在 Ubuntu 或任何第
  • 如何在 Ubuntu 20.04 上安装 Gradle

    Gradle 是一种通用工具 用于构建 自动化和交付软件 它主要用于 Java C 和 Swift 项目 Gradle 结合了 Ant 和Maven 与使用 XML 进行脚本编写的前辈不同 Gradle 使用Groovy 一种动态的 面向对
  • 在 CentOS 7 上安装 Odoo 11

    Odoo 是世界上最受欢迎的一体化商业软件 它提供一系列业务应用程序 包括 CRM 网站 电子商务 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo11 需要 Python 3 5 CentOS 存储库中不提供该版本
  • Linux安装jenv,灵活管理jdk(不同目录,采用不同的jdk)

    前文 总所周知 随着java版本的不断升级 jdk版本越来越高 但是互联网开发软件很多还维持在jdk1 8的时代 但是很多开源软件只至此java 11以上的版本 这就会导致很多程序上的不兼容或者报错 本文主要解决 linux不同目录下 采用
  • Linux下修改java.library.path

    第一步 打印出当前的java library path有哪些目录 执行 vi Test java 切换编辑模式 i 插入如下代码 public class Test public static void main String args S
  • Anaconda创建新环境,CondaHTTPError: HTTP 000 CONNECTION FAILED for url <http://mirrors.tuna.tsinghua问题解决过程

    两步即可 第一步 配置anaconda为清华源 在Anaconda Prompt终端依次执行这些命令 conda config add channels http mirrors tuna tsinghua edu cn anaconda
  • MQTT协议

    http www blogjava net yongboy category 54835 html
  • 树莓派的连接与AP局域网路由器配置

    文章目录 前言 1 树莓派的连接 1 1 本地连接 1 2 远程连接 2 AP路由器配置 2 1 配置无线局域网 2 2 配置以太网实现局域网 前言 树莓派的连接方式分为两种 本地和远程 也可以通俗的说是有本地设备还是就一台笔记本的情况 本
  • 解决:无法解析的外部符号__iob_func

    解决 无法解析的外部符号 iob func 原文 http blog csdn net hebbely article details 53780562 在使用 VS2015 下使用 libjpeg turbo 静态库 编译时报错了 cpp
  • 【用户增长】用户增长方法论及增长思维

    用户增长方法论及增长思维 1 什么是用户增长 1 1 用户增长的概念及内涵 用户增长不是简单的用户数量的增长 用户增长是一个系统化 综合化的体系 用户增长包含三个阶段的增长 综上三点 我们可以简单的将用户增长定义为 通过痛点 产品 渠道 创
  • 编写第一个Makefile(HelloWorld)

    什么是Makefile 讲makefie之前 先将将什么是make make是一个命令工具 是一个解释makefile中指令的命令工具 它可以简化编译过程里面所下达的指令 当执行 make 时 make 会在当前的目录下搜寻 Makefil
  • 建站系列(八)--- 本地开发环境搭建(WNMP)

    目录 相关系列文章 前言 一 准备工作 二 Nginx安装 三 MySQL安装 四 PHP安装及Nginx配置 五 总结 相关系列文章 建站系列 一 网站基本常识 建站系列 二 域名 IP地址 URL 端口详解 建站系列 三 网络协议 建站
  • ServletConfig对象

    目录 一 ServletConfig对象定义 二 ServletConfig对象作用 三 ServletConfig中的方法 一 ServletConfig对象定义 ServletConfig是什么 ServletConfig是一个接口 位
  • 3. 无重复字符的最长子串

    给定一个字符串 s 请你找出其中不含有重复字符的 最长子串 的长度 示例 1 输入 s abcabcbb 输出 3 解释 因为无重复字符的最长子串是 abc 所以其长度为 3 示例 2 输入 s bbbbb 输出 1 解释 因为无重复字符的
  • [转]iPhone多渠道自动打包Shell脚本介绍

    转 iPhone多渠道自动打包Shell脚本介绍 摘要 随着苹果手持设备用户的不断增加 ios应用也增长迅速 同时随着iphone被越狱越来越多的app 的渠道也不断增多 为各个渠道打包成了一件费时费力的工作 本文提供一种比较智能的打包方式
  • Java方法递归的简单例题

    目录 递归 1 递归求N 的阶乘和递归求1 2 3 4 n 2 按顺序打印一个数字的每一位 3 斐波那契数列和青蛙跳台阶问题 4 汉诺塔问题 递归 递归 简单来说 就是方法自己调用自己的过程 那要怎么样去实现递归呢 首先 我们需要去根据条件
  • 单页面(SPA)与服务端渲染(SSR),概念、区别,优缺点

    单页面 SPA 与服务端渲染 SSR 概念 区别 优缺点 什么是单页面应用 什么是多页面应用 二者有什么区别 1 单页面应用与多页面应用 单页面顾名思义就是整个应用只有一个Html页面 页面的切换其实是组件的切换 这样设计的好处就是不进行页

随机推荐

  • 多元回归分析

    多元回归分析 RF随机森林多输入单输出预测及变量重要度衡量 Matlab完整程序 目录 多元回归分析 RF随机森林多输入单输出预测及变量重要度衡量 Matlab完整程序 预测结果 评价指标 基本介绍 程序设计 参考资料 预测结果 评价指标
  • 进程——wait函数

    wait 的函数原型是 include
  • 使用Vue-Cli4.x配置文件路径别名

    vue脚手架版本升级到4 x以后 目录发生了很大的变化 有些配置需要我们自己去配置 自己项目中的目录结构 在根目录创建一个 vue config js文件 配置一下引入文件路径的别名 const path require path cons
  • C++报错 invalid operands to binary expression

    invalid operands to binary expression 二进制表达式的操作数无效 顾名思义 错误出在操作符上 对类型的操作问题 比如两种不能比较的类型进行了比较 比如我这里
  • 剑指Offer第三十一题:整数中1出现的次数(从1到n整数中1出现的次数)

    题目描述 求出1 13的整数中1出现的次数 并算出100 1300的整数中1出现的次数 为此他特别数了一下1 13中包含1的数字有1 10 11 12 13因此共出现6次 但是对于后面问题他就没辙了 ACMer希望你们帮帮他 并把问题更加普
  • 组合pig和hive来进行数据分析

    接到产品一个任务 需要对使用产品的用户操作系统来个分析 对清洗后的hive数据进行分析 发现 数据恰恰把操作系统数据 进行了过滤 只有到rawlog里去进行数据分析了 但由于rawlog没有和数据库进行关联 就只有先对rawlog进行初步手
  • Kotlin Lambda和高阶函数

    Lambda和高阶函数 本文链接 文章目录 Lambda和高阶函数 lambda 输出 返回类型 深入探究 泛型 inline原理探究 高阶函数 集合 泛型 自己实现Kotlin内置函数 扩展函数原理 companion object 原理
  • java解析zip文件(无需解压即可解析)

    个人原创博客 德鲁大叔撸代码 对zip文件直接进行解析 一条记录对应一行数据 public void readZipCvsFile File file throws Exception 获得输入流 文件为zip格式 zip可以包含对个文件
  • static详解

    一 修饰普通变量 1 局部变量 用法 static 变量类型 变量名 内存中的位置 静态存储区 初始化 未经初始化的局部静态变量会被自动初始化为 0 自动对象的值是任意的 除非他被显示初始化 作用域 作用域仍为局部作用域 当定义它的函数或者
  • APK安装过程及原理详解

    应用程序包的安装是android的特点 APK为AndroidPackage的缩写 Android应用安装有如下四种方式 1 系统应用安装 开机时完成 没有安装界面 2 网络下载应用安装 通过market应用完成 没有安装界面 3 ADB工
  • 一篇笔记带你了解STM32串口

    目录 1 数据通信的基础概念 1 1 串行 并行通信 1 2 单工 半双工 全双工通信 1 3 同步 异步通信 1 4 波特率 1 5 常见的串行通信接口 2 串口 RS 232 2 1 什么是串口 2 2 RS 232电平与CMOS TT
  • 通过Comparator接口理解策略模式

    在Java中 如果我们想要比较两个对象 一般会让这个对象实现Comparable接口 比如 在下面的代码中 Person类有两个属性 分别是height和weight 为了比较大小 我们这里重写了compareTo方法 通过height属性
  • Hive中的DML操作

    文章目录 Hive中的DML操作 一 Load 1 语法 2 实操案例 0 创建一张表 1 加载本地文件到hive 2 加载HDFS文件到hive中 二 Insert 1 将查询结果插入表中 1 语法 2 案例 2 将给定Values插入表
  • mapper中 标签 标签

    引言 include标签用法是引用sql片段 sql标签 是书写sql片段 被include 引用的 直接上代码
  • qRadioButton

    ifndef TESTRADIOBUTTON H define TESTRADIOBUTTON H include
  • SpringBootSecurity默认用户名和密码

    创建SpringBoot项目时勾选了SpringSecurity pom xml的配置
  • 如何爬取只支持手机端的微信小程序

    收到一个小任务 要爬取一个手机上的小程序的内容 因为最新的微信pc端是支持小程序的 以为很简单 但这个程序在pc微信端打不开 显示 请在手机上打开小程序 于是想到了用android模拟器 下了雷电 雷神 又装了Xposed JustTrus
  • [938]深度学习之CNN简介

    文章目录 深度学习概述 CNN 卷积神经网络 层级结构 数据输入层 卷积计算层 Relu激活层 池化层 全连接层 正则化 典型结构 深度学习概述 传统的机器学习和深度学习一个很重要的差别就是特征的自动提取 深度学习现在更适合处理一些原始信息
  • Spring Boot动态注册/删除http资源路径的方法

    需求 通过访问特定接口 生成动态URL 保证该URL一次有效 背景 一般情况下写Controller都是先在类上声明一个 RestController或是 Controller 然后在方法上加上url路径即可 其实也可以动态注册的 不用写
  • RepLKNet论文详解:31×31的超大卷积核模型

    一切都是为了顺利毕业而努力 这个读作Rep L P Net 论文名称 Scaling Up Your Kernels to 31x31 Revisiting Large Kernel Design in CNNs 原论文地址 https a