【论文阅读】 Learning to Upsample by Learning to Sample

news2024/11/30 15:21:29

论文结构目录

  • 一、之前的上采样器
  • 二、DySample概述
  • 三、不同上采样器比较
  • 四、整体架构
  • 五、设计过程
    • (1)初步设计
    • (2)第一次修改
    • (3)第二次修改
    • (4)第三次修改
  • 六、DySample四种变体
  • 七、复杂性分析
  • 八、定性可视化
  • 九、对比实验分析
  • 十、DySample代码分析

在这里插入图片描述

论文地址:Liu_Learning_to_Upsample_by_Learning_to_Sample_ICCV_2023_paper.pdf
代码地址:https://github.com/tiny-smart/dysample.git

一、之前的上采样器

随着动态网络的普及,一些动态上采样器在几个任务上显示出巨大潜力。CARAFE通过动态卷积生成内容感知上采样核来对特征进行上采样。后续工作FADESAPA提出将高分辨率引导特征和低分辨率输入特征结合起来生成动态核,以便上采样过程能够受到更高分辨率结构的引导。这些动态上采样器通常结构复杂,推理时间成本高,特别是对于FADESAPA,高分辨率引导特征引入了更多的计算工作量,并缩小了它们的应用范围。

二、DySample概述

DySample是一种快速、有效且通用的动态上采样器,其主要概念是从点采样的角度来设计上采样过程,而不是传统的基于内核的动态上采样方法。DySample通过生成上采样位置而非内核,显著减少了计算资源的消耗,并且不需要定制的CUDA包。与其他动态上采样器相比,DySample在延迟(latency)、训练内存(memory)、训练时间(training time)、浮点运算次数(GFLOPs)和参数量(parameters)等方面表现出更高的效率。在本文测试DySample上采样模块的过程中,首先从一个简单的实现开始,然后通过不断调整公式和参数等逐步改进其性能。

三、不同上采样器比较

  • 该图是对不同上采样器的性能、推理速度和 GFLOPs 进行比较。
  • 圆圈大小表示 GFLOPs 成本。 通过将大小为 256×120×120 的特征图进行×2 上采样来测试推理时间。
  • 在大型室内场景 ADE20K 数据集上使用 SegFormer-B1 模型。
  • 测试平均交并比(mIoU)性能和额外增加的 GFLOPs

四、整体架构

与近期基于内核的上采样器不同,我们将上采样的本质理解为点重采样。在DySample中,有着基于动态上采样和模块设计的采样过程。其中输入特征X 、上采样特征X‘ 、生成偏移量O,原始采样网络G,采样集S

  • (a)图:采样集S由采样点生成器生成,通过网格采样函数对输入特征进行重新采样。
  • (b)图:采样集S=生成偏移量O+原始采样网络G。 上框表示具有静态范围因子的版本,其中偏移量通过线性层生成。下框描述具有动态范围因子的版本,其中先生成一个范围因子,然后用它来调制偏移量。σ表示 Sigmoid 函数。

五、设计过程

(1)初步设计

  • 变量注释:输入特征X 、上采样特征X‘ 、生成偏移量O,原始网格G,采样集S

X ′ = grid_sample ( X , S ) . (1) X' = \text{grid\_sample}(X, S).\tag{1} X=grid_sample(X,S).(1)

O = linear ( X ) , (2) O = \text{linear}(X),\tag{2} O=linear(X),(2)

S = G + O , (3) S = G + O,\tag{3} S=G+O,(3)

  • 目标检测:Faster R-CNN (DySample) : 37.9%的APFaster R-CNN (CARAFE):38.6%的AP
  • 语义分割:SegFormer-B1 (DySample) 获得了41.9%的mIoUSegFormer-B1 (CARAFE)
    42.8%的 mIoU

(2)第一次修改

  • 点和彩色掩码分别表示初始采样位置和偏移范围;
  • 本次示例,我们考虑采样四个点。

在这里插入图片描述

  • (a)在Nearest Initialization的情况下,四个偏移量共享相同的初始位置,这会导致初始采样位置分布不均匀;
  • (b)在Bilinear Initialization的情况下,我们将初始位置分开,使他们的初始采样位置分布均匀。

(3)第二次修改

我们发现,当(b)在没有偏移调制的情况下,偏移范围通常会重叠,所以在(c)中,我们局部约束偏移范围以减少重叠。

在这里插入图片描述
我们重写公式(2),通过不断实验确定静态范围因子为0.25时DySample达到最优效果
O = 0.25 × linear ( X ) (4) O = 0.25 \times \text{linear}(X) \tag{4} O=0.25×linear(X)(4)

(4)第三次修改

然而,乘以静态范围因子是重叠问题的一种软解法,这种方法无法完全解决问题。
在这里插入图片描述

最终我们引入动态范围因子,重写公式(4),并且通过不断实验确定分组卷积个数为g=4DySample达到最优效果。
O = 0.5 ⋅ sigmoid ( linear 1 ( X ) ) ⋅ linear 2 ( X ) (5) O = 0.5 \cdot \text{sigmoid}(\text{linear}_1(X)) \cdot \text{linear}_2(X) \tag{5} O=0.5sigmoid(linear1(X))linear2(X)(5)
通过第三次修改,DySample应用在Faster R-CNNSegFormer-B1 的效果超过CARAFE

