在Transformer模块上用CNN网络搭建方式解决图像分类问题

这篇具有很好参考价值的文章主要介绍了在Transformer模块上用CNN网络搭建方式解决图像分类问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

来源:投稿 作者:摩卡
编辑:学姐

论文标题:DeepViT: Towards Deeper Vision Transformer

Motivation

本文受到传统CNN网络搭建方式的启发(深层的CNN网络可以学习到关于图像更加丰富和复杂的表示), 于是思考是否可以将这种搭建方式迁移到Transformer模块上, 以此搭建深度的Transformer网络结构处理图像分类问题。

但是在搭建过程中发现了一个反常识的问题:

随着Transformer模块堆叠模型的深度变深,按照常理由于注意力模块数量变多模型的性能会相应的提高,但是试验结果表明在基线模型(ViT 2020年提出的纯Transformer模块搭建的图像分类模型)达到一定深度时(24层),模型效果达到最好,此后随着Transformer层数的增加分类效果会下降。

作者将这一现象称为attention collapse!

在Transformer模块上用CNN网络搭建方式解决图像分类问题

Analysis

为了研究清楚这一反常识现象,本文作者在基线模型的基础上进行研究,作者对每个Transformer模块与其相近的模块进行余弦相似度的计算(threshold=0.8),如果余弦相似度的值大于threshold,则将这两个相邻Transformer模块的attention map 视为相似。

其结果如下图所示:

在Transformer模块上用CNN网络搭建方式解决图像分类问题

图a表示不同层数的Transformer模块与其邻近的(k=1, 2, 3)三个模块之间的相似度。由图可以看出,随着模型的加深不同Transformer模块的attention map 与其相邻模块的attention map 相似度不断增加。

图b表示不同层数具有相似attention map的Transformer模块占总模块的比例。由图可知,在深度达到32层时,有16个模块具有相似的attention map。

图c表示的是第32层Transformer模块中每个head所捕获的attention map 的相似度(此处的threshold=0.5, 也为余弦相似度),由图可知即使在深度很深的32层Transformer模块中不同head所获取到的attention map 并不相同。

Method

在经过上述分析后,作者提出了两种解决方法:

(1)扩大hidden layer中神经元的个数。

(2)提出了一种re-attention的方法代替self-attention。

在Transformer模块上用CNN网络搭建方式解决图像分类问题

表1表示的是在基线模型上(ViT)12层上扩大hidden layer中神经个数。可以看到随着神经元个数的增加,在ImageNet Top-1Acc也会随之提高。不过该方法会增加计算资源的消耗。

Re-attention

此外在本文中作者还提出了一种解决方法:Re-attention方法。

公式如下:

在Transformer模块上用CNN网络搭建方式解决图像分类问题

在原有Transformer attention的基础上引入了一个可学习转换矩阵(自己定义的)(H为Transformer模块中多头注意力head的个数)。

其模型图如下:

在Transformer模块上用CNN网络搭建方式解决图像分类问题

为了验证这一改进有没有效果,作者可视化了改进之后的Feature map(attention map*V)

在Transformer模块上用CNN网络搭建方式解决图像分类问题

上图表明将self-attention换成re-attention机制后明显的缓解了attention collapse现象。

Result

最后与SOTA进行比较,结果如下表所示:

在Transformer模块上用CNN网络搭建方式解决图像分类问题

个人体会

个人觉得该论文的亮点主要分为两方面:

(1)对于Transformer模块的细致分析,从发现问题开始将发现的问题定义为attention collapse,然后一步一步对每一层Transformer模块中的attention map/feature map 进行分析,并且还分析了multi-head attention 每个头捕获到的特征(解决了上周的一个小疑问)。

(2)使用re-attention替换multi-head attention中的self-attention。此处的新颖之处是在改变self-attention 结构解决attention collapse问题时只定义了一个可学习参数、使用了LayerNorm, 并没有扩充Transformer占用的内存资源。

关注下方《学姐带你玩AI》🚀🚀🚀

回复“500”获取更多经典高分论文

码字不易,欢迎大家点赞评论收藏!文章来源地址https://www.toymoban.com/news/detail-444363.html

