热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ConvMLP:你见过长得像CNN的MLP吗?UOUIUC提出了用于视觉任务的层次卷积MLP

关注公众号,发现CV技术之美本文分享论文『ConvMLP:HierarchicalConvolutionalMLPsforVision』,由UO&UIU

关注公众号,发现CV技术之美

本文分享论文『ConvMLP: Hierarchical Convolutional MLPs for Vision』,由 UO&UIUC 提出 ConvMLP:一个用于视觉识别的层次卷积MLP,且是一个轻量级、阶段级、具备卷积层和MLP的设计。ConvMLP在ImageNet-1k、2.4G MACs和9M参数量上达到了76.8% 的Top-1精度。

详细信息如下:

0c259f29190131e368f10b017e495f30.png

  • 论文链接:https://arxiv.org/abs/2109.04454

  • 项目链接:https://github.com/SHI-Labs/Convolutional-MLPs

导言:

b3c9d1817b94609901e4968e7971cb2b.png

     最近发现,由一系列连续的多层感知机块(MLP Block)组成的基于MLP的架构,可以达到与基于卷积和Transformer的方法相当的结果。然而,大多数方法都采用了固定维度输入的空间MLP,因此很难将其应用于下游任务,如目标检测和语义分割 。此外,单阶段设计进一步限制了其他计算机视觉任务的性能,且全连接层具有较大的计算量。

     为了解决这些问题,作者提出了ConvMLP:一个用于视觉识别的层次卷积MLP,这是一个轻量级、阶段级、具备卷积层和MLP的设计。ConvMLP在ImageNet-1k、2.4G MACs和9M参数量上达到了76.8% 的Top-1精度。目标检测和语义分割的实验进一步表明,ConvMLP学习的视觉表示可以无缝迁移,并在较少的参数下获得有竞争力的结果。

      01      

Motivation


图像分类是计算机视觉中的一个基本问题,过去五年来,大多数里程碑式的解决方案都是由深度卷积神经网络主导的。自2020年底,视觉Transformer的兴起以来,研究人员不仅将Transformer应用于图像分类,而且还探索了除卷积神经网络之外的更多的模型。

MLP-Mixer提出了token混合和通道混合mlp,以允许空间位置和通道之间的交互。ResMLP使用跨patch和跨通道子层作为构件。gMLP]通过添加空间门控单元来连接通道MLP。从本质上说,基于MLP的模型表明,在分类任务上,简单的前馈神经网络可以实现与卷积和attention相似的操作。

然而,使用mlp对空间信息进行编码需要固定输大小入的维度 ,这使得很难部署在一些下游的计算机视觉任务上(如目标检测和语义分割),因为它们通常需要任意输入大小的分辨率。此外,单阶段设计可能会限制目标检测和语义分割的性能 ,因为它们是基于特征金字塔进行预测的。mlp也带来了沉重的计算负担和更多的参数 。比如,MLP-Mixer的只能略超过ViT-Base,但是参数量和计算量是ViT-Base的两倍多。

3a7d8404424d154f6329c08aceb7bb40.png

基于这些观察结果,作者提出了ConvMLP:用于视觉识别的层次卷积MLP主干,它是卷积层和MLP层的组合,可以用于目标检测和分割等下游任务,如上图所示。为了解决MLP的框架中对输入维度的约束,作者首先将所有空间mlp替换为跨通道连接 ,并建立一个纯MLP baseline模型。

为了弥补空间信息交互,作者在其余的MLP阶段上添加了一个轻量级的卷积阶段 ,并使用卷积层进行降采样 。此外,为了增加MLP阶段的空间连接,作者在每个MLP块中的两个通道MLPs之间添加了一个3×3深度卷积 ,因此称之为Conv-MLP块。作者通过对卷积层和MLP层的共同设计,建立了用于图像分类的ConvMLP模型的原型。

与最近的基于MLP的模型相比,它以更少的参数在ImageNet-1k上实现了不错性能。在目标检测和语义分割方面,作者在MSCOCO和ADE20K基准数据集上进行了实验。结果表明,使用ConvMLP作为主干网络,可以在性能和模型大小之间实现更好的权衡。


      02      

方法


2.1.整体设计

459b077e29056da800755a441245001a.png

ConvMLP的整体框架如上图所示。与其他基于MLP的模型不同,作者使用卷积tokenizer来提取初始特征图()。为了减少计算和改善空间连接,作者采用纯卷积阶段进行tokenization,生成特征图()。然后,作者设置3个Conv-MLP阶段,生成2个特征图和(分别为和)。每个Conv-MLP阶段包括多个Conv-MLP块,每个Conv-MLP块有一个通道MLP,然后是一个深度卷积层,然后是另一个通道MLP。

与之前的工作类似,作者在这些块中应用了残差连接和层归一化。每个通道MLP由两个全连接层组成,带有一个GeLU激活函数和dropout。然后,作者将全局平均池化应用到输出特征上,并通过分类head进行分类。当将ConvMLP应用于下游任务时,可以使用特征映射、、、来生成没有输入大小约束的特征金字塔。

