图像分类任务ViT与CNN谁更胜一筹?DeepMind用实验证明

精华置顶

墙裂推荐!小白如何1个月系统学习CV核心知识:链接

点击@CV计算机视觉,关注更多CV干货

今天跟大家分享DeepMind发表的一篇技术报告,通过实验得出,CNN与ViT的架构之间虽然存在差异,但同等计算资源的预训练下两者性能非常相似。

  • 论文标题:ConvNets Match Vision Transformers at Scale

  • 机构:Google DeepMind

  • 论文地址:https://arxiv.org/pdf/2310.16764.pdf

  • 关键词:CNN、Vision Transformer

1.动机

卷积神经网络(ConvNets)是深度学习早期成功的原因。20多年前ConvNets首次商业化部署,2012年AlexNet在ImageNet挑战赛的成功重新点燃了人们对该领域的兴趣。近十年来,ConvNets(通常是ResNets)主导着计算机视觉基准;然而,近年来它们逐渐被Vision Transformers(ViTs)所取代。

与此同时,计算机视觉行业已经从主要评估随机初始化的网络在ImageNet等特定数据集上的性能,转向评估从web收集的大型通用数据集上预训练网络的性能。这就提出了一个重要的问题:使用差不多的计算资源进行预训练,Vision Transformers是否优于ConvNet架构?

尽管大多数研究人员认为Vision Transformer比ConvNets具有更好的扩展性,但几乎没有证据支持这一说法。研究ViTs的论文常与较差的ConvNet baseline(通常是原始的ResNet架构)进行比较。此外,最强的ViT模型使用超过500k TPU-v3 core hours的计算资源进行预训练,极大地超过了预训练ConvNet时所需的计算资源。

2.实验

作者评估了NFNet模型的拓展性,NFNet是与第一篇ViT论文同时发表的纯卷积架构,也是最后一个在ImageNet上的SOTA ConvNet。作者没有对模型体系结构或训练过程进行更改(除了调整简单的超参数,如学习率或epoch)。预训练时使用了多达110k TPU-v4 core hours的计算资源,在JFT-4B数据集上预训练模型,该数据集包含约40亿张标记图像,共有30k个类。作者观察了验证集损失和模型预训练时使用的计算资源之间的log-log关系。在ImageNet上进行微调后,使用同等计算资源的NFNet与ViTs的性能差不多,如下图所示。

上图为ImageNet Top-1 error,使用50个epoch微调预训练NFNet模型,在微调时使用Sharpness Aware Minimization(简称SAM),使用了随机深度和dropout。微调时输入图片分辨率为384×384,评估时输入图片分辨率为480×480。图中2个轴都是对数缩放的。随着预训练时使用的计算资源的增加,性能持续提高。最大的模型(F7+)与使用相当计算资源预训练的vit有相当的性能。当使用Repeated Augmentation(RA)进行微调时,模型的性能进一步提高。

作者在JFT-4B数据集上训练了一系列不同深度和宽度的NFNet模型。每个模型都使用余弦衰减学习率,每个模型训练的epoch数量在0.25-8之间。为不同epoch数量的训练分别调整基础学习率。作者根据训练结束时使用130k张图片计算的验证损失和训练模型时所需的计算资源绘制了下图。F7和F3的宽度相同,但F7的深度是F3的2倍,类似地,F3的深度是F1的2倍,F1的深度是F0的两倍。F3+和F7+的深度与F3和F7相同,但宽度较大。使用带有动量和自适应梯度裁剪(Adaptive GradientClipping,简称AGC)的SGD进行训练,batch size为4096,在训练时使用的图片尺寸,在评估时使用的图片尺寸。NFNet网络结构和训练流程的细节,作者参考了NFNet原论文《High-performance large-scale image recognition without normalization》,原文中6.2节描述了在JFT数据集上的预训练细节。需要注意的是,在训练前,作者从JFT-4B数据集中删除了与ImageNet训练集和验证集相似的图像。

上图描述了NFNets在JFT-4B数据集上的损失与训练时使用的计算资源。2个轴都是对数缩放的,每条曲线中不同的点表示使用不同epoch数量的训练模型。上图表示了验证损失和预训练计算资源之间具有log-log线性趋势。

最优的模型规模和最优的epoch数量(达到最小验证损失)都随着投入的计算资源的增加而增加。

