首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

[CV - Image Classification -2020]ViT模型 - CV初次使用Transformer

[「Pascal算法摆渡人」]「公众号」「知乎」「小红书」等感谢关注。Hi,大家好!我是Pascal_M。

我们一起读起来!!!了解过往「历史文献」的方法和不足之处,追寻「最前沿」的文献和技术。

「标题」:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

「时间」:2020

「引用次数」:18345(截止目前)

1 遇到问题

在这之前,图像分类问题的解决方案都是采用CNN机制。

Transformer机制的出现是为了解决NLP领域内的问题而提出来的算法模型方法,现在想将Transformer算法机制应用在CV领域中。

输入:图片 (image)

输出:类别 (class)

「问题来了」:现在想尝试采用Transformer机制替换CNN机制,能否应用到图像分类算法中?

2 前情提要

1)CNN机制

图像分类算法流程(CNN机制):

1)输入:图像(image)

2)图像特征提取:深度学习(自动提取特征)- 卷神经网络(CNN)

3)分类器:图片特征进入全连接层(FC)即MLP,加上 Softmax

4)输出:类别(label)

「重点关注」

2)步,该卷积神经网络称为Backbone(主干网络),常见Backbone = AlexNet、VGG16/19、ResNet等。

常见Backbone 如下:(a) AlexNet, (b) VGG-16, (c) VGG-19, (d) ResNet-50, (e) ResNet-101 and (f) ResNet-152

2)Transformer机制

Transformer模型架构是由两部分组成:编码器( Encoder )和解码器( Decoder )。

1)每个编码器:(左边)由 1个位置编码层(Positional Encoding)与N个编码层( Encoder Layer )组成。

2)每个解码器:(右边)由1个位置编码层与N个解码层( Decoder Layer )以及1个以全连接层和Sotfmax为激活函数组成。

「重点关注」

想用Transformer机制来替换CNN机制,其实就是选取Backbone = Transformer - Encoder。

Transformer - Encoder可以理解为提取特征的部分。

重点关注:输入和编码器部分。

3)文本分类

NLP领域文本分类算法流程(BERT为例(a)):

1)输入:两句话,即每一个单词就是一个token。

2)模型输入前:要进行Input Embedding (token编码) 和 Positional Encoding(位置编码)操作

3)图像特征提取:深度学习(自动提取特征)- BERT为例,进入到N个Transformer - Encoder,即输出文本特征向量编码

4)分类器:图片特征进入全连接层(FC)即MLP,加上 Softmax

5)输出:文本类别(label)

回顾一下BERT:

[LLMs - BERT - 2018]BERT模型 - 开创精彩的大规模预训练语言模型热潮(上)

[LLMs - BERT - 2018]BERT模型 - 开创精彩的大规模预训练语言模型热潮(下)

3 解决方案

1) 整体解决框架

在CV领域下,采用Transformer机制 选取Backbone = Transformer - Encoder

CV 中 Transformer机制下,图像分类步骤如下:

其中,MAS = multiheaded self-attention,MLP = multi-layer perceptron ,LN = Layernorm

对比 Transformer机制中编码器工作流程 和 CNN算法模型流程之后,我们发现一个新的问题。

如何解决图片输入问题?

2 )图片输入

在Transformer机制下,图片是如何输入?

采用 「图片token化」

处理办法:

将图像分割成小块,并将这些块转化为线性嵌入序列,作为Transformer的输入。

图像块(image patches)就相当于NLP任务中的单词(token)来做处理。

3)实现方法

具体办法如下:

标准的接受token的一维嵌入向量作为输入。为了处理二维数据,要进行reshape。

1)原始图像输入:(H,W)是图片分辨率,C是通道数,

2)reshape(分割patch):P是patch的大小,N是patch的个数

3)flatten(拍平,映射成Transformer接受的固定大小D,映射E是可学习的):

4)模型大小

模型变体(Model Variants):基于BERT配置VIT,各种大小的VIT(base,large,huge),patch的大小P也是可调的,P越大,序列长度越小。P越小,长度越长,计算开销越大。

5)训练和微调(Training & Fine-tuning)

4 实验结论

1)准备数据集

数据集(datasets):各种大小的数据集以及测试基准。

ImageNet 1k classes 1.3M images

ImageNet-21k 21k classes 14M images

JFT 18k classes 303M high-resolution images

基准测试任务(去掉预训练中已出现的)

Real labels

Cifar-10/100

Oxford-IIIT Pets

Oxford Flowers-102

19-task VTAB

2)与SOTA比

5 Pascal曰

1)本篇文章将Transformer机制替换CNN机制,实现了图片分类功能,即图片Token化。

2)同时,NLP领域内的Transformer机制也开始在CV领域内发挥它的功效。

3)未来,是否有可能CV和NLP进入到大一统算法模型中,我们拭目以待。

代码实现

针对人群:

不知道如何「入门算法 「,对于」初学者」这里有完整的学习路径图(历史中「经典」模型文献和论文复现),完成后将成为合格「初级算法工程师」

不知道「行业解决方案」,对于「算法工程师」这里有具体的行业中落地方案和呈现出商业价值,阅读后提供新的解决方法想法和成为「算法专家」

蓦然回首,自己从算法(数学)专业学习以及工作已十年有余。

同时希望大家成为算法经历者、分享者和创造者。

入群

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OqTC4Xbhj9g-KWdlyuz_Za6w0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券