到了这里,关于在Transformer模块上用CNN网络搭建方式解决图像分类问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • U-Net Transformer:用于医学图像分割的自我和交叉注意力模块

    对于复杂和低对比度的解剖结构,医学图像分割仍然特别具有挑战性。本文提出的一种U-Transformer网络,它将Transformer中的self-attention和Cross attention融合进了UNet,这样克服了UNet无法建模长程关系和空间依赖的缺点,从而提升对关键上下文的分割。本文集合了两种注意力机制:自

    2024年02月06日
    浏览(28)
  • 卷积神经网络(CNN)实现图像分类——Python

    卷积神经网络(CNN)实现图像分类——Python 输入 1 测试一张图片并预测结果 输入 2 对测试集整体进行测试,得出准确率(10秒左右) 输入其他数字自动退出程序 本程序包含python库较多,请自行配置(pip), 如有需求,请评论或私信 ! 回复其他数字会自动退出程序 输入图片

    2024年02月06日
    浏览(29)
  • Bilinear CNN:细粒度图像分类网络,对Bilinear CNN中矩阵外积的解释。

    细粒度图像分类(fine-grained image recognition)的目的是区分类别的子类,如判别一只狗子是哈士奇还是柴犬。细粒度图像分类可以分为基于强监督信息(图像类别、物体标注框、部位标注点等)和基于弱监督信息(只有图像类别),具体可以参考 细粒度图像分类 Bilinear CNN 是

    2024年02月10日
    浏览(28)
  • 无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv

    (67条消息) 无卷积步长或池化:用于低分辨率图像和小物体的新CNN模块SPD-Conv-行业报告文档类资源-CSDN文库 https://download.csdn.net/download/weixin_53660567/86737435 摘要 卷积神经网络 (CNNs) 在图像分类和目标检测等计算机视觉任务中取得了显著的成功。然而,当图像分辨率较低或物体较小

    2024年02月02日
    浏览(29)
  • [全连接神经网络]Transformer代餐,用MLP构建图像处理网络

            使用纯MLP处理图像信息,其原理类似vit,将图片进行分块(patch)后展平(fallten),然后输入到MLP中。理论上MLP等价于1x1卷积,但实际上1x1卷积 仅能结合通道信息 而不能结合空间信息。根据结合的信息不同分为channel-mixing MLPs和token-mixing MLPs。        总体结构如下图

    2024年01月21日
    浏览(33)
  • 神经网络--从0开始搭建全连接网络和CNN网络

    前言: Hello大家好,我是Dream。 今天来学习一下如何从0开始搭建全连接网络和CNN网络,并通过实验简单对比一下两种神经网络的不同之处,本文目录较长,可以根据需要自动选取要看的内容~ 说明:在此试验下,我们使用的是使用tf2.x版本,在jupyter环境下完成 在本文中,我们

    2024年02月19日
    浏览(28)
  • 【Pytorch】计算机视觉项目——卷积神经网络CNN模型识别图像分类

    在上一篇笔记《【Pytorch】整体工作流程代码详解(新手入门)》中介绍了Pytorch的整体工作流程,本文继续说明如何使用Pytorch搭建卷积神经网络(CNN模型)来给图像分类。 其他相关文章: 深度学习入门笔记:总结了一些神经网络的基础概念。 TensorFlow专栏:《计算机视觉入门

    2024年02月05日
    浏览(39)
  • 卷积神经网络教程 (CNN) – 使用 TensorFlow 在 Python 中开发图像分类器

    在这篇博客中,让我们讨论什么是卷积神经网络 (CNN) 以及 卷积神经网络背后的 架构 ——旨在 解决   图像识别 系统和 分类 问题。 卷积神经网络在图像和视频识别、推荐系统和 自然语言处理方面有着 广泛的应用 。 目录 计算机如何读取图像? 为什么不是全连接网络?

    2024年02月12日
    浏览(32)
  • 从零使用TensorFlow搭建CNN(卷积)神经网络

    🍅 写在前面 👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。 🔎个人主页:主页链接(欢迎各位大佬光临指导) ⭐️近期专栏:机器学习与深度学习                        LeetCode算法实例 本节内容主要向大家

    2023年04月22日
    浏览(36)
  • YOLOV5/YOLOV7/YOLOV8改进:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv

    1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 3.涨点效果:SPD-Conv提升小目标识别,实现有效涨

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包