ViT(Vision Transformer)算法入门

Transformer架构已经成为自然语言处理任务的事实标准,但其在计算机视觉中的应用仍然有限。在视觉中,注意力要么与卷积网络结合使用,要么用于替换卷积网络的某些组件,同时保持其整体结构。论文表明,这种对CNN的依赖是不必要的,直接应用于图像块序列的纯变换器可以很好地执行图像分类任务。

在Transformer的基础上,ViT算法中尝试将标准的Transformer结构直接应用于图像,并对整个图像分类流程进行最少的修改。具体来讲,ViT算法中,会将整幅图像拆分成小图像块,然后把这些小图像块的线性嵌入序列作为Transformer的输入送入网络,然后使用监督学习的方式进行图像分类的训练。

参考论文https://arxiv.org/pdf/2010.11929.pdf

我们将图像分割成固定大小的面片,线性嵌入每个面片,添加位置嵌入,并将生成的向量序列馈送给标准的Transformer编码器。为了执行分类,我们使用标准方法向序列中添加额外的可学习“分类标记”。

vit 模型结构示意图

作为原始图像块的替代方案,输入序列可以由CNN的特征图形成。在该混合模型中,将面片嵌入投影应用于从CNN特征图中提取的面片。作为一种特殊情况,面片可以具有空间大小1x1,这意味着通过简单地展平特征地图的空间维度并投影到变换维度来获得输入序列。如上所述,添加了分类输入嵌入和位置嵌入。

论文将图像分割成固定大小的面片,线性嵌入每个面片,添加位置嵌入,并将生成的向量序列馈送给标准的Transformer编码器。论文中的作者通过标准方法向序列中添加额外的可学习的分类标记。

作者评估了ResNet、visiontransformer(ViT)和hybrid的表征学习能力。为了理解每个模型的数据需求,对不同大小的数据集进行预训练,并评估许多基准任务。当考虑到预训练模型的计算成本时,ViT表现非常出色,以较低的预训练成本在大多数识别基准上达到了最先进的水平。

Transformer 是一种基于 encoder-decoder 结构的模型

 

每个解码器都可以分解成两个子层。

从编码器输入的句子首先会经过一个自注意力(self-attention)层,这层帮助编码器在对每个单词编码时提取多余特征。

自注意力层的输出会传递到前馈(feed-forward)神经网络中。每个位置的特征对应的前馈神经网络都完全一样。

解码器中也有编码器的自注意力(self-attention)层和前馈(feed-forward)层。

这两个层之间还有一个自注意力层。

 

总之就是输入图像,然后提取特征训练,最后通过分类器进行图像的分类

猜你喜欢

转载自blog.csdn.net/weixin_48262500/article/details/120998630