点击上方“视学算法”,选择加"星标"或“置顶”

重磅干货,第一时间送达

本文作者:Alan

https://zhuanlan.zhihu.com/p/131581042

本文已由原作者授权,不得擅自二次转载

CVPR2020论文:Unified Dynamic Convolutional Network for Super-Resolution with Variational Degradations

论文:https://arxiv.org/abs/2004.06965

近些年,基于CNN的方法在图像超分辨率问题上表现出出色的性能。然而大多数方法基于一种退化或者是多种退化的组合,甚至去训练特定的模型以适应特定的退化过程。因此更加实际的方法是训练单独的模型以适用多样可变的退化。

因此为了实现这个目标,论文提出了一个统一网络去适应图像间(跨图像变化)和图像内(空间变化)的变化。

如何实现呢?论文首先提出了动态卷积,进而基于动态卷积提出了用于可变退化的统一可变卷积网络(UDVD)。从 图1 可以看到UDVD 针对不同退化,都能够生成良好的结果,而 RCAN、ZSSR 则无法很好地应对多种退化过程。

图1. UDVD 与RCAN ZSSR 生成图像细节对比

退化LR图像生成

为了训练模型,首先需要对HR 图像处理,生成退化的LR 图像。退化过程可以由如下公式定义:

 表示模糊核,  表示下采样过程, 表示噪声,  分别为低分辨率图像和原始高分辨率图像。论文选取了各向同性高斯模糊核以及加性高斯白噪声(AWGN),并使用 Bicubic 作为下采样过程。

假设模糊核尺寸为  ,AWGN 噪声水平为  。首先对 HR 图像进行模糊核操作后下采样图像,最后将图像与 AWGN 相加,生成退化LR图像。

UDVD 输入

与 SRMD 相似,UDVD 网络需要额外的退化特征图作为输入,其处理方式与 SRMD 相同。因此会对模糊核通过 PCA 降维至 t 维。具体的实现方法,可以参考SRMD 源码。

PCA 变换矩阵生成的代码如下:

def get_pca_matrix(x, dim_pca=15):"""Args:x: 225x10000 matrixdim_pca: 15Returns:pca_matrix: 15x225"""C = np.dot(x, x.T)w, v = scipy.linalg.eigh(C)pca_matrix = v[:, -dim_pca:].Treturn pca_matrixdef cal_pca_matrix(path='PCA_matrix.mat', ksize=15, l_max=12.0, dim_pca=15, num_samples=500):kernels = np.zeros([ksize*ksize, num_samples], dtype=np.float32)for i in range(num_samples):theta = np.pi*np.random.rand(1)l1    = 0.1+l_max*np.random.rand(1)l2    = 0.1+(l1-0.1)*np.random.rand(1)k = anisotropic_Gaussian(ksize=ksize, theta=theta[0], l1=l1[0], l2=l2[0])# util.imshow(k)kernels[:, i] = np.reshape(k, (-1), order="F")  # k.flatten(order='F')# io.savemat('k.mat', {'k': kernels})pca_matrix = get_pca_matrix(kernels, dim_pca=dim_pca)io.savemat(path, {'p': pca_matrix})return pca_matrix

通过变换矩阵将模糊核降维之后,生成  维向量,然后加入噪声水平  向量后,  维进行空间拓展,生成与输入 LR 图像空间尺寸相同,维度为  的退化特征图。最后与输入LR 图像并联,生成维度为  的UDVD 输入,其中  。

UDVD 网络结构

然后再来看看 UDVD 的网络结构,如图 2 所示。可以看到 UDVD 大体上可以分为两个部分:

  1. Feature Extraction Network(FRN)

  2. Refinement Network(RN)

图 2. UDVD 网络结构

第一个部分FRN,其结构和 EDSR 网络结构一致,采用了2层卷积+1层 Relu 的残差块。第二部分RN 则是由级联的动态模块Dynamic Block( DB)组成。

图3. 动态模块

动态模块

对于第  个动态模块, 将FRN输出特征  和先前 DB生成的中间图  作为输入,最终生成图像  。

动态卷积

其中最为重要的就是动态卷积 Dynamic Convolution。图3所示,Dynamic Kernels 通过一层卷积生成  特征图 作为逐像素动态卷积核,其中  为核的大小。当需要进行特征放大时,则会生成维度为  逐像素动态卷积核。

得到卷积核之后,动态卷积过程可由如下公式表达:

带上采样的动态卷积 UD

为了实现上采样,动态卷积会成生成  个动态卷积核,对同一个图像块生成  子图像块。

其过程可由如下形式表示:

这里需要注意的是:当使用了上采样之后,权重是跨通道共享,以避免维数灾难。

