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

news2025/2/24 8:22:37

精华置顶

墙裂推荐!小白如何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.coloradmin.cn/o/1148913.html

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

相关文章

力扣刷题 day59:10-29

1.子集 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 方法一:二进制枚举 #方法一:二进制枚举 def subsets(nums)…

C# “依赖注入” 中的 “三种生命周期”

🚀简介 依赖注入(Dependency Injection,简称DI)是一种实现控制反转(IoC)的技术,用于减少代码之间的耦合度。通过依赖注入,一个类可以从外部获取其依赖的对象,而不是自己…

MyBatis-Plus 与 Druid 结合 Dynamic-datasource 实现多数据源操作数据库

MyBatis-Plus 官网:https://baomidou.com/ MyBatis-Plus 官方文档:https://baomidou.com/pages/24112f/ dynamic-datasource 文档(付费):https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611 创建数据库…

EM算法解析+代码

大纲 数学基础:凸凹函数,Jensen不等式,MLEEM算法公式,收敛性HMM高斯混合模型 一、数学基础 1. 凸函数 通常在实际中,最小化的函数有几个极值,所以最优化算法得出的极值不确实是否为全局的极值&#xff…

腾讯云2023年双11服务器优惠活动及价格表

腾讯云2023年双11大促活动正在火热进行中,腾讯云推出了一系列服务器优惠活动,云服务器首年1.8折起,买1年送3个月!境外云服务器15元/月起,买更多省更多!下面给大家分享腾讯云双11服务器优惠活动及价格表&…

Ps:平滑选区边缘

Ps 中某些传统的选区工具,如快速选择工具等,在进行选区后容易产生锯齿状等不规则的边界。此时,可利用“选择并遮住”来平滑选区边缘。 ◆ ◆ ◆ 操作方法与技巧 1、(可选)新建纯色填充图层,并置于原图图层…

【论文精读1】MVSNet架构各组织详解

一、训练流程 1. 特征提取 提取N个输入图像的深层特征用作深度匹配 与传统三维重建方法类似,第一步是提取图像特征(SIFT等特征子),不同点在于本文使用8层的卷积网络从图像当中提取更深层的图像特征表示,网络结构如下…

ProEssentials pro v9 历史更新列表--注册版

ProEssentials标准版和专业版之间的唯一区别是可以渲染的数据点和注释的数量。标准版与专业版一样拥有所有的功能和接口。所有版本包括WPF、WinForm、WebForm、ActiveX、VCL和DLL接口。标准版仅限于8000个数据点和800个图表注释。此限制适用于每个控件实例。你可以运行多个控件…

《数字图像处理-OpenCV/Python》连载(33)使用掩模图像控制处理区域

**本书京东优惠购书链接:https://item.jd.com/14098452.html** **本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html** 第 5 章 图像的算术运算 在OpenCV中,图像是以Numpy数组格式存储的,图像的算术运…

抓包分析DSCP字段在FTP/RSTP协议中的应用

抓包分析DSCP字段在FTP协议中的应用 简介 本文介绍DSCP字段的作用,以及抓包分析DSCP字段在FTP协议中的应用。最后通过实验证明有可能DSCP字段实际上对普通用户没啥用,原因是运营商可能会将用户设置的DSCP字段重置。 DSCP IP报文中有个TOS字段 &#…

C语言选择排序

1.选择排序(Selection sort) 选择排序是简单直观的排序算法。 基本思想:从首元素开始,首元素与它后面的所有元素进行比较,找到数列中最小的元素,与首元素值交换。然后下一个元素与它后面的元素比较,得到第二小的元素…

Zynq UltraScale+ XCZU5EV 纯VHDL解码 IMX214 MIPI 视频,2路视频拼接输出,提供vivado工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优越性4、详细设计方案设计原理框图IMX214 摄像头及其配置D-PHY 模块CSI-2-RX 模块Bayer转RGB模块伽马矫正模块VDMA图像缓存Video Scaler 图像缓存DP 输出 5、vivado工程详解PL端FPGA硬件设计…

C语言实现输入 n 个字符串,把其中以字母 A 打头的字符串输出

完整代码&#xff1a; // 输入 n 个字符串&#xff0c;把其中以字母 A 打头的字符串输出。 #include<stdio.h> #include<stdlib.h> //字符串的最大长度 #define N 20int main(){int n;printf("请输入字符串个数n:");scanf("%d",&n);//读取…

使用OBS Browser+访问华为云OBS存储【Windows】

背景 项目中使用华为云 S3 存储,java 代码中通过华为云 OBS 提供的esdk-obs-java 来访问文件。 但是,通过 JAVA SDK 方式不太方便运维,所以我们需要一款可视化的客户端软件。 华为云 OBS 自身也提供了一款客户端软件,名为 OBS Browser+。 OBS Browser+简介 OBS Browse…

【洛谷算法题】P5709-Apples Prologue / 苹果和虫子【入门2分支结构】

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5709-Apples Prologue / 苹果和虫子【入门2分支结构】&#x1f30f;题目描述&am…

深入理解指针3

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 字符指针变量 2. 数组指针变量 2.1 数组指针变量是什么&#xff1f; 2.2 数组指针变量怎么初始化 3. 二维数组传参的本质 4. 函数指针变量 4.1 函数指针变量的创…

比亚迪应届生爆料,真实的工作状态!

一位比亚迪的应届生发帖子称&#xff0c;校招入职比亚迪一个月&#xff0c;爱上了这里的工作文化&#xff0c;不怎么加班&#xff0c;工作日常就是开会对问题&#xff0c;顺便吵架扯皮&#xff0c;不用写令人头疼的代码&#xff0c;但是却拿着高工资&#xff0c;感觉现在的生活…

详解类生到死的来龙去脉

类生命周期和加载过程 一个类在 JVM 里的生命周期有 7 个阶段&#xff0c;分别是加载&#xff08;Loading&#xff09;、校验&#xff08;Verification&#xff09;、准备&#xff08;Preparation&#xff09;、解析&#xff08;Resolution&#xff09;、初始化&#xff08;Ini…

C++ 内存

内存分区模型 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理全局区&#xff1a;存放全局变量和静态变量以及常量栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值、局部变量等堆区&#xff1a;由程序员分配和释放&#xff0c;若…

C#,数值计算——分类与推理Svmlinkernel的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Svmlinkernel : Svmgenkernel { public int n { get; set; } public double[] mu { get; set; } public Svmlinkernel(double[,] ddata, double[] yy) : base(yy, ddata) …