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

【ViT论文】NotAllPatchesareWhatYouNeed:ExpeditingVisionTransformersviaTokenReorganizations

论文地址:http:arxiv.orgabs2202.07800项目地址:https:github.comyouweiliangevit在这项工作中&#

在这里插入图片描述


论文地址:http://arxiv.org/abs/2202.07800
项目地址:https://github.com/youweiliang/evit


在这项工作中,作者在 ViT 模型的前馈过程中重新组织图像标记,在训练期间将其集成到 ViT 中。由相应的类令牌注意力引导识别 MHSA 和 FFN(即前馈网络)模块之间的注意力图像令牌,然后,通过保留注意图像标记和融合非注意图像标记来重组图像标记,以加快后续的 MHSA 和 FFN 计算。
在相同数量的输入图像标记下,该方法减少了 MHSA 和 FFN 计算以实现高效推理。例如,在 ImageNet 分类任务中,DeiT-S的推理速度提高了 50%,而识别准确率仅下降了 0.3%。另外,在保持相同的计算成本的情况下,该方法使 ViT 能够将更多的图像标记作为识别精度提高的输入(更高分辨率的图像),在与普通 DeiT-S 相同的计算成本的情况下,将 DeiT-S 的 ImageNet 分类识别精度提高了 1%,同时也没有引入更多的参数。

在这里插入图片描述


注意标记识别(Attentive Token Identification)

通过计算每个token的所有Heads的平均注意力值作为该token的注意力值(如下列公式),之后识别出k个注意力值最大的tokens作为Attentive Tokens直接保留至下一阶段,而其他的inattentive tokens则被融合为一个新的token。




非注意标记融合(Inattentive Token Fusion)

尽管背景标记的信息量较少并且可以被丢弃而不会显着影响 ViT 模型的性能,但仍然可能有助于预测结果。另外,一些图像的目标对象可能具有占据图像的大部分区域。因此,当选择固定数量的令牌保留在 ViT 编码器中时,可能会删除一些包含有图像信息的令牌会对图像识别性能产生负面影响。
融合 inattentive tokens 来补充 attentive tokens(如图 2 所示)有利于保留由 inattentive tokens 提供的部分信息。
具体来说,非注意标记融合是一种对 inattentive tokens的加权平均操作(如下列公式)。



融合后的非注意标记被附加到保留的注意标记后发送到后续层。与 ViT 的计算量相比,非注意标记融合的计算成本可以忽略不计。


个人总结

这篇文章是2022年的一篇文章,但是感觉整个机制十分地简单粗暴,就是计算注意力分数然后取top-k的token,再把剩余token融合成1个token。根据k的大小不同,可以节省不同比例的计算量。图像的信息冗余性本身就比较大,因此这种方式如果k取比较合适的值,应当可以取得文章中的效果。


推荐阅读
  • Spring Cloud Config 使用 Vault 作为配置存储
    本文探讨了如何在Spring Cloud Config中集成HashiCorp Vault作为配置存储解决方案,基于Spring Cloud Hoxton.RELEASE及Spring Boot 2.2.1.RELEASE版本。文章还提供了详细的配置示例和实践建议。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 本文详细介绍了如何在Linux系统中安装和配置GitLab Runner,包括添加YUM源、安装GitLab Runner以及注册Runner的具体步骤。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 深入理解TCP/IP协议中的MTU与MSS及以太网数据帧
    本文详细探讨了TCP/IP协议中MTU(最大传输单元)和MSS(最大分段大小)的概念及其在以太网数据帧中的应用。通过分析这些关键参数的工作机制,帮助读者更好地理解网络通信中的数据包处理过程。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 地球坐标、火星坐标及百度坐标间的转换算法 C# 实现
    本文介绍了WGS84坐标系统及其精度改进历程,探讨了火星坐标系统的安全性和应用背景,并详细解析了火星坐标与百度坐标之间的转换算法,提供了C#语言的实现代码。 ... [详细]
  • 本文将详细介绍NSRunLoop的工作原理,包括其基本概念、消息类型(事件源)、运行模式、生命周期管理以及嵌套运行等关键知识点,帮助开发者更好地理解和应用这一重要技术。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
author-avatar
丨火云邪神丨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有