CVPR2020丨DRN:用于单图像超分辨率的对偶回归网络

2024-06-21 08:32

本文主要是介绍CVPR2020丨DRN:用于单图像超分辨率的对偶回归网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“AI公园”,选择“星标★”公众号

重磅干货,第一时间送达

  • 论文:https://arxiv.org/pdf/2003.07018.pdf

  • 代码:https://github.com/guoyongcs/DRN

目前超分辨率算法存在两个明显的问题:

  • 从 LR 图像到 HR 图像通常是一个高度病态的反问题,存在无数可能的HR 图像通过降采样得到同一张 LR 图像。解空间过大,从而很难去找到一个合适的解。

  • 真实场景应用中,成对的 LR-HR 图像往往无法获得,因此对应图像降采样方式也往往未知。因此对于更普遍的情形,现有的SR模型经常会引起适应性问题,从而导致性能不佳。

论文针对这两个主要的问题进行改进,提出了对偶回归策略,通过引入对 LR 图像额外的约束,从而减小解空间的大小。也就是说,模型除了学习LR到HR图像的映射外,还学习了额外的对偶回归映射,用于估计下采样内核并重建LR图像,从而形成一个闭环以提供额外的监督。

特别地是,由于对偶回归策略并不依赖 HR 图像,因此可以直接从 LR 图像中进行学习。因此,可以很好地使得 SR 模型适应真实世界图像。

对偶回归任务

首先看一下Bicubic 降采样数据测试集上,DRN 和过去的 SOTA 方法在4倍放大比例下的性能比较。从表中可以看到,DRN 模型在5个数据集上取得了SOTA 性能,并且其模型参数量也仅为9.8M。

它是如何实现的?

Model 模型

DRN 首先采用了 Closed-Loop 闭环模型。模型结构类似于 U-Net,如下图所示:

模型中黑色箭头所指部分,为DRN模型的 Primary 网络,而红色箭头所指部分,则对应Dual Regression 网络。

Primary 网络实现了从 LR 到 HR 映射,并且生成多尺度的 SR 图像:x1 SR,x2 SR。

Dual Regression 网络则是HR 到 LR 映射,生成多尺度的 LR 图像:x2 LR,x1 LR。

为了控制网络模型参数,卷积输出特征图数量很小,假设特征图数量为  ,RCAB 模块在每一层级的数量为  。

对于4× SR, DRN-S 有  ;DRN-L 有  ;

对于8× SR, DRN-S 有  ;DRN-L 有  ;

因为 DRN模型是一个deep-and-narrow 的模型。

Loss 函数

DRN 采用了对偶回归学习,因此引入了额外的对偶回归Loss :

论文中采用L1 Loss,  为对偶回归 Loss的权重参数。

值得注意的是,在作者公开的源码中可以看到,  包含着多尺度图像的 Loss。举一个例子:对于4x SR,DRN 会生成 x1 SR 图像,x2 SR图像,x4 SR 图像。这3个尺寸的图像,分别和对应尺度下的HR 图像(可以理解为 HR 图,x2 LR图像,LR 图像 )进行对比,计算 Loss。

loss_primary = self.loss(sr[-1], hr)
for i in range(1, len(sr)):loss_primary += self.loss(sr[i - 1 - len(sr)], lr[i - len(sr)])

对于没有成对数据集的情况下,DRN 采用了半监督学习,引入部分的成对数据集用于训练,DRN损失函数为:

 表示当  属于成对数据集时,该函数等于1,否则等于0。

训练策略如下:

实验对比

从以下两张图中可以看到,在4x SR 和 8x SR 上,DRN 均能够在模型参数和性能上取得很好的平衡。

对于无成对数据集Unpaired Data,DRN 还额外引入成对的数据集(DIV2K+bicubic 降采样)用于模型训练。

Unpaired Data 生成过程:从ImageNet中选取3000张图像,并采用不同的图像退化方式如 Nearest 和 BD生成 LR 图像。

DRN 与其他方法在合成数据上进行了定量的比较,图像退化方法为Nearest 和 BD。

在真实图像上,由于没有 HR 图像,所以仅仅进行了定性的比较。

论文作者还进行一系列的消融实验,以验证两个问题:

  1. 对偶回归是否有效?

  2. 在半监督学习中,不成对数据集和成对数据集比例多少合适?

对偶回归有效性

表中可以看到,当引入对偶回归之后,DRN-S 和 DRN-L 均取得了明显的性能提升,说明了对偶回归的有效性。

不成对数据集和成对数据集比例

