ViT原文以及在DR领域的应用

文章名称:AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

作者: Alexey DosovitskiyLucas BeyerAlexander KolesnikovDirk WeissenbornXiaohua ZhaiThomas UnterthinerMostafa DehghaniMatthias MindererGeorg HeigoldSylvain GellyJakob UszkoreitNeil Houlsby

收稿日期:

发布日期: 2020年10月22日

下载地址:arXiv:2010.11929

期刊名称

分区

影响因子

采用的基础模型

实验效果

数据集

Arxiv

Transformer

主要与cnn进行对比

Imagenet

JFT

  1. 概述:

Transformer优点

1.具有优秀的运算效率和扩展性

2可以透过大量的数据做预训练并微调在其他数据集来减少运算资源。

3 attention

Transformer的不足之处:

1 需要大量的训练数据

2 缺乏像cnn固有的归纳偏差(Inductive bias)如平移不变性(translation equivariance),局部性(locality)。

归纳偏差:关于目标函数的必要假设。归纳是自然科学中常用的两大方法之一(归纳和演绎)。西瓜书解释:机器学习算法在学习过程中对某种类型假设的 偏好,称为 归纳偏好。归纳偏好可以看作学习算法自身在一个庞大的假设空间中对假设进行 选择 的 启发式 或 “价值观”。

平移不变性:意味着系统产生完全相同的响应(输出),不管它的输入是如何平移的。

平移同变形:意味着系统在不同位置的工作原理相同,但它的响应随着目标位置的变化而变化。

局部性:在找东西时,不需要看见太远的距离,只需要看见一部分就可以推测全部。

对transformer现在的大部分使用有大致三种方式:

1 对图像每个pixel对局部做attention

2 采用稀疏transformer,利用估计方式取得Global self-attention,目的是关注整张图片

3 利用不同大小的Blocks来衡量attention,但极端情况下只能沿着轴做。

这三种方法的不足之处:需要大量的运算资源与硬件需求。

2020年Cordonnier提出一种方式,从输入图片取出2 x 2大小的patch并采用full self-attention,这与该文章采用的方式最为接近,但该文章进一步证明了使用大量训练数据训练的Transformer就比CNN SOTA具有更高的性能。

论文解读:在文章的摘要部分,作者提到transorflow虽然已经是NLP领域的一个标准,但是仍存在其局限性,如上文所说,transorflow的使用方式仅仅是对局部的改变,而整体结构不变。该篇文章证明了对卷积神经网络的依赖是完全不必要的,VIT可以直接作用于一系列图像块,而在图像分类领域表现也十分出色。在文章中提到ImageNet等数据集为中小型数据集。

引言部分提到,自注意力机制的网络现在的训练模式基本为在大规模数据集上面预训练,然后在特定小数据集上面做微调(在以前阅读的大部分论文中,base网络基本都是在ImageNet数据集上面进行预训练)

  1. 网络结构:

VIT网络结构如图所示:

具体模型的前向过程

假如有一张224x224x3的图片,使用16x16的patch size大小,将会得到196个图像块,每一个图像块的维度就是16x16x3=768这样就把原图像变成了196个patch,每个patch的维度是768.

接下来就要将这些patch输入到一个线性投射层,这个线性投射层就是一个全连接层,文中用E表示。这个全连接层的维度是768x768,第二个768就是文中提到的D,D是可变的,如果transformer变得更大了,D也可以相应的变大,而第一个768是从图像patch算来的,它保持不变。

经过了线性投射就得到了patch embedding(X×E),它是一个196×768的矩阵(X是196×768,E是768×768),意思就是现在有196个token,每个token向量的维度是768

到这一步就成功将vision问题变成了NLP的问题,输入就变成了1维的token而不是2维的图片了。

       为了方便和后面图像的信息进行拼接,在图片本身带来的token之外,加上了一个额外的cls token。因此最后输入transformer的序列的长度是197x768.

       最后要加上图像块的位置编码信息,图中是将图片打成了九宫格,所以位置编码信息是1-9,但这只是一个序号,并不是真正使用的位置编码,具体的做法是通过一个表(表中的每一行就代表了1-9的序号,每一行就是一个向量,向量的维度是768,这个向量也是可以学的)得到位置信息,然后将这些位置信息加到所有的token中(注意这里是加,而不是拼接,序号1-9仅仅是示范,而真正的应当是1-196),所以加上位置信息之后,这个序列还是197x768

        到此就做完了整个图片的预处理,包括加上特殊字符cls和位置编码信息,也就是说transformer输入的embedded patches 就是一个197x768的tensor

        这个tensor先经过一个layer norm,出来之后还是197x768

        然后做多头自注意力,这里变成了三份:k,q,v,每一个都是197x768.因为是多头自注意力,所以最后的维度并不是768,而是768/12=64,最后再进行结果拼接,规模还是197x768

        再经过一层layer norm,不变

        经过MLP,放大四倍变成197x3072

        缩小投射,变成原来的大小,输出。

  1. 数据集的消融实验:

