论文阅读 Self-Supervised Burst Super-Resolution
这是一篇 ICCV 2023 的文章,主要介绍的是用自监督的方式进行多帧超分的学习
Abstract
这篇文章介绍了一种基于自监督的学习方式来进行多帧超分的任务,这种方法只需要原始的带噪的低分辨率的图。它不需要利用模拟退化的方法来构造数据,而且模拟退化的方法又可能存在域差异的问题,可能无法匹配真实场景下的图像分布。另外,它也不同于那种同时拍摄手机和高清单反的弱配对的方法,弱配对的方法,需要进行实际的数据的采集,无法实现大规模的数据构造,而且也不用担心会出现手机与单反的颜色差异问题。为了避免模拟退化以及采集数据对的这些问题,文章提出利用自监督学习的方法,从低清带噪图像中直接学习超分模式。文章作者也说,这个方法对动态场景也很鲁棒,而且实验结果也表明,这个自监督学习的方法,相比有监督,或者弱监督的方法,效果也是不相上下的。
Method
这篇文章的出发点,建立于以下的观测,一组低清带噪图像,可以看做是一张高清图像的采样,考虑到手持拍摄时的相机抖动,这组低清图可以看成是对高清图微小邻域的采样,存在一定的信息互补。如下图所示:

接下来详细介绍文章的方法,给定一组 N N N 张低清带噪图像, B = { b i } i = 1 N B=\{b_i\}_{i=1}^{N} B={bi}i=1N,将其分成两部分,一部分是 B m o d e l = { b i } i = 1 K B_{model}=\{b_i\}_{i=1}^{K} Bmodel={bi}i=1K,这部分用于模型预测高清图像,另外一部分是 B u n s e e n = { b i } i = K + 1 N B_{unseen}=\{b_i\}_{i=K+1}^{N} Bunseen={bi}i=K+1N,用来构建自监督训练的损失函数。首先,第一部分,通过一个 SR 模型,可以获得一张高清图像, y ^ = f ( B m o d e l ) \hat{y} = f(B_{model}) y^=f(Bmodel),然后,基于这张预测得到的高清图像 y ^ \hat{y} y^,再经过一个模拟退化过程,得到一个低清图像:
b i ^ = ∏ m i , k ( f ( B m o d e l ) ) (1) \hat{b_i} = \prod_{m_i, k}(f(B_{model})) \tag{1} bi^=mi,k∏(f(Bmodel))(1)
$ \prod_{m_i, k}$ 表示了一个退化流程,将高清图像经过配准,模糊,以及采样,得到一张低清图像:
∏ m i , k ( y ) = H D k Φ m i ( y ) (2) \prod_{m_i, k}(y) = HD_{k}\Phi_{m_i}(y) \tag{2} mi,k∏(y)=HDkΦmi(y)(2)
Φ m i \Phi_{m_i} Φmi 表示为了补偿相机抖动所做的配准操作, D k D_k Dk 表示模拟镜头的模糊, H H H 表示采样操作。模拟退化的结果与真实的低清图进行比较,计算损失函数:
L = 1 N − K ∑ i = K + 1 N ∥ b i − ∏ m i , k ( f ( B m o d e l ) ) ∥ 1 (3) \mathcal{L} = \frac{1}{N-K} \sum_{i=K+1}^{N} \left \| b_i - \prod_{m_i, k}(f(B_{model})) \right \|_{1} \tag{3} L=N−K1i=K+1∑N bi−mi,k∏(f(Bmodel)) 1(3)
整体的流程如下所示:

