重大里程碑!VOLO屠榜CV任务,无需额外数据,首个超越87%的模型

简介: 近来,Transformer在CV领域遍地开花,取得了非常好的性能,指标屡创新高。但Transformer的性能距离最佳的CNN仍存在差距,不由产生出一种Transformer不过如此的感觉。

近来,Transformer在CV领域遍地开花,取得了非常好的性能,指标屡创新高。但Transformer的性能距离最佳的CNN仍存在差距,不由产生出一种Transformer不过如此的感觉。


可是,就在今天,Transformer领域的新秀VOLO打破了Transformer无法打败最优CNN的宿命,成为了ImageNet数据上首个无需额外数据达到87.1%的模型;与此同时,VOLO在下游语义分割任上也创新了新记录,比如Cityscapes数据上的84.3%,ADE20K数据上的54.3%


640.png

                                                                标题&作者团队



1摘要


视觉识别任务已被CNN主宰多年。基于自注意力的ViT在ImageNet分类方面表现出了极大的潜力,在没有额外数据前提下,Transformer的性能与最先进的CNN模型仍具有差距。


在这项工作中,我们的目标是缩小这两者之间的性能差距,并且证明了基于注意力的模型确实能够比CNN表现更好。与此同时,我们发现限制ViTs在ImageNet分类中的性能的主要因素是其在将细粒度级别的特征编码乘Token表示过程中比较低效,为了解决这个问题,我们引入了一种新的outlook注意力,并提出了一个简单而通用的架构,称为Vision outlooker (VOLO)。outlook注意力主要将fine-level级别的特征和上下文信息更高效地编码到token表示中,这些token对识别性能至关重要,但往往被自注意力所忽视。


实验表明,在不使用任何额外训练数据的情况下,VOLO在ImageNet-1K分类任务上达到了87.1%的top-1准确率,这是第一个超过87%的模型。此外,预训练好的VOLO模型还可以很好地迁移到下游任务,如语义分割。我们在Cityscapes验证集上获得了84.3% mIoU,在ADE20K验证集上获得了54.3%的mIoU,均创下了最新记录。

640.jpg


2方法


VOLO可以看作是一个具有两个独立阶段的结构。第一阶段多个用于生成细粒度token表示的Outlookers。第二阶段我们部署一系列Transformer block来聚合全局信息。在每个阶段的最开始,使用一个patch embedding模块将输入映射到期望形状大小的的token表示中。


2.1 Outlooker


outlook包括用于空间信息编码的outlook注意力层和用于通道间信息交互的多层感知器(MLP)。给定输入token表示序列, outlooker可以写成如下:


image.png


2.2 Outlook attention


640.png


如上图所示,Outlook attention简单,高效,易于实现。它的主要创新点就是:


  1. 每个空间位置上的特征足够全面,可以聚集其邻近特征然后生成局部注意力权值;


  1. 稠密的局部空间聚合可以高效的编码细粒度信息。


对于每个空间位置image.png, outlook注意力计算以image.png为中心的大小为k×k 的局部窗口内所有邻近结点的相似度。不同于自我注意力需要一个Query-Key矩阵乘法来计算注意力,outlook直接通过一个简单的reshape操作来简化这个过程。具体来说,输入X 每个C-dim token使用两个线性层


image.png


进行映射得到outlook权重image.png, value表示image.png,然后我们image.png用来表示在以为中心的局部窗口的所有value:


image.png


最后,在image.png位置的outlook 权重可以直接用作注意力权值,首先可以通过一个reshape操作image.png后接Softmax:


image.png


outlook 注意力将特征进行聚集映射,即将同一位置的不同加权值相加得到输出:


image.png


下图给出了Pytorch风格的伪代码实现,其中Eqn3,Eqn4, Eqn5对应上面三个公式。


640.jpg


2.4 Multi-Head Outlook Attention


多头Outlook注意力的实现非常简单,假设头数为N。我们仅需调节WA的形状为image.png。因此,outlook权值与值嵌入被均匀的拆分为N份:image.png


对于每对,Outlook注意力分别计算后并结果拼接构成多头Outlook注意力的输出。


2.5 Discuss


outlook attention继承了卷积和自我注意力的优点。具体如下:


  1. outlook注意力通过度量每对标记表示之间的相似性来对空间信息进行编码,在特征学习方面比卷积更具有参数效率;
  2. outlook attention采用滑动窗口方式,在细粒度级别实现了对标记表示进行局部编码,并在一定程度上保留视觉任务的关键位置信息;
  3. outlook产生注意力权重的方法简单有效。与依赖于query-key矩阵乘法的自我注意力不同,我们的outlook权重可以通过一个简单的reshape操作直接产生,节省计算。具体示例如下:我们比较了在滑动窗口大小为, token大小为上计算参数量:


640.jpg


可以看到,当C=384,K=3,N=6时,因为,,所以outlook attention在计算资源利用上更高效。


3模型架构


主要借鉴了LV-ViT模型,VOLO的具体设置如下:为了获取到细粒度的token表示,在第一阶段,我们首先调整patch嵌入模块,使其在大小为的小图像patch上进行标记序列化,而不是然后通过堆叠一系列Outlookers生成更具细粒度特征表达能力的token表示。第二阶段,利用另一个patch embedding 模块对标记进行下采样。然后采用一组Transformer block对全局信息进行编码。我们基于VOLO提出了五个版本: VOLO: VOLO-D1, VOLO-D2,VOLO-D3, VOLO-D4, and VOLO-D5. 具体详细结构及配置信息如表2,表3所示:


