ResT v2 论文解读

paper:ResT V2: Simpler, Faster and Stronger

official implementation:https://github.com/wofmanaf/ResT

出发点

ResTv2的设计目标是改进先前版本ResTv1的结构,以提高模型的效率和性能。ResTv1通过引入多尺度注意力机制(EMSA),在视觉识别任务中取得了良好的效果。然而,EMSA的下采样操作会损失部分重要信息,特别是在早期阶段。为了弥补这一问题,ResTv2引入了上采样操作,构建了独立的卷积沙漏结构,以更高效地捕捉局部信息。

创新点

  1. 简化的EMSA结构:ResTv2通过移除多头交互部分,简化了EMSA结构,减少了计算复杂度。
  2. 上采样操作:为了重建下采样操作丢失的中高频信息,ResTv2引入了多种上采样策略,如“nearest”、“bilinear”和“pixel-shuffle”等。其中,pixel-shuffle策略效果最好。
  3. 独立卷积沙漏架构:EMSA v2的“下采样-上采样”组合构建了一个独立的卷积沙漏架构,能够高效地捕捉局部信息,这些信息对长距离依赖关系是补充。

方法介绍

如图1所示,虽然EMSA中的降采样操作可以显著降低计算开销,但不可避免地会丢失一些重要信息,特别是在早期阶段。为了在不对实际运行速度产生较大影响的前提下,有效地重构丢失的信息,作者提出直接对values进行上采样操作。有多种上采样策略,比如“nearest”,“bilinear”,“pixel-shuffle”等,作者发现它们都能提高模型性能,但pixel-shuffle(首先利用一个DWConv来扩展通道维度,然后再使用pixel-shuffle来上采样空间维度)表现最好。这样得到的新的self-attention结构称为EMSA v2,如图2(b)所示。【注:代码中通过Pytorch中的nn.PixelShuffle来实现上采样,它是将通道维度的值重排列移动到空间维度,类似于Yolo v5中focus的逆操作】

EMSA v2中的“下采样-上采样”组合恰好组成了一个独立的卷积沙漏结构,它可以用较少的额外参数和计算开销有效地捕捉局部信息,作为长距离依赖的补充。此外作者发现,EMSA v2中的多头交互模块尽管可以提高最终性能,但会降低实际推理速度。并且性能提升会随着每个head的通道维度的增加而降低。因此为了更快的推理速度我们在默认设置中删去了它。但如果head维度很小(例如64或更小),multi-head interaction module的作用会更显著。EMSA v2可以表示如下

实验结果

基于EMSAv2,作者构建了不同大小的ResTv2,具体配置如下

在ImageNet上的结果如表1所示,可以看到ResT v2相较于v1获得了明显的提升,比如ResTv2-T比ResTv1-B精度提升了0.7%同时推理速度更快。和其它模型相比提升也很明显,例如ResTv2-T比Swin-T精度提升了1%。

在下游任务例如COCO上的目标检测、ADE20K上的语义分割上的提升也很明显。 

