Vision Transformer 阅读笔记

Vision Transformer 阅读笔记

文章题目:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale


文章信息:Submitted to International Conference on Learning Representation


文章状态:Under Review


github:https://github.com/emla2805/vision-transformer

给这篇文章算一卦

其实有的文章的双盲状态基本形同虚设,比如这篇;反正是双盲状态嘛,让我来算一卦看看这篇文章最有可能是谁写的呢,反正肯定不是Google Research的Alexander Kolesnikov
们!为什么呢,因为昨天紫薇星黯淡,天马座流星雨……算了算了,不皮了,看到这篇文章让我想起了Google Research的Alexander Kolesnikov今年的一篇工作:Big Transformer简称Bit,巧了,这篇文章叫做Vision Transformer简称Vit,你品,你细品! 我们先看看两篇实验结果的图(本节下面的对比图左图都是vit,右图都是Bit)

看左右图的配色等等detail,你品,你细品! 再看一组,这个Bubble配色,我真的是……这NM是盲审了的话我真的是钛合金狗眼瞎了:

啥?训练数据JFT-300M?再次巧了,这两篇文章刚好都是在这个数据集训练的,你品,你细品!,更加草的是这个数据集都是Google的,而且还不公开,你品,你细品!

再看看上面的这两个实验,就连实验数据集都差不多???最操的是左边VIT是在TPUv3上搞出来的,Google的TPUv3,你品,你给我往死里品!,算了算了,管TM的,凑热闹就好!

背景

由于Transformer自从发布以来在NLP领域一路屠榜后,加上本身现在CV方向这个怂样,文章的匿名Author就想啊,既然隔壁NLP这么热闹,那能不能把他们的家伙什拿过来玩玩。所以就有了这个工作。这个工作主要是想法上的创新了,但是不得不说,作为一个从NLP转过来的CVer,还是有点羞愧的!当然这篇文章已经震惊!被Twitter上很多大佬都转了

文章主要思想

文章的主要思想很简单,就是直接照搬了NLP里面的Transformer Encoder用在CV上。这里的话可能就需要去了解一下Transformer结构了,大家可以去某乎了解一下,有几篇写的非常不错。

这里我要说明一下,不是这篇文章写得赶,而是这篇文章真的感觉没啥写的。。。其实这篇论文的确是有十几页,作者大量的篇幅都去做论证了,代码已经放出来了,墙裂建议大家去读一下代码,代码很简洁,比某些动不动一大堆看不懂的R某NN,Y某LO好多了:

看看Overall Architecture吧,看看就很清晰:

Details

如果你已经了解了Transformer Encoder的话,现在摆在我们面前的有一个问题,Encoder的输入是怎么得到的?作者文中提供了两种思路:

  • 一种是提取Backbone的各层特征作为输入
  • 一种是直接的暴力将图片切分为多个Patch,然后将Patch展平为一个一维的张量,然后对每一个Patch做类似于NLP里的Embedding,这里作者把它叫做Patch Embedding,然后将这里Embedding过后的添加Positional Embedding和Class Embedding(解释一下这两个的必要性),Positional Encoding采用的和DETR一样的方案,Class Embedding是一个Optional项,也是通过一个可学习的矩阵实现的。

同时这里虽然叫做Vistion Transformer,事实上,作者的Transformer只采用了Encoder部分,因为作者做的Classification任务,所以也没必要,但是可以考虑像DETR用上Decoder然后做其他任务。

结果

result肯定就很不错了,当然,应该不是凑字数啦,Google很多论文都做了消融实验。这里不打算dig deep into实验detail,有兴趣可以去瞅瞅!
重要的是Google给Attention做了Visualization,其实这里很明显出现了注意力,这个很有说服力!看看吧:

想法

这里其实我有几个问题:

  1. 作者用的这个Patch Embedding,个人觉得这里缺乏可解释性,这里实际上是模拟了NLP的Word Embedding,但是从结果上看NLP的词嵌入在对词向量进行向量空间映射后展示出了词的空间语义关联,但是这里的这个Patch Embedding这个转换感觉就是一种强行转化,因为patch之间不存在序列关系。
  2. 划分patch这个操作实际上已经损失了图像的Spatial关系了,这里难道不应该添加一下所谓的Postional Embedding吗???这个操作就很迷。
    在这里插入图片描述

话说我这个一周一更的速度简直和我自己的话疯狂打脸有点不好意思,明天开始周末了吗,好好规划一下……不能浪费!!!

另外,其实我这个是我自己的论文笔记,不是论文解读,所以可能有些地方有点晦涩,不过欢迎大佬一起交流或者指正

硬核引流:欢迎大家推广关注我的公众号啊(洋可喵)!!!

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值