六、DySample四种变体

DySample系列。根据范围因子的形式(静态/动态)和偏移生成样式(LP/PL),我们研究了四种变体:

  1. DySample:具有静态范围因子的LP风格;
  2. DySample+:具有动态范围因子的LP风格;
  3. DySample-S:具有静态范围因子的PL风格;
  4. DySample-S+:具有动态范围因子的PL风格。

其中LPPL即采样点生成器(Sampling Point Generator)中线性层和像素重排层的顺序:
在这里插入图片描述

七、复杂性分析

从图中可以就看出,DySample在延迟(latency)、训练内存(memory)、训练时间(training time)、浮点运算次数(GFLOPs)和参数量(parameters)等方面表现出更高的效率。

需要注意的是:

  • 虽然LP所需的参数比PL多,但前者更灵活,内存占用更小,推理速度更快;
  • S版本在参数和 GFLOPs 方面的成本更低,但内存占用和延迟更大,因为PL需要额外的存储。 +版本也增加了一些计算量。

八、定性可视化

在这里插入图片描述

九、对比实验分析

此处仅展示目标检测领域,该实验使用Faster R-CNNMSCOCO数据集上进行对比实验
可以看出DySample+版本在BackboneR50R101时均保持最优检测性能

十、DySample代码分析

上述代码就是公式(5)的具体实现
O = 0.5 ⋅ sigmoid ( linear 1 ( X ) ) ⋅ linear 2 ( X ) (5) O = 0.5 \cdot \text{sigmoid}(\text{linear}_1(X)) \cdot \text{linear}_2(X) \tag{5} O=0.5sigmoid(linear1(X))linear2(X)(5)

  • style 参数定义了上采样的风格(LP/PL
  • groups 参数用于分组卷积g的个数
  • dyscope 参数是用于确定是否使用动态范围因子(+
  • 此代码代表默认的第一种DySample

Ultralytics封装的YOLO系列中,DySample部署模块时的task.py如下图所示

在这里插入图片描述

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

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

相关文章

Online Judge——【前端项目初始化】项目通用布局开发及初始化

目录 一、新建layouts二、更新App.vue文件三、选择一个布局(Layout)四、通用菜单Menu的实现菜单路由改为读取路由文件 五、绑定跳转事件六、同步路由到菜单项 一、新建layouts 这里新建一个专门存放布局的布局文件layouts: 然后在该文件夹&…

uniapp首页样式,实现菜单导航结构

实现菜单导航结构 1.导入字体图标库需要的文件 2.修改引用路径iconfont.css 3.导入到App.vue中 <style>import url(./static/font/iconfont.css); </style>导航区域代码 VUE代码 <template><view class"home"><!-- 导航区域 --><…

《代码随想录》刷题笔记——栈与队列篇【java实现】

文章目录 用栈实现队列用队列实现栈有效的括号我的解法代码随想录 删除字符串中的所有相邻重复项我的解法代码随想录栈解法字符串充当栈※双指针 逆波兰表达式求值我的解法代码随想录 滑动窗口最大值我的解法暴力解法暴力解法一点优化单调队列 代码随想录单调队列 前 K 个高频元…

STM32 ADC --- 知识点总结

STM32 ADC — 知识点总结 文章目录 STM32 ADC --- 知识点总结cubeMX中配置注解单次转换模式、连续转换模式、扫描模式单通道采样的情况单次转换模式&#xff1a;连续转换模式&#xff1a; 多通道采样的情况禁止扫描模式&#xff08;单次转换模式或连续转换模式&#xff09;单次…

UaGateway:实现OPC DA和OPC UA的高效转换

随着工业4.0和智能制造的深入推进&#xff0c;工业自动化系统之间的互联互通需求日益迫切。UaGateway作为一种高效的协议转换工具&#xff0c;正在成为各类工业应用中不可或缺的桥梁。本文将重点介绍UaGateway在实现OPC DA到OPC UA转换方面的主要功能、应用场景和实际案例。 Ua…

安能物流 All in TiDB 背后的故事与成果

导读 在数字化转型的浪潮中&#xff0c;安能物流通过技术创新不断提升物流效率&#xff0c;迈出了全链路 All in TiDB 的重要一步。本文将深入探讨安能物流如何选择 TiDB 作为核心数据库&#xff0c;以应对高并发、数据处理能力和系统可扩展性等挑战。通过 TiDB 的弹性扩展能力…

回声消除延时估计的一些方法

在音频信号处理&#xff0c;尤其是在回声消除和语音通信中&#xff0c;延时估计是一个至关重要的任务。回声消除技术旨在减少或消除在语音通信中由于信号反射而产生的回声。为了有效地实现这一点&#xff0c;系统需要准确估计发送信号和接收信号之间的延迟。通过了解延迟&#…

从简单的自动化脚本到复杂的智能助手:Agent技术的实践与应用

现代软件开发中&#xff0c;Agent技术正在悄然改变着我们构建应用程序的方式。一个Agent就像是一个能独立完成特定任务的智能助手&#xff0c;它可以感知环境、作出决策并采取行动。让我们通过实际案例&#xff0c;深入了解如何运用Agent技术来构建智能系统。 想象你正在开发一…

postman使用正则表达式提取数据实战篇!

之前篇章中postman多接口关联使用的是通过JSON提取器的方式进行提取。 除了JSON提取器提取数据外还可通过另一种方式——正则表达式来提取数据。 1、使用正则表达式提取器实现接口关联&#xff0c;match匹配 正则匹配表达式将需要提取的字段key:value都放入表达式中&#xff…

Flume 与 Kafka 整合实战

目录 一、Kafka 作为 Source【数据进入到kafka中&#xff0c;抽取出来】 &#xff08;一&#xff09;环境准备与配置文件创建 &#xff08;二&#xff09;创建主题 &#xff08;三&#xff09;测试步骤 二、Kafka 作为 Sink数据从别的地方抽取到kafka里面】 &#xff08;…

存储服务器一般做是做什么阵列?详细列举一下

存储服务器通常使用 RAID&#xff08;Redundant Array of Independent Disks&#xff09; 阵列技术来管理磁盘&#xff0c;以提高数据的性能、可靠性和可用性。所选择的 RAID 类型取决于存储服务器的具体用途和需求&#xff0c;比如性能要求、容量需求、容错能力等。 以下是存…

无人机的起降装置:探索起飞和降落的秘密 !

一、起降系统的运行方式 起飞方式 垂直起飞&#xff1a;小型无人机通常采用垂直起飞方式&#xff0c;利用螺旋桨产生的升力直接从地面升起。这种方式适用于空间有限或需要快速起飞的场景。 跑道起飞&#xff1a;大型无人机或需要较长起飞距离的无人机&#xff0c;可能会采用…

代码随想录day01--数组

两数之和 题目 地址&#xff1a;https://leetcode.cn/problems/two-sum/ 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数…

Webpack前端工程化进阶系列(二) —— HMR热模块更新(图文+代码)

前言 之前更新过一篇Webpack文章:Webpack入门只看这一篇就够了(图文代码)&#xff0c;没想到颇受好评&#xff0c;很快就阅读量就破万了hhh&#xff0c;应读者私信的要求&#xff0c;决定继续更新Webpack进阶系列的文章&#xff01; 进入今天的主题 —— HMR 热模块替换(HotM…

Flink的双流join理解

如何保证Flink双流Join准确性和及时性、除了窗口join还存在哪些实现方式、究竟如何回答才能完全打动面试官呢。。你将在文中找到答案。 1 引子 1.1 数据库SQL中的JOIN 我们先来看看数据库SQL中的JOIN操作。如下所示的订单查询SQL&#xff0c;通过将订单表的id和订单详情表ord…

【MYSQL数据库相关知识介绍】

MySQL 在我们日常技术中是一个广泛使用的开源关系型数据库管理系统&#xff0c;所以作为测试同学&#xff0c;掌握mysql的相关知识是必不可少的技能之一&#xff0c;所以小编从软件测试的角色出发&#xff0c;来整理一些跟测试相关的知识&#xff0c;希望能够帮助到大家。 一、…

数组和链表OJ题

leetcode用编译器调试的技巧 数组和链表练习题 leetcode/reverse_Link/main.c Hera_Yc/bit_C_学习 - 码云 - 开源中国 1、移除元素 ​​​​​​27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; int removeElement(int* nums, int numsSize, int val) {int src 0, …

云服务器架构有什么区别?X86计算、Arm、GPU/FPGA/ASIC和裸金属全解析

阿里云服务器ECS架构有什么区别&#xff1f;X86计算、Arm计算、GPU/FPGA/ASIC、弹性裸金属服务器和高性能计算有什么区别&#xff1f;x86架构是最常见的&#xff0c;CPU采用Intel或AMD处理器&#xff1b;ARM架构具有低功耗的特性&#xff0c;CPU采用Ampere Altra / AltraMax或阿…

泽众TestCenter测试管理工具之案例库,提升测试工作的效率和质量

在当今的软件开发生命周期中&#xff0c;测试管理工具扮演着至关重要的角色。泽众TestCenter测试管理工具&#xff08;简称TC&#xff09;&#xff0c;作为一款广受好评的测试管理工具&#xff0c;凭借其强大的案例库功能&#xff0c;极大地提升了测试工作的效率和质量。 案例库…

Spring Cloud(Kilburn 2022.0.2版本)系列教程(五) 服务网关(SpringCloud Gateway)

Spring Cloud(Kilburn 2022.0.2版本)系列教程(五) 服务网关(SpringCloud Gateway) 一、服务网关 1.1 什么是网关 在微服务架构中&#xff0c;服务网关是一个至关重要的组件。它作为系统的入口&#xff0c;负责接收客户端的请求&#xff0c;并将这些请求路由到相应的后端服务…