作者还进行了一些消融实验,例如本文采用的是对value进行上采样,还可以对下采样的结果 \(x'\) 或key进行上采样,结果如下表所示,可以看到对value上采样的效果是最好的。 

下面是不同上采样方法的对比,可以看到pixel-shuffle的效果最好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3270001.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

深入源码:解析SpotBugs静态代码分析框架 0

文章目录 引言SpotBugs概述启动附录 引言 SpotBugs是一个开源的Java静态分析工具,旨在帮助开发人员检测Java代码中的潜在缺陷和漏洞。以下是对SpotBugs的详细解释: SpotBugs概述 定义与功能:SpotBugs是FindBugs的继任者。FindBugs是一个广受…

甲方产品过于平庸该如何编写策划案?

面对甲方产品相对平庸的情况,作为策展新人,你需要发挥创意和策略思维,通过巧妙的策划来挖掘和呈现产品的独特价值,让观众在展馆中依然能找到吸引他们的亮点。 以下是一些建议,希望能帮助你编写出既真实又能吸引眼球的…

基于JSP、java、Tomcat、mysql三层交互的项目实战--校园交易网(2)登录,注册功能实现

技术支持:JAVA、JSP 服务器:TOMCAT 7.0.86 编程软件:IntelliJ IDEA 2021.1.3 x64 登陆页面如下 在这个页面中我们实现了一个登录页面和一个注册页面的Jsp文件,和两个java 的服务层文件 分别是web包下的denglu.jsp和zhuce.jsp以…

【Django】js实现简单计算器

文章目录 完整html写script写views写urls ##需求 ##实验 完整html {% load static %} <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

【JUC】Java锁介绍

文章目录 阿里锁开发规范乐观锁和悲观锁悲观锁乐观锁 synchronized 类锁、对象锁synchronized有三种应用方式锁相关的8种案例演示&#xff08;对象锁、类锁&#xff09;标准访问ab两个线程&#xff0c;请问先打印邮件还是短信&#xff1f;sendEmail钟加入暂停3秒钟&#xff0c;…

c++入门----类与对象(中)

OK呀&#xff0c;家人们承接上文&#xff0c;当大家看过鄙人的上一篇博客后&#xff0c;我相信大家对我们的c已经有一点印象了。那么我们现在趁热打铁再深入的学习c入门的一些知识。 类的默认成员函数 首先我们学习的是我们的默认函数。不知道大家刚读这个名词是什么反应。默认…

鱼哥好书分享活动第27期:看完这篇《云原生安全》了解云原生环境安全攻防实战技巧!

鱼哥好书分享活动第27期&#xff1a;看完这篇《云原生安全》了解云原生安全攻防实战技巧&#xff01; 主要内容&#xff1a;读者对象&#xff1a;本书目录&#xff1a;了解更多&#xff1a;赠书抽奖规则: 当前全球数字化的发展逐步进入深水区&#xff0c;云计算模式已经广泛应用…

【Linux C | 网络编程】简易进程池的实现详解(一)

进程池&#xff08;Process Pool&#xff09;是一种并发编程的模型&#xff0c;用于管理和复用多个进程&#xff0c;以提高系统的效率和性能。它主要解决的问题是减少因频繁创建和销毁进程而带来的性能开销&#xff0c;特别是在需要处理大量并发任务时尤为有效。 主要组成部分…

法律 | 法律人AI使用指南

原文&#xff1a;法律 | 法律人AI使用指南|法官|法院|文书|公司法_网易订阅 01 引言 过去半年多&#xff0c;我一直在尝试着用AI来辅助自己的各项法律工作&#xff0c;将AI融入自己的日常工作之中&#xff0c;并试图形成自身稳定的“法律AI”工作流。在此过程中&#xff0c;…

实时捕获数据库变更

1.CDC概述 CDC 的全称是 Change Data Capture &#xff0c;在广义的概念上&#xff0c;只要能捕获数据变更的技术&#xff0c;我们都可以称为 CDC 。我们目前通常描述的CDC 技术主要面向数据库的变更&#xff0c;是一种用于捕获数据库中数据变更的技术&#xff0c;CDC 技术应用…

【Plotly-驯化】一文教你学会画最美动态可视化的热力图:heatmap技巧

【Plotly-驯化】一文教你学会画最美动态可视化的热力图&#xff1a;heatmap技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取…

JS:JavaScript 简介

前言 在当今数字时代&#xff0c;JavaScript已然成为了现代Web开发的基石。从最初作为浏览器中的一个小型脚本语言&#xff0c;到如今成为驱动全球互联网的强大引擎&#xff0c;JavaScript的发展历程本身就是一个令人着迷的故事。 好了开始学习JS吧 1. 如果刚开始了解js&#…

智慧城管解决方案

1. 项目整体概述 智慧城管项目面临历史发展机遇&#xff0c;十九大提出以人为核心保障民生&#xff0c;推进新型城镇化。市民对政府服务有新诉求&#xff0c;同时云计算、物联网、移动互联网等技术迅速发展。 2. 传统城管业务模式问题 传统城管业务模式存在问题&#xff0c;…

leetcode106. 从中序与后序遍历序列构造二叉树,力扣105姊妹题

leetcode106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…

【每日刷题】Day86

【每日刷题】Day86 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; 2. 数组中出现次数超过一半的数字_牛客题霸…

详解Mysql InnoDB引擎 04

文章目录 1. InnoDB 简介2. 逻辑存储结构2.1 表空间 idb文件2.2 段2.3 区 1M2.4 页 16KB2.5 行 3. 架构3.1 内存结构3.1.1 Buffer Pool 缓冲池3.1.2 Change Buffer 更改缓冲区3.1.3 Adaptive Hash Index3.1.4 Log Buffer 3.2 磁盘结构 4. 后台线程5. 事务原理5.1 redo log 重做…

C++的STL简介(一)

目录 1.什么是STL 2.STL的版本 3.STL的六大组件 4.string类 4.1为什么学习string类&#xff1f; 4.2string常见接口 4.2.1默认构造 ​编辑 4.2.2析构函数 Element access: 4.2.3 [] 4.2.4迭代器 ​编辑 auto 4.2.4.1 begin和end 4.2.4.2.regin和rend Capacity: 4.2.5…

LangChain曝关键漏洞,数百万AI应用面临攻击风险

LangChain是一个流行的开源生成式人工智能框架&#xff0c;其官网介绍&#xff0c;有超过一百万名开发者使用LangChain框架来开发大型语言模型&#xff08;LLM&#xff09;应用程序。LangChain的合作伙伴包括云计算、人工智能、数据库和其他技术开发领域的许多知名企业。 近日&…

前端模块化CommonJS、AMD、CMD、ES6

在前端开发中&#xff0c;模块化是一种重要的代码组织方式&#xff0c;它有助于将复杂的代码拆分成可管理的小块&#xff0c;提高代码的可维护性和可重用性。CommonJS、AMD&#xff08;异步模块定义&#xff09;和CMD&#xff08;通用模块定义&#xff09;是三种不同的模块规范…

数据库设计过程概述

1.首先进行需求分析&#xff0c;通过数据流图&#xff0c;数据字典&#xff0c;需求说明书等确定数据处理要求 2.概要结构设计 3.逻辑结构设计 4.物理设计