针对特殊的class token,文章做了详细的消融实验,对vit来说,怎么对图片进行预处理以及怎样对图片最后的输出进行后处理是很关键的,因为中间的模型是一个标准的transformer。

通过实验,作者得出最后的结论是:是否有classtoken都可以,就是可以通过全局平均池化得到一个全局特征然后分类,也可以用class token去做。

绿线代表全局平均池化

蓝线代表class token

可以看到两者效果差不多,但是学习率不同。

实验:

主要是对比残差网络,ViT和他们混合模型的学习能力。当考虑时间代价的时候,vit表现得非常好,能在大多数数据集上面表现良好并需要的训练时间更短。

  1. 评价标准:准确率
  2. 结论:如表所示,在大规模数据上进行过预训练之后,在最左侧数据集上面做微调时候得到的表现。

这个表对比了几个vit的变体和卷积神经网络

与bit进行对比是因为这是作者之前的工作

与noisy student对比是因为这是ImageNet之前表现最好的方法,它采用的方法是用Pseudo-label(伪标签)去进行训练。

从表中可以看出,ViT Huge用比较小的patch 14x14能取得在所有数据集上的最好的结果。

因为数值太过接近,所以作者采用了训练成本较低的角度来体现ViT的优越之处。

分析:vision transorfer到底需要多少数据才能训练得比较好?

图三表示用不同大小的数据集的时候,比如imageNet是1.2m而ImageNet-21k是14m,JFT是300m,当数据集不断增大的时候,resnet和vit到底再imageNet的fine-tune的时候效果如何

图三的主要意思是,灰色代表bit,也就是各种大小的resnet,最先面代表50,最上面表示152,他想要展示的是再中间的灰色区域就是resnet所能达到的效果范围,剩下的圆点就是各种大小不一的ViT

        在最小的ImageNet上做预训练的时候,ViT完全不如Resnet,这说明在小规模数据集上面预训练的ViT完全比不上Resnet,原因是ViT没有使用归纳偏置,因此它需要更大的数据让网络学的更好。

        在imageNet-21k上做预训练的时候,vision transformer和resnet已经差不多了

        只有在特别大的数据集JFT-300M时,ViT的效果更好。

在图3中我们可以得到结论:要想使用Vision Transformer,那么至少要准备与ImageNet-21k差不多大的数据集,如果是小型数据集,那么不如使用卷积神经网络。

        当使用超大型数据集时,用Vision Transformer能得到更好的效果,它的扩展性更好一些。

       

图4是做了linear few-shot evaluation(在拿到预训练的模型之后,直接把它当成一个特征提取器,不去fine-tune,而是直接拿这些特征做一个just take a regression)。

图4中横轴表示预训练数据集的大小,这里使用了JFT。

图4的结果与图3差不多,浅灰色的线是resnet50,深灰色是resnet152,当用小型数据集预训练时ViT完全比不过Res

文章给出的解释是因为缺少归纳偏置和约束方法,所以导致在10M数据集的情况下ViT容易过拟合,导致最后学到的特征不适合做其他任务,但是随着预训练数据集的增大,ViT的稳健性就提升上来了。

ViT 代码段中有 nn, Parameter ()函数,此函数中文意为参数。通常,我们训练的参数都是常见的结构,(卷积、全连接等)里面的计算参数。在网络有其他的设计时,会需要一些额外的参数跟着整个网络的训练进行学习和更新,然后得到最优的值,典型的例子有注意力机制中的权重参数,ViT中的class token和positional embedding等。

而torch.nn.Parameter()就是用来更新这些特殊参数所用。

了解ViT的基本原理后,我们来看一下ViT在DR中的实际应用

文章名称:Vision Transformer-based recognition of diabetic retinopathy grade

作者: Jianfang Wu1 Ruo Hu Zhenghong Xiao Jiaxu Chen Jingwei Liu

收稿日期: 2021年6月14日

发布日期: 2021年10月15日

下载地址:DOI: 10.1002/mp.15312

期刊名称

分区

影响因子

采用的基础模型

实验效果

数据集

MEDICAL PHYSICS

中科院3区

2022-2023最新影响因子3.8

Vision Transformer

主要与cnn进行对比

五年影响因子4

Acc=91.4%

特异性=0.977

精度=0.928

灵敏度=0.926

二次加权kappa评分=0.935