尽管两种模型架构之间存在显著差异,但同等规模的预训练NFNets性能与预训练Vision Transformers性能非常相似。

3.总结

决定结构合理的模型的性能的最重要因素是训练时使用的计算资源和数据。尽管ViTs在计算机视觉方面的成功令人印象深刻,但没有强有力的证据表明,预训练的ViTs优于预训练的ConvNets。然而,ViTs在特定的上下文中可能具有实际的优势,例如能够跨模态使用相似的模型组件。

CV计算机视觉交流群

群内包含目标检测、图像分割、目标跟踪、Transformer、多模态、NeRF、GAN、缺陷检测、显著目标检测、关键点检测、超分辨率重建、SLAM、人脸、OCR、生物医学图像、三维重建、姿态估计、自动驾驶感知、深度估计、视频理解、行为识别、图像去雾、图像去雨、图像修复、图像检索、车道线检测、点云目标检测、点云分割、图像压缩、运动预测、神经网络量化、网络部署等多个领域的大佬,不定期分享技术知识、面试技巧和内推招聘信息

想进群的同学请添加微信号联系管理员:PingShanHai666。添加好友时请备注:学校/公司+研究方向+昵称

推荐阅读:

CV计算机视觉每日开源代码Paper with code速览-2023.10.27

CV计算机视觉每日开源代码Paper with code速览-2023.10.26

CV计算机视觉每日开源代码Paper with code速览-2023.10.25

CV计算机视觉每日开源代码Paper with code速览-2023.10.24

CV计算机视觉每日开源代码Paper with code速览-2023.10.23

使用目标之间的先验关系提升目标检测器性能

HSN:微调预训练ViT用于目标检测和语义分割,华南理工和阿里巴巴联合提出

EViT:借鉴鹰眼视觉结构,南开大学等提出ViT新骨干架构,在多个任务上涨点

如何优雅地读取网络的中间特征?

港科大提出适用于夜间场景语义分割的无监督域自适应新方法

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能AI 全栈体系(九)

第一章 神经网络是如何实现的 如何用神经网络处理不等长文本的方法? 八、循环神经网络(RNN: Recurrent Neural Network) 处理不等长文本的神经网络 – 循环神经网络 RNN。 1. 从句子理解说起 上次讲了用词向量表示词,一句话也…

北邮22级信通院数电:Verilog-FPGA(7)第七周实验(2):BCD七段显示译码器(关注我的uu们加群咯~)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 关注作者的uu们可以进群啦~ 目录 一.verilog代码…

Kubernetes Label Selector

Author:rab 目录 前言一、Labels1.1 定义1.2 案例1.2.1 节点标签1.2.2 对象标签 二、Selector2.1 Node Selector2.2 Service Selector2.3 Deployment Selector2.4 StatefulSet Selector2.5 DaemonSet Selector2.6 HorizontalPodAutoscaler Selector2.7 NetworkPolic…

【C】柔性数组

柔性数组 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。 例如: 柔性数组的特点 结构中的柔性数组成员前…

ZKP7.1 Polynomial Commitments Based on Error-correcting Codes (Background)

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 7: Polynomial Commitments Based on Error-correcting Codes (Yupeng Zhang) Recall: common paradigm for efficient SNARK A polynomial commitment scheme A polynomial interactive oracle proof (IOP) SNARK for gene…

CAN总线通信协议

