【论文阅读】 Learning to Upsample by Learning to Sample
论文结构目录
- 一、之前的上采样器
- 二、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通过动态卷积生成内容感知上采样核来对特征进行上采样。后续工作FADE和SAPA提出将高分辨率引导特征和低分辨率输入特征结合起来生成动态核,以便上采样过程能够受到更高分辨率结构的引导。这些动态上采样器通常结构复杂,推理时间成本高,特别是对于FADE和SAPA,高分辨率引导特征引入了更多的计算工作量,并缩小了它们的应用范围。
二、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%的AP,Faster R-CNN(CARAFE):38.6%的AP。 - 语义分割:
SegFormer-B1(DySample) 获得了41.9%的mIoU,SegFormer-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=4时DySample达到最优效果。
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.5⋅sigmoid(linear1(X))⋅linear2(X)(5)
通过第三次修改,DySample应用在Faster R-CNN 和SegFormer-B1 的效果超过CARAFE。
六、DySample四种变体
DySample系列。根据范围因子的形式(静态/动态)和偏移生成样式(LP/PL),我们研究了四种变体:
DySample:具有静态范围因子的LP风格;DySample+:具有动态范围因子的LP风格;DySample-S:具有静态范围因子的PL风格;DySample-S+:具有动态范围因子的PL风格。
其中LP和PL即采样点生成器(Sampling Point Generator)中线性层和像素重排层的顺序:

七、复杂性分析
从图中可以就看出,DySample在延迟(latency)、训练内存(memory)、训练时间(training time)、浮点运算次数(GFLOPs)和参数量(parameters)等方面表现出更高的效率。
需要注意的是:
- 虽然
LP所需的参数比PL多,但前者更灵活,内存占用更小,推理速度更快; S版本在参数和GFLOPs方面的成本更低,但内存占用和延迟更大,因为PL需要额外的存储。+版本也增加了一些计算量。
八、定性可视化

九、对比实验分析
此处仅展示目标检测领域,该实验使用Faster R-CNN在MSCOCO数据集上进行对比实验
可以看出DySample+版本在Backbone为R50和R101时均保持最优检测性能
十、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.5⋅sigmoid(linear1(X))⋅linear2(X)(5)

style参数定义了上采样的风格(LP/PL)groups参数用于分组卷积g的个数dyscope参数是用于确定是否使用动态范围因子(+)- 此代码代表默认的第一种
DySample
在Ultralytics封装的YOLO系列中,DySample部署模块时的task.py如下图所示