实现的方法,其实与RealSR论文中 LP-KPN 网络很相似。由于 LP-KPN 没有 Pytorch 版本,这里可以参考一下我自己的实现方法:RealSR。

Multistage-loss

论文采用了多阶损失 ,其表达形式如下:

为了获得高质量的合成图像,论文因此将每个动态块生成中间图与GT图之间的损失总和最小化。

实验 Experiment

为了充分说明论文提出方法的有效性,论文在非盲(non-blind) 设定下进行实验对比,也就是实际退化过程已知。非盲结果能够为估计退化的盲方法(blind method)提供了上限,在非盲设定下性能的改进也能够提高盲方法的性能上限。

退化参数设定

  1. 采用各向同性高斯核 ,核宽度  在  , 核尺寸固定为  。

  2. 使用加性高斯白噪声,噪声水平  在  。

UDVD不同设定对比

其中D 代表典型的动态卷积,U 代表带有上采样的动态卷积。DU、UD、UDD 表示着在动态模块中,不同组合的动态卷积。Baseline 只包括FRN 网络+次像素卷积层。因此表现最差。而 UDVD_UDD的性能最好,并且训练如果不引入multistage loss,会出现明显的性能下降,在 PSNR、SSIM数值上分别下降 0.09 和 0.025。这也说明了引入multistage loss对提升性能有明显作用。

于是论文使用 UDVD_UDD 用于  情况下,对于  情况,则使用UDVD_UUDD。

可视化动态核

图4 可视化动态核

UDVD 会生成动态核去适应图像内容和不同的退化。图(a)显示了UDVD 会生成不同的核以处理不同的图像内容。图(b)表明了生成核进一步适应了所应用的降级。图(c)则表明了UDVD的适应行为会根据不同的退化不同,且与图像内容的无关。这些观证实,考虑到内容和降级的空间差异,UDVD能够通过生成动态内核来处理空间变化。

多种退化

1.固定模糊核宽度和噪声水平,在 Set5、Set14、BSD100测试集上,UDVD 均取得了最好的性能表现。

2.在模糊核宽度可变时,UDVD 和 SRMD 进行对比,UDVD 在所有测试集上均优于 SRMD ,说明 UDVD 能够很好地适应空间可变的退化,从而取得良好的性能。图5也可以看到,尽管SRMD和UDVD都能够处理空间变化,但UDVD仍可产生更清晰清晰的重建图像。

图5 可视化结果对比

无噪声退化

这个实验中,训练 UDVD 用于无噪声的退化(仅有高斯退化),与其他方法进行比较。从表中可以看到,UDVD 取得了可观的性能表现,尤其是BSD100上,UVD 优于 SFTMD 和SRMDNF。需要注意的是,SFTMD受益于空间特征变换(SFT),它对降级信息应用了仿射变换,而不是将其与输入图像连接在一起。UDVD 也可以进一步采用 SFT,以实现进一步的改进。

固定退化

BI 对应的是 Bicubic 下采样,而 BN 则对应的是 Bicubic 下采样后加入噪声水平为30的加性高斯白噪声。UDVD 可在 BI 上取得不错的结果,并在 DN上取得最佳的性能。

真实图像生成结果

图6. 真实图像上生成效果

图7. 真实图像上生成效果

最后UDVD也在真实图像上做了实验,与其他方法对比,可以看到 UDVD 能够生成更加清晰和干净的图像。值得注意的是,由于需要对图像进行噪声估计,因此采用了与SRMD相似的方法,利用网格搜索的方法搜索最合适的退化参数。

总结

这篇论文的一个主要的创新点在于将动态卷积引入SR问题之中,并且对动态卷积做了进一步的拓展实现了图像上采样过程。可以预计在未来SR 问题的研究中,动态卷积会越来越多的被使用。同时论文在非盲设定下,与其他方法进行了大量的实验对比,在多种图像退化设置下,进行定量定性分析,有理有据,值得学习。其中,动态核可视化与分析,也值得去学习研究。这些实验也充分说明了 UDVD 的有效性。

一点疑惑:

UDVD的动态模块中,如何将动态模块生成的  的中间图像,与特征提取网络生成的特征  进行并联,文中没有做具体介绍,只提到利用次像素卷积层进行分辨率的对齐。因此如何在第  个动态模块中,实现  与  进行通道维度并联?

因此猜想,是通过  通过次像素卷积逆变换,实现分辨率降低,生成  ,再输入到网络中进行处理。对于第一个动态模块,直接以  ,即低分辨率 LR 输入图像作为输入。生成残差图像  ,则在两层卷积之后应该也需要一层次像素卷积以实现分辨率的提高。

参考文献

SRMD:Learning a Single Convolutional Super-Resolution Network for Multiple Degradations

