RevCol:大模型架构设计新范式,给神经网络架构增加了一个维度!

news2024/9/22 4:09:36

点击蓝字 关注我们

关注并星标

从此不迷路

计算机视觉研究院

04474e249c58287e7242c8e2624569c9.gif

2647ca0681536c6126d821efcdea6f76.gif

公众号ID计算机视觉研究院

学习群扫码在主页获取加入方式

2e4c3262665e2a3107e6688086e8757e.png

论文地址:https://arxiv.org/pdf/2212.11696.pdf

项目代码:https://github.com/megvii-research/RevCol

计算机视觉研究院专栏

Column of Computer Vision Institute

提出了一种新的神经网络设计范式可逆Column网络(RevCol)。RevCol的主体由多个子网络的副本组成,分别命名为columns,子网络之间采用多级可逆连接。

59e54a67e873c72bc9817720a4fc73c8.gif

01

总  述

这样的架构方案使RevCol的行为与传统网络大不相同:在前向传播过程中,RevCol中的特征在通过每一列时都会逐渐解开,其总信息会被保留,而不是像其他网络那样被压缩或丢弃。

实验表明,CNN风格的RevCol模型可以在图像分类、目标检测和语义分割等多项计算机视觉任务上取得非常有竞争力的性能,尤其是在参数预算大、数据集大的情况下。例如,在ImageNet-22K预训练后,RevCol-XL在ImageNet-1K上获得88.2%的准确度。给定更多的预训练数据,最大的模型RevCol-H在ImageNet-1K上达到90.0%,在COCO检测最小值集上达到63.8%的APbox,在ADE20k分割上达到61.0%的mIoU。

据所知,这是纯(静态)CNN模型中最好的COCO检测和ADE20k分割结果。此外,作为一种通用的宏架构方式,RevCol还可以引入到Transformer或其他神经网络中,这被证明可以提高计算机视觉和NLP任务中的性能。

0fcbdc732bc8ec1e78b834c319186e72.gif

02

背景&动机

Information Bottleneck principle(IB)统治着深度学习世界。考虑一个典型的监督学习网络,如下图a所示:靠近输入的层包含更多的低级信息,而靠近输出的特征具有丰富的语义。

c8cce44c161c4ca92f04fd10406bfbc6.png

换句话说,在逐层传播期间,与目标无关的信息被逐渐压缩。尽管这种学习范式在许多实际应用中取得了巨大成功,但从特征学习的角度来看,它可能不是最佳选择——如果学习到的特征被过度压缩,或者学习到的语义信息与目标任务无关,则下游任务的性能可能较差,特别是在源任务和目标任务之间存在显著的领域差距的情况下。研究人员付出了巨大的努力,使学习到的特征更加普遍适用,例如通过自监督的预训练或多任务学习。

在今天分享中,研究者主要关注另一种方法:建立一个网络来学习解耦表征。与IB学习不同,去解耦特征学习不打算提取最相关的信息,而丢弃不太相关的信息;相反,它旨在将与任务相关的概念或语义词分别嵌入到几个解耦的维度中。同时,整个特征向量大致保持与输入一样多的信息。这与生物细胞中的机制非常相似,每个细胞共享整个基因组的相同拷贝,但具有不同的表达强度。因此,在计算机视觉任务中,学习解耦特征也是合理的:例如,在ImageNet预训练期间调整高级语义表示,同时,在目标检测等下游任务的需求下,还应在其他特征维度上保持低级信息(如边缘的位置)。

上图(b)概述了主要想法:RevCol,它在很大程度上受到了GLOM大局的启发。网络由结构相同(但其权重不一定相同)的N个子网络(命名列)组成,每个子网络接收输入的副本并生成预测。因此,多级嵌入,即从低级到高度语义表示,存储在每一列中。此外,引入可逆变换以在没有信息损失的情况下将多级特征从第i列传播到第(i+1)列。在传播过程中,由于复杂性和非线性增加,预计所有特征级别的质量都会逐渐提高。因此,最后一列(图中的第N列)1(b))预测了输入的最终解耦表示。

