VIT 如何超越 CNN?

论文初读《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》

VIT(Vision Transformer)来自于google 的一篇文章《AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》原文地址: https://arxiv.org/pdf/2010.11929.pdf 使用transfomer解决分类问题。

一说图像分类,大家想到的都是经典的CNN,Resnet,MobileNet

VIT是最近提出的模型2020年10月挂到av上面,2021年正式发表。在所有公开数据集上都超过了Res,前提是在大的数据集上做预训练,数据越大效果越好。transformer使用在NLP上的模型。在2017年 VIT本身没有新的地方,Transformer encode的网络。

VIT网络是什么:

1)分隔图片

将图片划分成大小相同patches

用户指定patch大小(16x16)stride(滑动窗口的步长),stride越小,分隔的pathes数量越大,计算量越大。论文中没有重叠分隔图片。重叠也可以。

2)向量化(vectorize)

数据向量化,降低维度。

3)

如果图片被划分为n个向量 x1 .. xn

 

首先用相同全联结层对n个向量进行线性变换。不使用激活函数。共享参数 w和b

zi = dense(xi) = w * xi + b + positionencoding(xi)

此外对向量的位置进行编码 positional encoding。图片被划分为N块,那么位置就是1~n的整数。每个位置就是一个向量,加到Z向量上。z就是内容的表征也是位置的信息。

为什么使用positional Encoding,因为图片的特征跟patches之间的位置是强相关的。所以位置信息是强的特征信息。

最后用CLS符号表示分类。对CLS做Embeding得到向量Z0,Z0和其他Z大小相同。

将Z0 ~ Zn输入到多头子注意力层(Multi-Head Self-Attention)这层的输出也是N+1个向量。在上面加一个全链接层。输出还是N+1个向量。可以继续加Multi-Head Self-Attention 和 全联结层。

transformer还用到了Skip Connection 把每层的输入加到输出上。

Transformer Encoder network用到了很多多头子注意力层和全联结层,用多少都可以。输出N+1的向量。输出是向量C0 ~Cn

但是有用的事C0,可以看作是图片中提取的特征向量。用于分类任务。把C0输入到Softmax分类期,输出向量P,用P做分类的loss梯度,来训练神经网络。

训练方法:

1)随机初始化网络,在数据集A上做训练,数据集一定要大的预训练模型。

论文中使用imageNet(small)训练 resnet和transformer的时候,transformer的效果会低于resnet。用imageNet-21K做预训练数据集,transformer的效果resnet差不多。用JFT(3亿数据)数据集做预训练,transformer比resnet准确率高1%左右。

用更大的数据集作预训练

2)使用pretrained model在数据集B上finetunel。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值