VIT论文阅读: A Image is Worth 16x16 Words

ops/2024/9/24 13:18:46/

简介

在2024年,大家都知道了transformer的故事,但是在4年前, CNN和Transformer谁才是CV的未来,还没有那么确定。

在简介部分,作者提到了一个令人失望的事实,在基于imagenet的实验中发现,transformer的表现差于同尺寸的ResNet。作者把原因归结到bias translation equivariance and locality,这些CNN具有,但是transformer不具有的特性上。如下图【1】

但是,随后,作者话峰一转,强调,如果基于更大的数据集训练,ViT可以实现更好的效果,甚至超过CNN。这就是transformer的魅力所在,基于更大的数据量,它能展现出更强大的力量。

相关工作

其实自从transformer(2017)出来后,就有各种各样的工作希望利用transformer来替代CNN,比如f Cordonnier et al. (2020) 尝试使用2x2的矩阵进行transformer,而和本文的区别是,vit使用了更大规模的预训练。

此外,当时一种常见的思路就是在CNN处理后,基于attention block进一步处理信息。此外,也有其他工作开始尝试通过生成式的方法进行处理。

方法

模型结构

参考原版transformer,Vit也使用了位置编码,以及对于特征的linear projection这些方式。

微调

作者提到了微调的几个小经验,

首先是建议基于高分辨率的图像,以及大数据进行预训练,然后是通过更换head,以及使用不同分辨率的图像进行下游任务的微调。因为分辨率的调整,在对于位置编码的调整中,我们也需要注意。

实验

这篇论文的实验非常细致,主要在模型大小,数据大小对于模型的性能影响上,进行了充分的分析,之后再说。

【1】https://www.baeldung.com/cs/translation-invariance-equivariance 


http://www.ppmy.cn/ops/99012.html

相关文章

【K8s】专题十二(2):Kubernetes 存储之 PersistentVolume

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正! 如果对您有帮助,烦请点赞、关注、转发、订阅专栏! 专栏订阅入口 Linux 专栏 | Docker 专栏 | Kubernetes 专栏 往期精彩文章 【Docker】(全网首发)Kyl…

@PathVariable:Spring MVC中的路径变量解析

在Spring MVC中,PathVariable注解是一个非常重要的特性,它允许开发者将URL中的一部分作为参数传递给控制器(Controller)的方法。这种机制在处理RESTful风格的API时尤为有用,因为它使得URL更加简洁且富有表达力。本文将…

心得与体会

Loop本地回环 Loop本地回环,通常指的是以127开头的IP地址段(127.0.0.1 – 127.255.255.254),其中127.0.0.1是最常用的一个地址,被称为本地回环地址(Loop back address)。这个地址不属于任何一个…

工厂模式与策略模式:理解与应用

工厂模式与策略模式:理解与应用 1. 引言2. 工厂模式简介2.1 定义2.2 特点2.3 应用场景2.4 工厂模式例子:咖啡制作 3. 策略模式简介3.1 定义3.2 特点3.3 应用场景3.4 策略模式例子:咖啡定价 4. 区别4.1 目的不同4.2 应用场景不同4.3 解决问题不…

开源模型应用落地-qwen2-7b-instruct-LoRA微调模型合并-Axolotl-单机单卡-V100(十)

一、前言 本篇文章将使用Axolotl去合并微调后的模型权重,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 二、术语介绍 2.1. LoRA微调 LoRA (Low-Rank Adaptation) 用于微调大型语言模型 (LLM)。 是一种有效的自适应策略,…

easyexcel--导入导出实现自定义格式转换

自定义格式 我们在数据库设计的时候经常会有枚举类型,如0表示普通用户,1表示VIP用户等,这在excel导入的时候,我们会填普通用户而不是0,这样就需要用到自定义格式把普通用户转换成0,我写了一个通用的抽象类…

代码生成:自动化开发

在现代集成开发环境中,智能代码补全和代码生成功能是两个至关重要的组成部分。 智能代码补全利用当前上下文和代码库信息,向程序员推荐合适的代码选项,而代码生成则根据指定输入创建遵循语法和语义规范的代码片段。 许多先进的IDE如Visual St…

【linux中高级命令】

杀进程 1、lsof列出所有打开的文件,‌包括网络连接,‌从而提供关于系统状态的宝贵信息‌ #可以直接查看端口的进程 lsof -i:端口获取到进程,使用kill命令和PID来终止进程 kill -9 [PID]2、列出使用该端口的进程信息,‌包括PID …