02d3a1ec113b65738fd9082913a1bdd8.gif

03

新框架

接下来,我们将介绍RevCol的设计细节。上图b说明了顶层体系结构。请注意,对于RevCol中的每一列,为了简单起见,直接重用ConvNeXt等现有结构,因此在以下主要关注如何构建列之间的可逆连接。此外,在每个列的顶部引入了即插即用的中间监督,这进一步提高了训练收敛性和特征质量

MULTI-LEVEL REVERSIBLE UNIT

在新提出的网络中,可逆变换在不损失信息的情况下对特征解耦着关键作用,其见解来自可逆神经网络。其中,首先回顾了RevNet的一部代表作。如下图a所示,RevNet首先将输入x划分为两组,x0和x1。

11fc8a4d456fb0e52c0a466311be1d82.png

然后,对于后面的块,例如块t,它将前面两个块的输出xt−1和xt−2作为输入,并生成输出xt。块t的映射是可逆的,即xt−2可以由两个后验块xt−1和xt重构。形式上,正向和反向计算遵循方程†:

10d2ef3c56514d0a385e9c040e5df93b.png

为了解决上面提及的问题,将上面等式概括为以下形式:

f485c59da1f37433fb745fa6275d2ddb.png

因此,可以将上面方程重组为多列形式,如下图b所示。每列由一组内的m个特征图及其母网络组成。将其命名为多级可逆单元,这是RevCol的基本组成部分。

9d82bcd79a0d925ed86c94e87cbfe8bf.png

REVERSIBLE COLUMN ARCHITECTURE

  • 宏观设计

c6e1b3321c2e99831e21d5808ab00d61.png

上图2c阐述了框架设计。按照最近模型的常见做法,首先通过补丁嵌入模块将输入图像分割成不重叠的补丁。然后,将补丁馈送到每个子网络(列)中。列可以用任何传统的单列架构来实现,例如ViT或ConvNeXt。从每一列中提取四级特征图,以在列之间传播信息;例如,如果列是用广泛使用的层次网络实现的,可以简单地从每个阶段的输出中提取多分辨率特征。

对于分类任务,只使用最后一列中最后一级(第4级)的特征图来获取丰富的语义信息。

对于其他下游任务,如目标检测和语义分割,在最后一列中使用所有四个级别的特征图,因为它们包含低级和语义信息。

  • 微观设计

0d0cf2b2037b0d9062b602109fb4a08d.png

每一个层级中,先用一个Fusion单元把不同尺寸的输入调整到同一个shape,后面再经过一堆ConvNeXt Blocks得到输出,这些就是公式中的Ft(·),然后再和Reversible operation的输入加和得到最终结果。

值得注意的是,把原本的ConvNeXt block中7x7的kernel size改成了3x3,大kernel的收益在Revcol上有限,但小kernel特别快。

1ee8463d197570bbd1b2d25fb42ad849.gif

04

实验

5d6e179765beedb84d7526cf1ad85641.png

除了2B参数的模型以外,还收集了168Million的私有数据集,weakly-label的标签用来预训练。XL模型(800M param),在22k下能达到88.2%,经过Megdata-168M的训练后能够涨到89.4%。Huge 224 pretrain,640x640 Finetune能够达到90.0%Top-1 Accuracy。这个模型的训练开销:预训练总共1600个ImageNet Epochs,训练一次使用80块A100,14天。

4b136e2fa6e8d88ab87e880e9388f301.png

cf72aeb05a320d6ddcf2c0e82cd72e15.png

© THE END 

转载请联系本公众号获得授权

93491488fd6a57891706cc12c1c31dc5.gif

计算机视觉研究院学习群等你加入!

ABOUT

计算机视觉研究院