麻烦给我一个在看!

CVPR 2020丨UDVD:用于可变退化的统一动态卷积超分辨率网络相关推荐

  1. CVPR 2020丨图像超清化+老照片修复技术,拯救你所有的模糊、破损照片

    编者按:也许你曾从橱柜里翻出家人们压箱底的老照片,而它们已经泛黄发脆,甚至有些褪色:也许你在拍照时不慎手抖,只好把糊成一片的照片都丢进"最近删除".而微软亚洲研究院在计算机视觉顶会 ...

  2. Unsupervised Degradation Representation Learning for Blind Super-Resolution(基于无监督退化表示学习的盲超分辨率处理)

    文章目录 Abstract(摘要) 1. Introduction 2. Related Work 2.1. Single Image Super-Resolution 2.2. Contrastiv ...

  3. CVPR 2020丨8比特数值也能训练模型?商汤提出训练加速新算法

    本文转自AI科技评论. 本文介绍的是CVPR2020入选论文<Towards Unified INT8 Training for Convolutional Neural Network> ...

  4. CVPR 2020丨基于范例的精细可控图像翻译CoCosNet,一键生成你心目中的图像

    编者按:图像翻译是近年来的研究热点,类比于自然语言翻译,它将输入图像的表达转化为另一种表达,在图像创作.图像风格化.图像修复.域自适应学习等领域有着广泛应用.然而现有技术通常仅能产生合理的目标域图像, ...

  5. CVPR 2020丨基于并行点检测和点匹配的单阶段实时HOI Detection方法

    本文转载自知乎,为商汤科技CVPR 2020最新论文解读. https://zhuanlan.zhihu.com/p/144238209 在CVPR2020上,商汤团队联合北京航空航天大学Colab( ...

  6. CVPR 2020丨基于点云的3D物体检测新框架

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 本文介绍的是CVPR2020入选论文<HVNet: Hybrid Voxel ...

  7. 【CV】CVPR2020丨SPSR:基于梯度指导的结构保留超分辨率方法

    作者 | Alan 授权转载自 | https://zhuanlan.zhihu.com/p/121721537 CVPR2020:Structure-Preserving Super Resolut ...

  8. 合流超几何函数_【CV】CVPR2020丨SPSR:基于梯度指导的结构保留超分辨率方法

    作者 | Alan 授权转载自 | https://zhuanlan.zhihu.com/p/121721537 CVPR2020:Structure-Preserving Super Resolut ...

  9. CVPR 2020丨微软亚洲研究院精选论文一览

    编者按:本文汇总了部分微软亚洲研究院CVPR2020精选论文,涵盖姿态估计.动作检测与识别.分割与检测.底层视觉等领域. 01 HigherHRNet: 自下而上姿态估计中的多尺度表征学习 Highe ...

最新文章

  1. 《Apache Common CLI官方文档
  2. USACO Training Section 1.1 Your Ride Is Here
  3. Codeigniter 3 拓展HMVC
  4. C++智能指针使用指南 part1:基本使用
  5. 配置SQL Server AlwaysOn高可用性组
  6. php访问mysql 封装
  7. 为什么我电脑的所有浏览器都开不了网页
  8. 创作焦虑之下,红人大V怎么看微博?
  9. C#钉钉官方工作流和自定义工作流代码实现
  10. ‘mvn‘不是内部或外部命令
  11. 漫漫Java学习路,第十四天
  12. 【Java】Feil类概述
  13. 地球人都在玩跨境电商
  14. mysql报错error2002_mysql中异常出错ERROR:2002的处理办法分享
  15. CF1463-C. Busy Robot
  16. 242. 有效的字母异位词 349. 两个数组的交集
  17. CentOS 6.5 安装使用iscsi-initiator
  18. Java 多文件压缩为ZIP
  19. 警惕新型钓鱼邮件诈骗~伪装的“再次发送”邮件
  20. SuperMap Objects组件式开发

热门文章

  1. 厉害了,网易伏羲三篇论文上榜 AI 顶会 ACL
  2. 如何用 Slack 和 Kubernetes 构建一个聊天机器人?| 附代码
  3. 24式加速你的Python
  4. 为什么平头哥做芯片如此迅猛?
  5. 里程碑式成果Faster RCNN复现难?我们试了一下 | 附完整代码
  6. 知识图谱升温之势已现,不要错失下一个AI风口
  7. 2018机器阅读理解竞赛冠军分享:问答系统新思路
  8. 硅谷初创公司工资期权调查报告出炉,你羡慕吗?
  9. 一套基于 SpringBoot 的完整高并发电商系统,拿去面试简直不要太好用!
  10. 强大的 IDEA 代码生成