相关文章:
【论文阅读】 Learning to Upsample by Learning to Sample
论文结构目录 一、之前的上采样器二、DySample概述三、不同上采样器比较四、整体架构五、设计过程(1)初步设计(2)第一次修改(3)第二次修改(4)第三次修改 六、DySample四种变体七、复…...
堆排序(含证明)
引言 前面我们讲过堆的基本操作的实现,现在给定一个int类型的数组,里面存放的数据是无序的,我们如何利用堆的思想来实现数组内数据的升序排列或降序排列呢? 通过前面讲到的堆的实现,我们可以想到,我们再开…...
蓝桥杯模拟题不知名题目
题目:p是一个质数,但p是n的约数。将p称为是n的质因数。求2024最大质因数。 #include<iostream> #include<algorithm> using namespace std; bool fun(int x) {for(int i 2 ; i * i < x ; i){if(x % i 0)return false;}return true; } int main() …...
C#中的工厂模式
在C#中,工厂模式(Factory Pattern) 是一种常见的设计模式,它属于创建型模式,主要用于定义一个用于创建对象的接口,让子类决定实例化哪一个类。通过使用工厂模式,客户端代码不需要直接实例化具体…...
深度学习与持续学习:人工智能的未来与研究方向
文章目录 1. 持续学习与深度学习1.1 深度学习的局限1.2 持续学习的定义 2. 目标与心智2.1 奖励假说2.2 心智的构成 3. 对研究方法的建议3.1 日常写作记录3.2 中立对待流行趋势 1. 持续学习与深度学习 1.1 深度学习的局限 深度学习注重“瞬时学习”,如ChatGPT虽在语…...
OGRE 3D----4. OGRE和QML共享opengl上下文
在现代图形应用开发中,OGRE(Object-Oriented Graphics Rendering Engine)和QML(Qt Modeling Language)都是非常流行的工具。OGRE提供了强大的3D渲染能力,而QML则用于构建灵活的用户界面。在某些应用场景中,我们需要在同一个应用程序中同时使用OGRE和QML,并且共享OpenGL…...
【Umi】常用配置
具体见:alias 1. 基础配置 1)配置别名alias 2)配置sourcemap devtool 配置项 3)添加hash 4)图片转base64 inlineLimit 配置项 5)设置JS压缩方式 jsMinifier (webpack) 、jsMinifierOptions 配置项 6)设置umi插件 plugins 配置项 7)设置打包后资源导入的路…...
Windows加固脚本
echo off REM 清屏 cls title 安全策略设置批处理 color f0 echo **************************************** echo write by afei echo https://www.jianshu.com/u/ea4c85fbe8c7 echo **************************************** pause cls color 3f echo ********************…...
玩游戏常常出现vc++runtime library error R6025 这是什么意思,该怎么解决?
当玩游戏时常常出现“vc runtime library error R6025”错误,这通常表明微软C开发运行库组件存在问题。以下是对该错误及其解决方法的详细解释: 错误含义 “vc runtime library error R6025”是一个与Visual C运行时库相关的错误,该错误表明…...
AGX orin下电控制
AGX orin下电主要有两种,一种通过软件控制下电,另一种通过按键强制关机。下电流程和电脑关机流程类似。 AGX orin核心板与扩展板 AGX orin核心板由英伟达生产,不提供原理图,通过下图所示连接器与扩展板连接。 AGX orin扩展板&am…...
flutter 报错 error: unable to find git in your path.
项目issue:WIndows: "Unable to find git in your PATH." if terminal is not in admin mode Issue #123995 flutter/flutter 解决办法, 方法一:每次想要运行flutter的时候以管理员方式运行,比如以管理方式运行vsco…...
芯科科技率先支持Matter 1.4,推动智能家居迈向新高度
Matter 1.4引入核心增强功能、支持新设备类型,持续推进智能家居互联互通 近日,连接标准联盟(Connectivity Standard Alliance,CSA)发布了Matter 1.4标准版本。作为连接标准联盟的重要成员之一,以及Matter标…...
C语言数据相关知识:静态数据、越界与溢出
1、静态数组 在 C 语言中,数组一旦被定义后,占用的内存空间就是固定的,容量就是不可改变的,既不能在任何位置插入元素,也不能在任何位置删除元素,只能读取和修改元素,我们将这样的数组称为静态…...
文本分析之余弦相似度
余弦相似度(Cosine Similarity)是一种用于衡量两个非零向量之间相似度的指标,尤其常用于文本分析和自然语言处理领域。其核心思想是通过计算两个向量的夹角余弦值来评估它们的相似性。具体而言,余弦相似度的值范围从-1到1,其中1表示两个向量完全相同,0表示它们之间没有相…...
【VUE3】【Naive UI】<n-button> 标签
【VUE3】【Naive UI】<n-button> 标签 **type**- 定义按钮的类型,这会影响按钮的颜色和样式。**size**- 设置按钮的大小。**disabled**- 布尔值,控制按钮是否处于禁用状态。**loading**- 布尔值,表示按钮是否处于加载状…...
css使盒子在屏幕的地点固定
在 CSS 中,要将一个元素固定在页面的某个位置,可以使用 position: fixed 属性。以下是详细的代码示例和中文解释: <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta n…...
Transformers快速入门代码解析(六):注意力机制——Transformer Encoder:执行顺序解析
Transformer Encoder:执行顺序解析 引言执行顺序解析1. 设置模型检查点和分词器2. 输入预处理操作说明: 3. 加载模型配置configconfig 包含的主要参数常见配置(BERT-base) 4. 初始化 TransformerEncoder5. Transformer Encoder 的…...
图像小波去噪与总变分去噪详解与Python实现
目录 图像小波去噪与总变分去噪详解与实现1. 基础概念1.1 噪声类型及去噪问题定义1.2 小波去噪算法基础1.3 总变分去噪算法基础2. 小波去噪算法2.1 理论介绍2.2 Python实现及代码详解2.3 案例分析3. 总变分去噪算法3.1 理论介绍3.2 Python实现及代码详解3.3 案例分析4. 两种算法…...
【深度学习基础】预备知识 | 微积分
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...
CTF-PWN glibc源码阅读[1]: 寻找libc中堆结构的定义(2.31-0ubuntu9.16)
源代码在这里下载 来到malloc/malloc.c 在980行发现这段代码 // 定义最大 mmap 值为 -4 #define M_MMAP_MAX -4// 如果没有定义 DEFAULT_MMAP_MAX,则将其定义为 65536 #ifndef DEFAULT_MMAP_MAX #define DEFAULT_MMAP_MAX (65536) #endif// 引…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