计算机视觉研究院主要涉及深度学习领域,主要致力于目标检测、目标跟踪、图像分割、OCR、模型量化、模型部署等研究方向。研究院每日分享最新的论文算法新框架,提供论文一键下载,并分享实战项目。研究院主要着重”技术研究“和“实践落地”。研究院会针对不同领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

3a335b8b810c5fba3bef81dbe74ad1e9.png

往期回顾

01

|清华大学提出LiVT,解决不平衡标注数据

02

|Transformer工业部署落地!

03

|AI大模型落地不远了

04

|华为诺亚极简网络,靠13层就拿下83%精度

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

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

相关文章

把金融航母开进智能峡湾,总共分几步?

试想一下,有这么一家街头小店。夫妻两个勤奋经营,诚信待客,广受街里街坊的欢迎。他们流水稳定,蒸蒸日上,商业信誉很好,甚至是非物质文化遗产的传承者。这样一家店,在扩大经营,拓展业…

SpringBoot集成WebSocket实现消息实时推送(提供Gitee源码)

前言:在最近的工作当中,客户反应需要实时接收消息提醒,这个功能虽然不大,但不过也用到了一些新的技术,于是我这边写一个关于我如何实现这个功能、编写、测试到部署服务器,归纳到这篇博客中进行总结。 目录 …

C语言代码函数栈帧的创建与销毁(修炼内功)

目录 在前期的学习中我们可能有很多困惑 例如:局部变量是怎么创建的 为什么局部变量的值是随机值 函数是怎么样传参的 传参的顺序是什么 形参和实参的关系是什么 函数调用是怎么做的 函数掉调用结束后怎么返回的 这篇博客我们来修炼自己的内功,掌握好这篇…

【MATLAB第42期】基于MATLAB的贝叶斯优化决策树分类算法与网格搜索、随机搜索对比,含对机器学习模型的评估度量介绍

【MATLAB第42期】基于MATLAB的贝叶斯优化决策树分类算法与网格搜索、随机搜索对比,含对机器学习模型的评估度量介绍 网格搜索、随机搜索和贝叶斯优化是寻找机器学习模型参数最佳组合、交叉验证每个参数并确定哪一个参数具有最佳性能的常用方法。 一、 评估指标 1、…

STM32F103基于HAL工程挂载FatFS驱动SD卡

STM32F103基于HAL工程挂载FatFS驱动SD卡 📌基于标准库驱动《STM32挂载SD卡基于Fatfs文件系统读取文件信息》 🎬驱动实验效果: 🔨通过STM32cubemx配置SPI1作为访问SD、TF卡通讯方式。 🔧在STM32cubemx配置中挂载中…

Scala入门【变量和数据类型】

目录 Scala基本认知 Hello Scala 方法的定义 伴生对象 Java: Scala: 2、变量和数据类型 2.1、注释 2.2、变量和常量 Java中的变量和常量 Scala基本语法 2.3、标识符 2.4、字符串 基本语法 2.5、标准输入输出 基本语法 2.6、文件的读写 …

6-8 二分查找

今天是端午节,祝大家端午节快乐~ 竟然这样,还不点点赞。 言归正传┏ (゜ω゜)☞ 目录 引入 二分查找算法思想 时间复杂度O(logN) 二分查找算法描述 二分查找算法的框架如下: 例题1: 例题2&#x…

秒懂SpringBoot之如何集成SpringDoc(全网目前最新最系统最全面的springdoc教程)

[版权申明] 非商业目的注明出处可自由转载 出自:shusheng007 文章目录 概述概念解释SpringDoc使用简单集成配置文档信息配置文档分组使用注解TagOperationSchemaParameterParametersApiResponses 和ApiResponse 认证授权无需认证需要认证 总结源码 概述 近来颇为懈…

13. WebGPU 正交投影

在上一篇文章中,讨论了矩阵的工作原理。讨论了如何通过 1 个矩阵和一些神奇的矩阵数学来完成平移、旋转、缩放,甚至从像素到裁剪空间的投影。实现 3D 操作 只需要再向前迈一小步。 在之前的 2D 示例中,将 2D 点 (x, y) 乘以 3x3 矩阵。要实现…