Reference video: 趋近于完美的通讯 CAN总线!4分钟看懂! CAN通信精华整理,汽车工程师必备技能,一个视频带你轻松掌握! 写在前面:CAN通信就三个要点 - 波特率的配置 - 过滤寄存器的配置与理解(…

数组与链表算法-单向链表算法

目录 数组与链表算法-单向链表算法 C代码 单向链表插入节点的算法 C代码 单向链表删除节点的算法 C代码 对单向链表进行反转的算法 C代码 单向链表串接的算法 C代码 数组与链表算法-单向链表算法 在C中,若以动态分配产生链表节点的方式,则可以…

“第五十五天”

定点数: 原码的乘法: 乘法的符号位是单独处理的(通过对被乘数和乘数的符号位进行异或实现),数值位去绝对值进行运算。这里的乘法实际上是通过多次加法实现的。 这里被乘数是放在x寄存器,乘数放在MQ寄存器…

【音视频|wav】wav音频文件格式详解

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

洛谷 B2009 计算 (a+b)/c 的值 C++代码

目录 题目描述 AC Code 切记 题目描述 题目网址&#xff1a;计算 (ab)/c 的值 - 洛谷 AC Code #include<bits/stdc.h> using namespace std; int main() {int a,b,c;cin>>a>>b>>c;cout<<(ab)/c<<endl;return 0; } 切记 不要复制题…

Netty复习:(2)IdleStateHandler的用法

一、handler定义&#xff1a; package handler;import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter;public class MyChatServerHandler3 extends ChannelInboundHandlerAdapter {Overridepublic void userEventTriggered(…

Pytorch指定数据加载器使用子进程

torch.utils.data.DataLoader(train_dataset, batch_sizebatch_size, shuffleTrue,num_workers4, pin_memoryTrue) num_workers 参数是 DataLoader 类的一个参数&#xff0c;它指定了数据加载器使用的子进程数量。通过增加 num_workers 的数量&#xff0c;可以并行地读取和预处…

分布式:一文吃透分布式锁,Redis/Zookeeper/MySQL实现

目录 一、项目准备spring项目数据库 二、传统锁演示超卖现象使用JVM锁解决超卖解决方案JVM失效场景 使用一个SQL解决超卖使用mysql悲观锁解决超卖使用mysql乐观锁解决超卖四种锁比较Redis乐观锁集成Redis超卖现象redis乐观锁解决超卖 三、分布式锁概述四、Redis分布式锁实现方案…

Linux 文件系统简介

文章目录 一、磁盘简介1.1 简介1.2 机械硬盘与固态硬盘1.2.1 机械磁盘&#xff08;HDD&#xff09;1.2.2 固态磁盘&#xff08;SSD&#xff09;1.2.3 I/O操作 二、文件系统简介2.1. 简介2.2 文件系统特点2.3 Linux文件系统 三、文件数据存储方式3.1 连续存储3.2 链接表存储3.3 …

前端知识与基础应用#2

标签的分类 关于标签我们可以分为 &#xff1a; 单标签&#xff1a;img, br hr 双标签&#xff1a;a&#xff0c;h,div 按照属性可分为&#xff1a; 块儿标签&#xff08;自己独自占一行&#xff09;&#xff1a;h1-h6, p,div 行内&#xff08;内联&#xff09;标签&#xff08…

One-to-N N-to-One: Two Advanced Backdoor Attacks Against Deep Learning Models

One-to-N & N-to-One: Two Advanced Backdoor Attacks Against Deep Learning Models----《一对N和N对一&#xff1a;针对深度学习模型的两种高级后门攻击》 1对N&#xff1a; 通过控制同一后门的不同强度触发多个后门 N对1&#xff1a; 只有当所有N个后门都满足时才会触发…

3.5每日一题(求齐次方程组的特解)

1、判断类型选择方法&#xff1a;看出为齐次方程&#xff08;次幂都一样&#xff09; 2、 化为变量可分离&#xff1b;按变量可分离的方法求出通解&#xff08;此题等式两边同时除以 x &#xff09; 3、把x1&#xff0c;y0带入通解&#xff0c;定常数C&#xff0c;求出特解 …

用大白话聊聊SpringBoot的自动配置原理(面试题详解)

首先&#xff0c;SpringBoot的自动配置不等于自动装配&#xff01; 自动配置是Auto-Configuration&#xff0c;针对的是SpringBoot中的配置类&#xff0c; 而自动装配是Autowire&#xff0c;针对的是Spring中的依赖注入。 进入主题&#xff1a; 自动配置简单来说就是自动去把…

java八股文(基础篇)

面向过程和面向对象的区别 面向过程&#xff1a;在解决问题时&#xff0c;特别自定义函数编写一步一步的步骤解决问题。 面向对象&#xff1a;其特点就是 继承&#xff0c;多态&#xff0c;继承&#xff0c;在解决问题时&#xff0c;不再注重函数的编写&#xff0c;而在于注重…

Spring Boot 3系列之一(初始化项目)

近期&#xff0c;JDK 21正式发布&#xff0c;而Spring Boot 3也推出已有一段时间。作为这两大技术领域的新一代标杆&#xff0c;它们带来了许多令人振奋的新功能和改进。尽管已有不少博客和文章对此进行了介绍&#xff0c;但对于我们这些身处一线的开发人员来说&#xff0c;有些…