640.png

640.jpg


4实验结果

我们首先在ImageNet上进行了所提方法的性能对比,然后在下游任务上进行迁移能力对比。

4.1 ImageNet Classification


640.png


如上表所示,在不同的模型尺寸水平上,我们提出的VOLO取得了比当前最先进的模型更佳的性能。具体如下:


  • 在不同水平模型下,所提方法均取得了比其他方案更佳的性能
  • 以VOLO-D1为例,它仅需26.6M参数,在224分辨率即可取得84.2%的top1精度,在384分辨率可以进一步提升到85.2%,显著优化其他同等参数量的模型;
  • 当模型参数量提升到296M,所提方案在ImageNet上达到了87.1%的top1精度,此为无额外训练数下的新记录。也即是说,VOLO-D5是业界首个仅需ImageNet训练数据即可达到87.1%top1精度的模型
  • 所提方案在RealTop1与V2Top1基准上同样取得了最佳指标。VOLO-D4仅需193M参数量即可超过其他模型,包含CaiT-M48与NFNet。
  • 更具体地,所提方法在ImageNetV2上的表现更佳。比如VOLO-D3可以在此前最佳指标的基础上提升0.8%且参数量更少;而VOLO-D5则可以进一步将模型性能提升到78%。


4.2 Semantic Segmantation


接下来,我们以前述预训练模型在语义分割任务上进行迁移能力验证。


如下表9所示,在Cityscapes数据上,所提方法超过了其他所有方法,包含最近的SegFormer-B5. 所提VOLO-D4+UperNet取得了当前最佳84.3%,以0.3%指标优于此前最佳,创造了Cityscapes验证集的新记录。


640.png


如下表10所示,在ADE20K数据集上,所提方法同样取得了超过其他所有方法的性能。VOLO-D5取得了54.3%的指标,同样刷新了ADE20K数据集上的记录。


640.png


4.3 Ablation Analysis


640.png


上表对比了模型缩放的性能影响,从中可以看到:


  • 模型缩放有助于提升模型性能,比如VOLO-D1到VOLO-D2可以带来1%的性能提升,VOLO-D5可以带来额外的1%提升;
  • 更高分辨率的微调同样可以带来性能提升,约1%。


640.png


上表对比了,Outlooker数量与头数的影响对比,从中可以看到:


  • 当步采用Outlooker时,基线模型的性能为83.3%,添加Outlooker可以提升模型型性能,当增加到4时性能达到饱和。Outlooker与Transformer的比例约为1:3时取得最佳性能。
  • Outlooker中使用更多的头可以带来轻微的性能提升且几乎不会造成额外参数量提升。


5总结


全文到此结束,更多消融实验与分析建议查看原文。


本文亮点总结

1. 本文发现,限制ViT在ImageNet分类方面性能的主要原因在于其将细粒度特征编码为词表达过程的低效性。

2. VOLO可以视作两阶段架构,第一个阶段包含多个用于生成细粒度词表达的Outlookers;第二个阶段采用transformer序列集成全局信息。

3. 无需任务额外训练数据,VOLO成为ImageNet分类任务上首个达到87.1%top1精度的模型。预训练VOLO在下游任务上的迁移能力也非常好,在语义分割任务中,在ADE20K验证集上达到了54.3%,在Cityscapes验证集上达到了84.3%的mIoU指标,均创下了新记录。

相关文章
|
算法 数据挖掘 Python
使用python实现FP-Growth算法
使用python实现FP-Growth算法
402 0
|
机器学习/深度学习
Transformer模型中前置Norm与后置Norm的区别
Transformer模型中前置Norm与后置Norm的区别
490 2
|
JSON Dart 安全
国庆假期,整整七天,我使用Flutter终于做出了即时通信!!!😤
7天时间,踩了很多很多坑,终于完成了Flutter WebSocket即时通讯的功能,个人觉得蛮有学习意义的,来看看吧!哦对了,求个赞,哥哥们,国庆假期就贡献在这里啦~
|
机器学习/深度学习 开发框架 .NET
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
3889 0
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
|
SQL 关系型数据库 Go
Golang ORM框架介绍及比较
Golang ORM框架介绍及比较
|
存储 缓存 安全
Java性能优化(二):Java基础-String对象及其性能优化
在深入探讨了String字符串的性能优化后,我们认识到优化字符串处理对提升系统整体性能的重要性。Java在版本迭代中,通过精心调整成员变量和内存管理机制,不断对String对象进行优化,以更高效地使用内存资源。String对象的不可变性是Java语言设计中的一个关键特性,它不仅确保了字符串的安全性,也为字符串常量池的实现提供了基础。通过减少相同值的字符串对象的重复创建,常量池有效地节约了内存空间。然而,不可变性也带来了挑战。在处理长字符串拼接时,我们需要显式使用类来避免性能下降。
238 1
|
存储 大数据 数据库
深入理解数据库索引优化技术
本文将深入探讨数据库索引优化技术,包括索引的基本概念、常见的索引类型以及如何选择和创建适当的索引。通过了解索引的原理和优化策略,读者可以提高数据库查询性能并优化数据访问效率。
|
算法 计算机视觉
图像分割的两种算法
图像分割的两种算法
1200 0
|
人工智能 Dragonfly 开发框架
GPT-4 太贵?试试这 6 个免费且优秀的替代方案
GPT-4 太贵?试试这 6 个免费且优秀的替代方案
9029 0
GPT-4 太贵?试试这 6 个免费且优秀的替代方案