[「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进入到大一统算法模型中,我们拭目以待。
代码实现
针对人群:
不知道如何「入门算法 「,对于」初学者」这里有完整的学习路径图(历史中「经典」模型文献和论文复现),完成后将成为合格「初级算法工程师」。
不知道「行业解决方案」,对于「算法工程师」这里有具体的行业中落地方案和呈现出商业价值,阅读后提供新的解决方法想法和成为「算法专家」。
蓦然回首,自己从算法(数学)专业学习以及工作已十年有余。
同时希望大家成为算法经历者、分享者和创造者。
入群
领取专属 10元无门槛券
私享最新 技术干货