【机器学习】——续上:卷积神经网络(CNN)与参数训练

目录 引入 一、CNN基本结构 1、卷积层 2、下采样层 3、全连接层 二、CNN参数训练 总结 引入 卷积神经网络(CNN)是一种有监督深度模型框架,尤其适合处理二维数据问题,如行人检测、人脸识别、信号处理等领域,是带…

19c rac添加节点

在正常的节点 [rootdb1 ~]# xhost access control disabled, clients can connect from any host [rootdb1 ~]# su - grid ASM1:/home/griddb1>export DISPLAY:1.0 ASM1:/home/griddb1>$ORACLE_HOME/gridSetup.sh [rootdb2 ~]# /tmp/GridSetupActions2021-09-16_…

基于Nginx1.22+PHP8+MySQL8安装Discuz! X3.5

基于Nginx1.22PHP8MySQL8安装Discuz! X3.5 1. 安装PHP82. 安装MySQL83. 配置Nginx1.224. 安装Discuz! X3.5 1. 安装PHP8 更新系统: yum update安装EPEL存储库: yum install epel-release安装Remi存储库(提供了最新的 PHP 版本)&…

【十三】druid 原理解析

druid 原理解析 先前写了一篇博客关于druid集成相关的,这里来分析一下druid原理,结合这两篇文章希望读者能够把druid理解透彻。 一、druid介绍 Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能&…

【前端JS交互篇】ECMA核心语法 ——常量、变量、数据类型、各种弹框

一、javascript简介 1.1 Javascript简史 在WEB日益发展的同时,网页的大小和复杂性不断增加,受制于网速的限制,为完成简单的表单验证而频繁地与服务器交换数据只会加重用户的负担,当时走在技术革新最前沿的Netscape(网…

阿里云服务器的弹性计算能力如何?是否支持按需扩展和缩减?

阿里云服务器的弹性计算能力如何?是否支持按需扩展和缩减?   【本文由阿里云代理商[聚搜云www.4526.cn]撰写】   阿里云服务器,作为业界领先的云计算服务提供商,其弹性计算能力是如何体现的?是否真的支持按需扩展和…

定制你的Blocks UI布局:Gradio的Block Layouts模块介绍

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

【python】如何在 Python 中创建相关矩阵

目录 一、说明 二、相关理论 2.1 何为相关 2.2 相关的前提 2.3 Correlation Matrix是个啥? 2.4 皮尔逊相关系数 三、Python演示如何创建相关矩阵 四、数据可视化观察 五、后记 一、说明 本教程介绍如何在 Python 中创建和解释相关矩阵。然而,创…

English Learning - L3 作业打卡 Lesson7 Day47 2023.6.20 周二

English Learning - L3 作业打卡 Lesson7 Day47 2023.6.20 周二 引言🍉句1: Growing up in a hot Las Vegas desert, all I wanted was to be free.成分划分弱读连读语调 🍉句2: I would daydream about traveling the world, living in a place where i…

有三个线程,分别只能打印A,B和C要求按顺序打印ABC,打印10次(多种方法,小白也懂)

目录 第一种方法:使用LockSupport的park和unpark功能(推荐) 第二种方式:synchronizedwaitnotify 第三种:暴力循环方法(不推荐) 第一种方法:使用LockSupport的park和unpark功能(推荐) 简单来说我们有一个名为LockSupport的方法 park就是阻塞当前进程 unpark就是取消阻塞让其…

DRIFTINGBLUES: 4实战演练

文章目录 DRIFTINGBLUES: 4实战演练一、前期准备1、相关信息 二、信息收集1、端口扫描2、访问网站3、查看源码4、解密5、访问网页6、解密7、访问网页8、微信扫一扫9、爆破FTP10、登录FTP11、下载文件并查看12、写入SSH密钥并上传13、SSH连接 三、后渗透1、查看第一个flag2、查找…