2.2.卷积Tokenizer

作者用卷积Tokenizer替换原来的Patch Tokenizer。它包括三个卷积块,每个块由一个3x3的卷积、BatchNorm和ReLU激活函数组成。该Tokenizer还附加了一个最大池化层。

2.3.卷积阶段

为了增加空间连接,作者采用了完全卷积的阶段。它由多个块组成,其中每个块由两个1x1卷积层组成,中间有一个3x3卷积层。(蓝色框所示)

2.4.Conv-MLP阶段

为了减少对输入维度的约束,作者用通道mlp替换所有的空间mlp。但是这样会导致在空间上缺少信息的交互,因此作者通过添加卷积层来进行局部信息交互,以弥补空间交互的缺失。(橘色框所示)

Convolutional Downsampling

在baseline模型中,作者遵循了Swin Transformer中使用基于线性层的patch合并方法来对特征图进行下采样的设计方式。不同的是,作者用步长为2的3x3卷积层替换patch合并,这使得下采样的时候,能够有空间信息的重叠。这提高了分类精度,同时只引入了很少的参数。

Convolution in MLP block

作者进一步在MLP块中的两个通道mlp之间添加了一个深度卷积层,并将其命名为Conv-MLP块。它是一个3x3卷积层,与两个通道mlp的通道数相同,用于增强相邻窗口的联系。这弥补了去除空间mlp的不足,从而大幅度地提高了性能,而只带来很少的参数。

2.5. Model Scaling

f230094adee251dee39599bfe146a31b.png

为了使ConvMLP可拓展,作者在卷积阶段和Conv-MLP阶段的宽度和深度上扩展了ConvMLP。基于此,作者提出了3个ConvMLP变体。最小的ConvMLP-S只从两个卷积块开始,在3个ConvMLP阶段中,分别有2、4和2个Conv-MLP块。ConvMLP-M和ConvMLP-L从三个卷积块开始。在3个Conv-MLP阶段中,ConvMLP-M有3、6、3个Conv-MLP块,ConvMLP-L在有4、8、3个Conv-MLP块。具体细节如上表所示。


      03      

实验


3.1.  Ablation Study

08693214240106b2752a2ef0607238cc.png

在Baseline的基础上,作者加入了不同模块,进行消融实验。上表显示了不同消融模块作用,可以看出,本文提出的所有模块都对于性能提升都有作用。

3.2. Comparisons with SOTA

2a88606e358e7cbe68925e1dcdb52b43.png

在ImageNet-1k图像分类上,作者将ConvMLP与的其他SOTA模型进行了比较。

3.3. Transfer learning

5bd34263f1c5a91e3b1986c5d65e5f72.png

为了验证本文方法在其他数据集上的迁移能力,作者在多个数据集上和其他方法进行对比,结果如上表所示。

3.4. Object Detection & Semantic Segmentation

2cb0bf7e9d4dddcf8d7cad3a71cc2fe2.png

上图显示了,在MS COCO和ADE20K数据集上,ConvMLP和ResNet作为RetinaNet, Mask R-CNN的Backbone的结果。基于ConvMLP的模型在不同的评估指标和任务下显示出一致的性能提升。

3.5. Visualization

aff957e24d6269687dea1e97731fdb79.png

可以观察到,与ResNet相比,ConvMLP学习的表示涉及更多的低级特征,如边缘或纹理,与Pure-MLP的baseline相比,涉及更多的语义信息。


      04      

总结

本文分析了当前基于MLP的模型对视觉表示学习的约束条件:1.空间mlp只接受固定分辨率的输入,使得难以转移到下游任务,如目标检测和分割 。2.由于增加的复杂度,单阶段设计和全连接层进一步限制了MLP结构的使用 。

为了解决这些问题,作者提出了ConvMLP:一个层次卷积MLP,通过结合卷积层和mlp来进行视觉表示的学习。ConvMLP架构可以无缝迁移到其他CV任务的网络中,如RetinaNet、MaskR-CNN和Semantic FPN。与其他方法相比,在不同基准数据集上,ConvMLP在参数较少的情况下,达到了不错的结果。

随着Transformer的兴起,目前大多数的工作是将CNN的设计理念结合到Transformer中。而本文重新revisit的MLP的不足(参数量大、过拟合等),并利用CNN的设计理念来缓解这些问题 。由于借鉴了CNN中的层次结构,因此,本文的方法在比较少的计算量下,也能达到比较好的效果。

作者介绍

研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。

知乎/公众号:FightingCV

57939e875e06ea19083ca520eb8fd87f.png

END

欢迎加入「计算机视觉交流群👇备注:CV

2df90a07103b019fe3a48312483b1db1.png



推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • adfs是什么_培训与开发的概念
    adfs是什么_培训与开发的概念(如您转载本文,必须标明本文作者及出处。如有任何疑问请与我联系me@nap7.com)ADFS相关开发技术的中文资料相对匮乏,之前在弄这个东西的时候 ... [详细]
author-avatar
我叫yyson_836
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有