曲线下面积(AUC)=0.986

         

  1. 文章摘要部分提到:Transformer被认为是最先进的NLP模型,transformer采用多头注意力机制作为主要构建块来捕获图像像素之间的远程上下文关系。在糖尿病视网膜病变分级识别领域,cnn居于主导地位。然而本文受transformer优势的启发,提出了一种基于transformer的方法,应用于糖尿病视网膜病变的分级。这项工作的目的是证明纯注意力机制适用于糖尿病视网膜病变等级识别。2.transformer可以取代传统cnn进行糖尿病视网膜病变等级识别。
  2. 本文使用的方法:提出了一种基于Vision Transformer的方法来识别糖尿病视网膜病变的分级。将眼底图像细分为不重叠的斑块,通过展平将其转换为序列,并进行线性和位置嵌入过程以保留位置信息。然后将生成的序列输入到注意力块中生成最终表示。第一个token序列被输入到softmax分类。
  3. Transformer在DR分类等医学图像任务中进行了研究, Conference on Computer Vision and Pattern Recognition中已经提到病变感知Transformer(LAT)通过编码-解码架构实现DR分级和病变发现。编码器依赖于像素关系,解码器依赖于病变过滤包。然而该架构同时包含原始Transformer的编码和解码部分,而ViT仅使用其编码部分。Dalmaz等人通过将卷积算子的局部定位能力与ViT上下文敏感性相结合,开发了一种用于医学图像合成的生成对抗模型,名为ResViT 。该模型在多项医学成像任务中的性能优于最先进的基于cnn和transformer架构。Kamran等人提出了一种基于ViT的生成对抗网络(VTGAN),它可以同时从眼底图像生成视网膜血管结构并预测视网膜变性。然而该模型的预测能力是二元的,并且它确实提供了疾病的等级识别。
  4. 在新的研究中,CNN和ViT通过迁移学习用于肺炎的诊断,ViT与七个cnn模型的比较中,ViT取得了最好的recall,且在其他的指标中,ViT也表现出了相当大的竞争优势。其中,ViT的参数数量比其他7个CNN模型要多得多,这表明ViT在医学图像处理领域有巨大的潜力。
  5. 本文中采用上文中提到的ViT架构进行DR等级识别。首先将眼底图像细分为不重叠的斑块,通过压平和嵌入将其转换为序列。同时嵌入位置信息,接下来将生成的补丁序列输入到多个多头注意层中以生成最终表示。第一个标记序列在分类阶段输入到softmax分类层中以产生识别输出。

如图为本文采用的ViT架构图,可以看到本图与上文中的架构图是一样的。本文中将图像尺寸设置为H=W=224或384,P=16或者32所以patch大小为16x16x3或32x32x3.

Patch数量为196+1或者144+1个。

  1. 自注意力机制:由bengio团队在2014年提出,广泛应用于深度学习的各个领域,在计算机视觉领域主要用于捕捉图像上的感受野。

多头自注意力:通过两种方式提高了注意力层的性能:1.扩展了模型关注不同位置的能力。2.它为注意力层提供了多个“表示子空间”。

      

  1. 评价标准有:准确度,精确度,召回率(灵敏度),特异性和F1分数。

 

  1. 数据增强策略:

         1.平移和随机旋转可用训练图像,平移像素为10、15、20、25.旋转角度为90、180、270.

         2.使用直方图均衡来消除因不同设备和照明条件引发的差异。

         3.按照8:2的比例划分为训练集和测试集。

9. 消融实验:采用两种眼底图像分辨率(224 x224)和(384x384)像素来训练ViT-B和ViT-L的ViT配置(如下表所示)因此两个模型使用两个Patch大小进行训练。模型在ImageNet-21k上进行训练。

如图显示,各个模型在数据集上的测试性能。

表5为每个模型的不同评价指标表现。

表5显示了每个DR等级和型号的性能指标,其中达到最高性能的指标以粗体突出表示。图6突出显示384_L_32和384_B_32模型实现了最高的测试精度,分别为0.914和0.906.从表5也可以看出,这两个模型在所有性能指标上仍然达到了最高性能。

表6列出了每个模型的二次权重kappa分数,所有模型的得分都超过0.86,表明结果与原始标签的一致性。具体而言,384_B_16 获得最高的二次 kappa 分数 (0.94),其次是 384_L_32 (0.935)。

表7中,在ViT和ResNet模型的对比中,ViT略占上风。考虑到分辨率不同,ResNet的深度不同,ResNet模型是趋于稳定的,然而在更高分辨率和更深的模型中,ViT的精度略有提高。

在讨论部分中,本文对ViT与cnn的抵抗性进行了对比,表7还列出了两种模型相应的性能指标,强调对于相同的分辨率,ViT的性能比ResNet更具吸引力。

一项研究表明ResNet的抵抗性能更佳,但在本文实验中表明,在利用快速梯度符号法(FGSM)生成扰动时,ViT的抵抗性能更佳。

ViT 与 CNN 相比有几个明显的优势:(a)它可以捕获像素之间的长期依赖性。 (b) 它提供了内置的显着性,可以深入了解模型关注的点。 (c) 它在防止对抗性攻击方面比 CNN 更有效。

然而,根据任务的不同,CNN 的深度可以从几层扩展到数百层,这是 ViT 所不具备的灵活性。

结论部分:本文使用ViT进行DR等级识别。ViT依靠强大的注意力机制来捕获长期像素的依赖性,实现识别性能,有称为CNN的可行的替代方案。但是ViT模型比CNN具有更多的参数,必须在大型数据集上面进行预训练,然后转移到特定任务,ViT的模型较深,小批量利用训练数据是可行的,但训练和验证时间更长。由于数据不平衡,需要额外使用图像处理的手段来进行图像的预处理。本文提到,这项研究存在一些潜在的局限性,例如预训练所需的大型数据集。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值