论文阅读 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=NK1i=K+1N bimi,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=NK1i=K+1N vi(bimi,k(f(Bmodel))) 1(4)

Blur Kernel Estimation

模糊核的估计,文章中是通过学习的方法,将模糊核设置成一个可学习的模块,通过大量的数据学习模糊核的参数,这个模糊核的大小文章中指定了是 9 × 9 9 \times 9 9×9 的。

最后是实验展示部分,从文章展示的效果来看,比一些模拟退化或者弱监督的方法还要好。

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爬虫验证码分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 本文只做简单的验证码分析,不涉及扣代码等逆向 一、常见得验证码平台 易盾:https://dun.163.com/pr…

重学Java 5 idea详细使用和运算符

慢点跑,前面的路不好走 ——24.1.14 一、IDEA的使用 1.idea的介绍 1.概述:开发工具 2.特点: a、idea是java写的,所以本地上必须有正确的jdk环境 b、idea自动保存 c、不用我们打开dos命令窗口执行javac和java命令 d、idea有强大的…

数据结构与算法教程,数据结构C语言版教程!(第四部分、字符串,数据结构中的串存储结构)一

第四部分、字符串,数据结构中的串存储结构 串存储结构,也就是存储字符串的数据结构。 很明显,字符串之间的逻辑关系也是“一对一”,用线性表的思维不难想出,串存储结构也有顺序存储和链式存储。 提到字符串&#xff…

Python 自学(八) 之模块

目录 1. import语句导入模块 P206 2. from ... import 语句导入模块 P207 3. 模块的搜索目录 sys.path P209 4. 以主程序的形式执行 __name__ P212 5. python中的包 P213 1. import语句导入模块 P206 同一目录下&…

【MATLAB】 SSA奇异谱分析信号分解算法

有意向获取代码,请转文末观看代码获取方式~ 1 基本定义 SSA奇异谱分析(Singular Spectrum Analysis)是一种处理非线性时间序列数据的方法,可以对时间序列进行分析和预测。 它基于构造在时间序列上的特定矩阵的奇异值分解&#…

12AOP面向切面编程/GoF之代理模式

先看一个例子: 声明一个接口: // - * / 运算的标准接口! public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }实现该接口: package com.sunsplanter.prox…

编曲混音FL Studio21.2对电脑有什么配置要求

FL Studio 21是一款非常流行的音乐制作软件,它可以帮助音乐人和制作人创作出高质量的音乐作品。然而,为了保证软件的稳定性和流畅性,用户需要知道FL Studio 21对电脑的配置要求。本文将介绍FL Studio 21的配置要求,以帮助用户选择…

Open CV 图像处理基础:(七)学习 OpenCV 的图像增强和边缘检测功能

在Java中学习使用 OpenCV 的图像增强和边缘检测功能 目录 在Java中学习使用 OpenCV 的图像增强和边缘检测功能前言图像增强功能对比度调整(Core.addWeighted())函数原型:参数说明:代码:示例 直方图均衡化(I…

强化学习应用(五):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

图形化编程:开启孩子创新思维的新途径

在科技日新月异的今天,编程已经成为了一项重要的技能。然而,对于孩子们来说,传统的编程语言可能会显得过于复杂和抽象。这时,图形化编程就显得尤为重要。那么,什么是图形化编程?它对孩子有什么帮助呢&#…

web前端算法简介之字典与哈希表

回顾 栈、队列 : 进、出 栈(Stack): 栈的操作主要包括: 队列(Queue): 队列的操作主要包括: 链表、数组 : 多个元素存储组成的 简述链表:数组&…

权责发生制和收付实现制

目录 一. 权责发生制(应记制)二. 收付实现制 \quad 一. 权责发生制(应记制) 应计制就是应该记入的意思 各项收入和费用的确认应当以“实际发生”(归属期)而不是以款项的实际收付作为记账的基础。 正是有会计期间假设,才有权责发生制和收付实…

Odrive 学习系列二:将烧录工具从ST-Link V2修改为JLink

一、背景: 通过观察odrive解压后的内容,可以看到在下面配置文件及makefile文件中的配置设置的均为openOCD + stlink v2,例如makefile中: # This is only a stub for various commands. # Tup is used for the actual compilation.BUILD_DIR = build FIRMWARE = $(BUILD_DI…

【软件测试学习笔记1】测试基础

1.软件测试的定义 软件的定义:控制计算机硬件工作的工具 软件的基本组成:页面客户端,代码服务器,数据服务器 软件产生的过程:需求产生(产品经理),需求文档,设计效果图…

工业级安卓PDA超高频读写器手持掌上电脑,RFID电子标签读写器

掌上电脑,又称为PDA。工业级PDA的特点就是坚固,耐用,可以用在很多环境比较恶劣的地方。 随着技术的不断发展,加快了数字化发展趋势,RFID技术就是RFID射频识别及技术,作为一种新兴的非接触式的自动识别技术&…

【网络工程师】NAT与动态路由

一、NAT网络地址转换 1、NAT:Network Address Translations 网络地址转换 2、ip地址问题:ipv4地址严重不够用了(A、B、C类可以使用 D组播 E科研) 3、解决:把IP地址分为了公网IP和私网IP 公网IP只能在公网上使用 私网…

探索数据之美:深入Seaborn的数据可视化艺术与技巧【第26篇—python:Seaborn】

文章目录 1. 引言2. Seaborn基础2.1 安装和环境设置2.2 常用数据可视化函数2.3 设置样式和颜色主题 3. 数据准备与导入3.1 使用Pandas库加载和处理数据3.2 数据清理和缺失值处理 4. Seaborn中的常见图表4.1 折线图和散点图:展示趋势和变量关系4.2 条形图和箱线图&am…

把模板作为元函数参数传递。

C模板元编程是一种典型的函数式编程,函数在整个编程体系中处于核心的地位。 这里的函数与一般C程序中定义的函数有所区别,其更接近数学意义上的函 数——是无副作用的映射或变换:在输入相同的前提下,多次调用同一个函数&…

命令行登录Mysql的详细讲解

目录 前言1. 本地登录2. 远程登录3. 拓展 前言 对于命令行登录Mysql一般都是用mysql -u root -p 但对于如何远程登陆,一直其他的参数还是有些盲区,对此总结科普 对于登录过程中出现的问题,可看我之前的文章: 服务器 出现ERROR …

[牛客周赛复盘] 牛客周赛 Round 28 20240114

[牛客周赛复盘] 牛客周赛 Round 28 20240114 总结A\B1. 题目描述2. 思路分析3. 代码实现 小红的炸砖块1. 题目描述2. 思路分析3. 代码实现 小红统计区间(easy)1. 题目描述2. 思路分析3. 代码实现 小红的好数组1. 题目描述2. 思路分析3. 代码实现 小红统…