其中,  表示不成对数据集数量在训练数据集中的比例。或者  模型性能均会出现明显的下降。当时,模型的性能表现最佳。

总结

这篇论文提出了一种新的学习策略:对偶回归学习。这种学习策略不仅能够进一步提升监督学习下 SR 的性能,同时为半监督学习甚至是无监督学习提供了一种可行的思路。对真实图像超分辨率算法的研究,也能够起到很好的促进作用。

请长按或扫描二维码关注本公众号

喜欢的话,请给我个在看吧

这篇关于CVPR2020丨DRN:用于单图像超分辨率的对偶回归网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080713

相关文章

【Altium】查找PCB上未连接的网络

【更多软件使用问题请点击亿道电子官方网站】 1、文档目标: PCB设计后期检查中找出没有连接的网络 应用场景:PCB设计后期,需要检查是否所有网络都已连接布线。虽然未连接的网络会有飞线显示,但是由于布线后期整板布线密度较高,虚连,断连的网络用肉眼难以轻易发现。用DRC检查也可以找出未连接的网络,如果PCB中DRC问题较多,查找起来就不是很方便。使用PCB Filter面板来达成目的相比DRC

通信系统网络架构_2.广域网网络架构

1.概述          通俗来讲,广域网是将分布于相比局域网络更广区域的计算机设备联接起来的网络。广域网由通信子网于资源子网组成。通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网构建,将分布在不同地区的局域网或计算机系统互连起来,实现资源子网的共享。 2.网络组成          广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

线性回归(Linear Regression)原理详解及Python代码示例

一、线性回归原理详解         线性回归是一种基本的统计方法,用于预测因变量(目标变量)与一个或多个自变量(特征变量)之间的线性关系。线性回归模型通过拟合一条直线(在多变量情况下是一条超平面)来最小化预测值与真实值之间的误差。 1. 线性回归模型         对于单变量线性回归,模型的表达式为:         其中: y是目标变量。x是特征变量。β0是截距项(偏置)。β1

使用 GoPhish 和 DigitalOcean 进行网络钓鱼

配置环境 数字海洋VPS 我创建的丢弃物被分配了一个 IP 地址68.183.113.176 让我们登录VPS并安装邮件传递代理: ssh root@68.183.113.176apt-get install postfix 后缀配置中的点变量到我们在 DigitalOcean 中分配的 IP:mynetworks nano /etc/postfix/main.cf

Linux网络编程之循环服务器

1.介绍 Linux网络循环服务器是指逐个处理客户端的连接,处理完一个连接后再处理下一个连接,是一个串行处理的方式,比较适合时间服务器,DHCP服务器.对于TCP服务器来说,主要阻塞在accept函数,等待客户端的连接。而对于UDP服务器来说,主要阻塞在recv函数. 2.循环服务器模型 TCP循环服务器: 算法如下:          socket(...);

Linux网络编程之简单并发服务器

1.概念 与前面介绍的循环服务器不同,并发服务器对服务请求并发处理。而循环服务器只能够一个一个的处理客户端的请求,显然效率很低. 并发服务器通过建立多个子进程来实现对请求的并发处理,但是由于不清楚请求客户端的数目,因此很难确定子进程的数目。因此可以动态增加子进程与事先分配的子进程相结合的方法来实现并发服务器。 2. 算法流程 (1)TCP简单并发服务器:     服务器子进程1:

Android 扇形网络控件 - 无网络视图(动画)

前言 一般在APP没有网络的情况下,我们都会用一个无网络的提示图标,在提示方面为了统一app的情况,我们一般使用简单的提示图标,偶尔只需要改变一下图标的颜色就一举两得,而不需要让PS来换一次颜色。当然app有图标特殊要求的就另当别论了。 效果图 当你第一眼看到这样的图,二话不说直接让UI给你切一张图标来的快对吧,我其实开始也是这么想的,但是到了做的app越来越多的时候,你就会发现就算是用

poj 2391 Ombrophobic Bovines (网络流)

这是一道很经典的网络流的题目。首先我们考虑假如我们的时间为无穷大。我们吧每个点拆成2个点 i和i' .。虚拟源点s和汇点t。对于每个点建边(s,i, a[i])  (i‘,t,ib[i]) 。 其中a[i]为给点有多少牛,b[i]为容量。i和j连通 建边 (i,j',inf);如果最大流==所有牛的个数,就可能装下所有的牛。那么现在我们考虑时间。假设最大时间为T.那么如果i到j的的最短时间>T