iGPT and ViT
概
两个将transformer用于图像分类任务的尝试.
主要内容
其实将transformer用于图像分类任务, 关键的问题是如果生成tokens.
iGPT
iGPT生成tokens方式很粗暴, 将图片拉成向量, 每一个element对应一个token, 然后根据‘字典’获得相应的embeddings. 但是普通的图片, 比如224x224x3, 由于transformer的memory需求是四次方的, 显然这个tokens数目无法计算, 所以本文会首先对图片进行压缩, 比如至32x32x3, 但是这样依然不够.
但是32往下的size对于人来说已经不易辨别了, 虽然本文采取的策略是将3通道压缩为1通道. 通过对图片进行k均值分类(k=512), 然后为每个像素点分配中心, 作者发现这么做效果不错.
注: 因此字典的大小也应该是长度也应该是512.
注: 在fine-tuning的时候, 因为最后的输出是(B, S, D), 也没法直接加全连接层分类, 故首先通过average pooling 变成(B, D), 再通过\(W^{K \times D}\)获得logits.
ViT
ViT则不这么粗暴, 其首先将图片分割成一个个patch, 然后通过一个线性投影\(W\)变成embeddings, 注意这里不再是NLP中的通过字典索取了.
需要特别注意的是, 第一个embedding对应的是类别的embedding, 其对应的输出\(Z_0^L\)(最后的第0个token)用于最后的分类任务. 故不像iGPT, ViT其实是有监督的.
为什么不想iGPT一样通过average pooling来使用所有tokens来分类呢?
其实是可以的, 作者他们最先尝试的就是这个策略, 但是由于学习率没调好, 所以本文显示加了类别的token, 实际情况如下图:
能否从有监督变成自监督?
其实也是可以的, 可以最后预测每一个patch的平均值:
Finally, we predict the 3-bit, mean color (i.e. 512 colors in total) of every corrupted patch using their respective path representations.
positional embeddings有什么影响?
作者试了1-D, 2-D, 以及相对编码, 在第一层, 每一层(单独), 每一层(共享)策略下比较, 发现相差无几, 但是有位置编码会比无位置编码好很多.
代码
iGPT and ViT的更多相关文章
- VIT Vision Transformer | 先从PyTorch代码了解
文章原创自:微信公众号「机器学习炼丹术」 作者:炼丹兄 联系方式:微信cyx645016617 代码来自github [前言]:看代码的时候,也许会不理解VIT中各种组件的含义,但是这个文章的目的是了 ...
- 带你读Paper丨分析ViT尚存问题和相对应的解决方案
摘要:针对ViT现状,分析ViT尚存问题和相对应的解决方案,和相关论文idea汇总. 本文分享自华为云社区<[ViT]目前Vision Transformer遇到的问题和克服方法的相关论文汇总& ...
- ICCV2021 | Tokens-to-Token ViT:在ImageNet上从零训练Vision Transformer
前言 本文介绍一种新的tokens-to-token Vision Transformer(T2T-ViT),T2T-ViT将原始ViT的参数数量和MAC减少了一半,同时在ImageNet上从 ...
- EfficientFormer:轻量化ViT Backbone
论文:<EfficientFormer: Vision Transformers at MobileNet Speed > Vision Transformers (ViT) 在计算机视觉 ...
- [炼丹术]基于SwinTransformer的目标检测训练模型学习总结
基于SwinTransformer的目标检测训练模型学习总结 一.简要介绍 Swin Transformer是2021年提出的,是一种基于Transformer的一种深度学习网络结构,在目标检测.实例 ...
- java web学习总结(三十) -------------------JSTL表达式
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- java web学习总结(二十九) -------------------JavaBean的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- [No0000A2]“原始印欧语”(PIE)听起来是什么样子?
"Faux Amis"节目中经常提到"原始印欧语"(PIE)——"Proto-Indo-European". 我们说过,英语,法语中的&qu ...
- git的基本介绍和使用
前言:从事iOS开发一年多以来,一直使用svn管理源代码.对svn的特点和弊端已经深有体会.前些天双十二前后,项目工期紧张到爆,起早贪黑的加班,可谓披星戴月,这还不止,回到家中还要疯狂的敲代码.那么问 ...
随机推荐
- Flume(二)【入门】
目录 一.安装部署 1.安装地址 2.安装步骤 二.入门案例 1.官方案例(nestat->logger) 2.实时监控单个追加文件(exec->hdfs) 3.实时监控目录下多个新文件( ...
- Identity Server 4 从入门到落地(八)—— .Net Framework 客户端
前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...
- 【STM32】基于正点原子『探索者』开发板的烧录
项目需要一个功能,开发板范例正好有,就买了一块,不过还是有点贵 我手边没有J-Link 用的都是串口烧录 烧录时,先打开右上的开关 如果是仿真器烧录,它无法供电,需要接12V适配器或是杜邦线供电 然后 ...
- PLSQL导出oracle表结构和数据
1.导出表结构和数据 方式1.tools->export user objects是导出表结构 tools ->export user object 选择选项,导出.sql文件 说明:导出 ...
- 生成接口文档并同步到postman
前言 当我们开发需要测试接口时,会遇到以下几个问题 1.如果接口过多,参数过多,一个个参数复制到postman简直能要了我的狗命,重复劳动过多. 2.如果接口过多,参数过多,编写接口文档给测试人员或者 ...
- @Transactional注解详细使用
一.@Transactional 注解使用 @Transactional 注解只能用在public 方法上,如果用在protected或者private的方法上,不会报错,但是该注解不会生效. @T ...
- python中的虚拟环境(在jupyter和pycharm中的使用)
1.通过anaconda新建虚拟环境 创建虚拟环境:conda create -n your_env_name python=3.6 激活虚拟环境:activate your_env_name(虚拟环 ...
- 安霸pipeline简述之rgb域的处理
RGB域处理模块的详细介绍: RGB域的处理主要是demosaic,color_correction,tone_curve(类似于gamma曲线). Demosaic:此模块将bayer Patt ...
- GDAL重投影重采样像元配准对齐
研究通常会涉及到多源数据,需要进行基于像元的运算,在此之前需要对数据进行地理配准.空间配准.重采样等操作.那么当不同来源,不同分辨率的数据重采样为同一空间分辨率之后,各个像元不一一对应,有偏移该怎么办 ...
- Java编程思想—读书笔记(更新中)
第1章 对象导论 1.4 被隐藏的具体实现 访问控制的原因: 让客户端程序员无法触及他们不应该触及的部分(不是用户解决特定问题所需的接口的一部分) 允许库设计者可以改变类内容的工作方式而不用担心会影响 ...