从文章介绍的方法来看,这个思路还是比较直观的,从任务来看,这是一个多帧超分的任务,那么输入必然是多帧带噪的低清图,输出必然有高清图,然后要实现自监督学习,那么既然高清图没有 GT,那就得换个方法,将实际的低清图做监督,为了能得到预测的低清图,所以需要在超分模型后面,再接一个退化模拟的过程,这个退化模拟过程只是为了训练的时候用,实际预测的时候,还是只有那个超分模型。
Motion Estimation
在实际场景中,由于手持相机的抖动,多帧之间存在运动偏差,这些运动偏差是多帧信息存在互补,可以融合的前提,但是也带来了配准的问题,这篇文章将多帧之间的运动信息,用一个像素级的稠密光流场来表示,文章中也提到用一个离线训好的 PWC-Net 来做帧间配准。考虑到,直接计算高清图像 y y y (RGB) 与低清带噪图像 b b b (RAW) 之间的配准,可能存在颜色差异的问题,所以文章中计算的是低清图像 b b b 之间的运动信息,因为 y y y 与 b 1 b_1 b1 对齐,而如果其它帧也与 b 1 b_1 b1 对齐,那么 y y y 与其它帧也是对齐的。
考虑到真实场景的复杂性,比如噪声,场景中物体的运动等,多帧之间的配准也不是全部都有效,有些区域的配准可能是错误的,为了剔除这些错误区域的配准,提升融合的鲁棒性及效果,文章中还设置了一个二值化的 mask,这个 mask 可以帮助模型识别哪些区域的配准正确的,哪些区域是配准错误的,结合这个 mask 的引导,可以让图像的融合更为准备。这个 mask 的计算基本是基于求差结合形态学的滤波实现。最终的损失函数是如下所示:
L = 1 N − K ∑ i = K + 1 N ∥ v i ⊙ ( b i − ∏ m i , k ( f ( B m o d e l ) ) ) ∥ 1 (4) \mathcal{L} = \frac{1}{N-K} \sum_{i=K+1}^{N} \left \| v_{i} \odot (b_i - \prod_{m_i, k}(f(B_{model}))) \right \|_{1} \tag{4} L=N−K1i=K+1∑N vi⊙(bi−mi,k∏(f(Bmodel))) 1(4)
Blur Kernel Estimation
模糊核的估计,文章中是通过学习的方法,将模糊核设置成一个可学习的模块,通过大量的数据学习模糊核的参数,这个模糊核的大小文章中指定了是 9 × 9 9 \times 9 9×9 的。
最后是实验展示部分,从文章展示的效果来看,比一些模拟退化或者弱监督的方法还要好。


