【论文阅读】 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// 引…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
python打卡第47天
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图,展示模…...

MCP和Function Calling
MCP MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由 Anthropic 推出的一种开放标准,旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而…...

【字节拥抱开源】字节团队开源视频模型 ContentV: 有限算力下的视频生成模型高效训练
本项目提出了ContentV框架,通过三项关键创新高效加速基于DiT的视频生成模型训练: 极简架构设计,最大化复用预训练图像生成模型进行视频合成系统化的多阶段训练策略,利用流匹配技术提升效率经济高效的人类反馈强化学习框架&#x…...