相关文章:
论文阅读 Self-Supervised Burst Super-Resolution
这是一篇 ICCV 2023 的文章,主要介绍的是用自监督的方式进行多帧超分的学习 Abstract 这篇文章介绍了一种基于自监督的学习方式来进行多帧超分的任务,这种方法只需要原始的带噪的低分辨率的图。它不需要利用模拟退化的方法来构造数据,而且模…...
Spring+SpringMVC+Mybatis进行项目的整合
Spring SpringMVCM Mybatis 整合 一、 通过idea创建maven工程 二、 引入依赖项以及导入mybatis逆向工程的插件 将如下的文件替换所在工程的pom文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4…...
vue3 实现简单计数器示例——一个html文件展示vue3的效果
目的:作为一个新手开发,我想使用 Vue 3 将代码封装在 HTML 文件中时,进行界面打开展示。 一、vue计数示例 学了一个简单计数器界面展示,代码如下: <!DOCTYPE html> <html lang"en"><head&…...
面试经典150题(88-89)
leetcode 150道题 计划花两个月时候刷完,今天(第四十四天)完成了2道(88-89)150: 88.(22. 括号生成) 题目描述: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效…...
【设计模式-3.3】结构型——享元模式
说明:说明:本文介绍设计模式中结构型设计模式中的,享元模式; 游戏地图 在一些闯关类的游戏,如超级玛丽、坦克大战里面,游戏的背景每一个关卡都不相同,但仔细观察可以发现,其都是用…...
【征服redis6】Redis的内存淘汰详解
目录 1.redis的基本策略 2.Redis中的缓存淘汰策略 3.Redis内存不足的情况 4.几种淘汰策略的实现原理 5.项目实践与优化策略 5.1 配置案例 5.2 项目优化策略参考 数据库存储会将数据保存到磁盘中,而Redis的核心数据是在内存中的,而Redis本身主要用来…...
多文件转二维码的两种方式,有兴趣的了解一下
多个文件能一键生成二维码吗?二维码是现在很多人用来展示文件内容的一种手段,在制作二维码图片之后,其他人扫码就可以查看文件或者下载文件,有效的提升文件获取的效率。一般情况下,文件二维码分为多个文件生成一个二维…...
uniapp APP接入Paypal
1. 登录paypal开发者中心, 2. 选择 Apps & Credentials 点击 Create App创建应用,创建后点击编辑按钮,如图: 3. 进入应用详情,勾选Log in with PayPal点击 Advanced Settings 添加return URL等信息并保存。如图&a…...
QT-贪吃小游戏
QT-贪吃小游戏 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "Snake.h" #include "Food.h" #include "Stone.h" #include "Mushroom.h" #include "Ai.h" #include "Game.h" #inclu…...
HubSpot:如何设计和执行客户旅程?
在当今数字化时代,企业成功的关键之一是建立并优化客户旅程。HubSpot作为一体化市场营销平台,通过巧妙设计和执行客户旅程,实现了个性化决策,关键节点的精准引导,为企业带来了数字化转型的引领力。 一、HubSpot是如何设…...
【Go学习】macOS+IDEA运行golang项目,报command-line-arguments,undefined
写在前面的话:idea如何配置golang,自行百度 问题1:通过idea的terminal执行go test报错 ✘ xxxxxmacdeMacBook-Pro-3 /Volumes/mac/.../LearnGoWithTests/hello go test go: go.mod file not found in current directory or any parent …...
优先看我的博客:工控机 Ubuntu系统 输入密码登录界面后界面模糊卡死,键盘鼠标失效(不同于其他博主的问题解决方案,优先看我的博客。)
工控机Ubuntu 输入密码登录界面后界面模糊卡死,键盘鼠标失效 (不同于其他博主的问题解决方案,工控机Ubuntu的系统 优先看我的博客。) 系统版本:ubuntu18.04 主机:工控机 应用场景:电力系统巡…...
SAP 中的外部接口:预扣税
文章目录 1 Introduction2 implementation3 Summary 1 Introduction We use BP create WTAX_TYPE ,I don’t find a bapi. We will update for it . We will impement WTax type , WTax code ,Subject in the ‘BP’. 2 implementation UPDATE lfbw SET witht gs_alv-wit…...
代码随想录算法训练营第二十三天| 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
669. 修剪二叉搜索树 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 解题思路:如果当前结点小于所给区间,那该节点及其左子树肯定不符合条件,返回其右子树作为上一结点子树;反之…...
设计模式——解释器模式
解释器模式(Interpreter Pattern)是一种行为型设计模式,它提供了一个框架,用于定义语言的语法规则,并通过这些规则来解析和解释特定语法结构表示的句子。这种模式主要应用于需要对简单语言进行解释或编译的小型系统中。…...
uniapp小程序当页面内容超出时显示滚动条,不超出时不显示---样式自定义
使用scroll-view中的show-scrollbar属性 注意:需要搭配enhanced使用 否则无效 <scroll-view class"contentshow" scroll-y :show-scrollbartrue :enhancedtrue><view class"content" :show-scrollbartrue><text>{{vehicleCartinfo}}<…...
开源28181协议视频平台搭建流程
最近项目中用到流媒体平台,java平台负责信令部分,c平台负责流媒体处理,找了评分比较好的开源项目 https://gitee.com/pan648540858/wvp-GB28181-pro 流媒体服务基于 c写的 https://github.com/ZLMediaKit/ZLMediaKit 说明文档:h…...
安全跟我学|网络安全五大误区,你了解吗?
网络安全 尽管安全问题老生常谈,但一些普遍存在的误区仍然可能让企业随时陷入危险境地。为了有效应对当前层出不穷且不断变换的网络威胁,最大程度规避潜在风险,深入了解网络安全的发展趋势必不可少。即使部署了最新且最先进的硬件和解决方案…...
数据结构奇妙旅程之二叉树初阶
꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …...
WebGL中开发VR(虚拟现实)应用
WebGL(Web Graphics Library)是一种用于在浏览器中渲染交互式3D和2D图形的JavaScript API。要在WebGL中开发VR(虚拟现实)应用程序,您可以遵循以下一般步骤,希望对大家有所帮助。北京木奇移动技术有限公司&a…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
