论文地址:https://arxiv.org/pdf/2005.05650.pdf

开源代码:https://github.com/pkuxmq/Invertible-Image-Rescaling(即将开源)

研究背景

不知道同学们平日里上网有没有遇到过这种情况:自己精心拍摄的高清照片/视频,想发给朋友or分享到朋友圈/微博/抖音/知乎,结果上传文件之后,直接被无良服务器压成超低分辨率渣画质。甚至有些图片/表情包在经过多次传播之后,画质已经糊到惨不忍睹。

其实,图片的降采样(缩放)可以说是对数字图像最常见的操作了,它的用处多种多样:压缩图片尺寸、节省服务器存储or带宽、适配不同分辨率的屏幕等等。像现在服务器资源这么贵,大家发微博/知乎也不交钱,顶多给各位多塞点广告,所以高清图片和视频自然是能压则压,能分得清张一山和夏雨就可以了。

如何恢复降采样后的图片是图像处理中一个非常有挑战的问题,一直没有被很好的解决。

我们这篇最新工作,就巧妙地尝试从本质上解决这个问题,论文已被ECCV2020收录为Oral 论文。

2

方法

对降采样后图片的原图求解是一个典型的病态(ill-posed)问题:

现在有一张图片有4个像素,值分别为1,3,5,7。假设对原图进行双线性插值降采样(Bilinear Interpolation),得到像素值为4的低分辨率图片。那么,如何从这一个像素还原出原图呢?

这个问题太难了,有太多种4个像素取值的组合都可以得到同样一张低分辨率图片。如果是4x降采样,则会有16个像素被采样成一个点。。想要精确地从一个像素还原出原图?你看看那些像素上的"?"眼熟不。。。

为什么这是一个病态问题?这是因为在降采样的过程中存在着信息的丢失(information loss), 以至于无法很好地还原回原图。而前人的做法一般是使用一个超分辨率的卷积神经网络,尝试从大量的数据中强行学习低分辨率到高分辨率的映射关系;或者使用encoder网络对原图进行降采样,同时使用decoder网络还原图片,二者进行联合训练(jointly training)达到更好的效果。但以上这些方法都没有从本质上解决病态问题,效果也不尽如人意。因此我们需要更聪明的方法来解决病态问题。

基于DNN的Encoder-Decoder结构对图像进行缩放和还原

刚才提到了病态问题的产生是由于信息的丢失,那么具体是什么信息被丢失了呢?

“High-frequency content will get lost during sample rate conversion.” --Nyquist-Shannon Sampling Theorem

正是由于高频信息的丢失导致了我们无法很好的还原高清原图,那么如果我们“保留”这些高频信息呢?

为了可以显式地保留高频信息,我们将降采样的过程替换为小波变换:由小波变换我们可以得到原图的一个低频分量和三个不同方向的高频分量。这里的低频分量与双线性插值降采样得到的低分辨率结果是一样的,而高频分量则是在降采样过程中被丢失的信息。

当我们选择保留全部信息时,我们可以使用小波变换的逆变换(即反函数,如果

,那么

),很轻松地将原图恢复出来。同理,对于使用DNN进行降采样的图片,我们如果保留了全部信息,那么也可以使用DNN的反函数将原图恢复回来。

对于深度学习模型这样一种复杂的非线性函数,它的反函数是什么呢?这里我们要用到可逆神经网络(Invertible NN, INN)模型。对可逆神经网络模型不熟悉的同学,推荐阅读Lilian Weng的博客:Flow-based Generative Model. 我们采用了最简单的Normalizing Flow的形式。这里需要注意,flow-based模型是严格可逆的。从另一个角度来思考这个问题,降采样和升采样本来就是一对逆任务,是否便应当使用可逆神经网络?

有了可逆神经网络模型,我们可以把之前的Encoder-Decoder网络换成INN和它的反函数,这样,如果我们可以保留全部信息,就能完美地恢复出原始高清图片。然而,我们显然无法在存储、传输低分辨率图片时还附带这些本应被丢失的信息(低分辨率图片的维度+丢失信息的维度=原始图片的维度),而丢弃这些信息又让我们无法使用INN来恢复出原图。所以,折腾了半天又把这条路堵死了?

别急,我们再来回顾一下前面的简单例子:

我们令x表示原始高清图片,y和z分别表示低频与高频分量。小波变换将p(x)转换为。z本该被丢弃,然而却无法被丢弃(丢弃后无法通过恢复x),其原因在于z的分布是condition on y,即z

是与样本相关的(case-specific),因此分布是难以获知的。那我们的insight就是:只要捕捉到丢失信息(Lost Information)的分布,就能得到关于它最多的信息。因此如果能令z与y相互独立,并且使所有的z(over dataset)通过某个变换服从一个预定的简单分布(如高斯分布),那么就可以被安全地丢弃,需要它时再采样就好了。

此时,轮到我们的INN出场了。我们引入变量,令是一个INN,负责把转换为(这步有定理保证[1])。此使的分布已经与y无关了,即case-agnoistic。同时,INN还可以生成符合我们要求的(如视觉效果更好的/便于压缩的..)。

对于case-agnoistic的,我们可以放心地将其丢弃;而当需要恢复原图时,我们可以在高斯分布中进行采样来得到。这里需要注意,整个过程并不是完全没有信息丢失,这是因为我们使用了一个分布(高斯分布)中的一次随机采样来代替符合该分布中的一个特定样本点。但是由于我们的INN已经学习到如何将符合高斯分布的点(结合)恢复为case-specific的,因此相对于前人完全忽视ill-posed问题的做法,可以从本质上缓解求解ill-posed问题带来的困难,效果上的提升也是非常显著:

除了性能的大幅提升,更重要的是,得益于建模方法尝试直接解决任务的本质问题,模型所需参数量只需前人方法的1/10~1/30。下面是效果的可视化,请注意绿色框中对原图的还原程度。

更多的细节可以参考论文,包括具体的训练方法、不同采样的、如何影响图片还原、对于Out of Distribution的模型又会有怎样的效果等等。

3

总结

最后总结一下:其实Image Rescaling任务是一个很有挑战、同时在实际场景中应用广泛且商业价值巨大的任务。本文使用可逆神经网络对解决这一对逆任务进行了初步的尝试,沿着这条思路仍有很多值得发掘的点。同时,信息丢失(Information Loss)所导致的ill-posed问题在现实中也大量存在,本文提供的对Lost Information进行建模的视角,相信可以对类似任务有一定的参考价值。

参考资料:

^Nonlinear independent component analysis: Existence and uniqueness results. https://www.sciencedirect.com/science/article/abs/pii/S0893608098001403

Invertible Image Rescaling 可逆图像缩放:完美恢复降采样后的高清图片(ECCV 2020 Oral )相关推荐

  1. ECCV 2020 Oral | 可逆图像缩放:完美恢复降采样后的高清图片

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文介绍的是ECCV 2020 Oral论文<Inverti ...

  2. Opencv9:实现图像尺寸缩减(降采样)功能

    Opencv9:实现图像尺寸压缩(降采样)功能 (1)实现功能: 对图像实现一个类似于最大池化(max-pooling)的功能,缩减图像的尺寸,用n*n局部内灰度值最大的像素替换这个n*n局部块. 稍 ...

  3. 【图像处理】——改变图像的大小(降采样重采样)下采样和上采样

    转载自:https://jingyan.baidu.com/article/a3a3f81139be1f8da2eb8ade.html 上采样.下采样和金字塔加速参考:https://blog.csd ...

  4. PPT科研绘图:将PPT绘制的图像保存为高清图片

    目录 step1: 改变PPT的导出分辨率设置 step2: 打开PPT,设置"图片大小和质量" step3: 将PPT页面导出为图像 step4:图片裁剪 在论文写作中需要用到高 ...

  5. python4k高清图片_第一次接触,尝试用python抓取国外4k高清图像数据,真方便

    计划了很久,终于还是利用在家的几个月时间,开始学习python编程. 作为一个学霸,我更愿意在实践中学习,实践出来的效果给我更多的信心和乐趣,于是,我花了大约一个月的时间,看了一本Python入门的相 ...

  6. 壁纸网站的高清图片,完美符合视觉控的你!

    一张符合心意的壁纸,特别是高质量的高清壁纸,能在哪里找到呢? 简单舒服的壁纸下载网站,高图网 www.gaopic.com 以搜索功能为主.如果你喜欢狗狗,就搜索 dog,在其中找到你喜欢的内容,并且 ...

  7. python 阴阳师 识别图像_Python爬虫练习:爬取阴阳师高清大图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本环境配置 python 3.6 pycharm requests 相关模块pip安装即可 ...

  8. 高清变脸更快更逼真!比GAN更具潜力的可逆生成模型来了 | OpenAI论文+代码

    昨天上市即破发的小米,今天上午股价大涨近10%.这下雷军要笑了. 而且可以笑得更灿烂.更灿烂是什么样?来,我们用OpenAI刚刚发布的人工智能技术,给大家展示一下.   当然这个最新的技术,不止这 ...

  9. VTK修炼之道30:图像重采样_降采样和升采样技术

    1.VTK中的图像重采样实现 图像重采样是指对采样后形成的由离散数据组成的数字图像按所需的像元位置或像元问距重新采样,以构成几何变换后的新图像.重采样过程本质上是图像恢复过程,它用输入的离散数字图像重 ...

最新文章

  1. 行人检测与重识别!SOTA算法
  2. oracle索引优劣,ORACLE的五种表的优缺点概述
  3. c++ 字典_python字典详解-超级完整版
  4. 深入了解 Microsoft AJAX Library (转自msdn,觉得不错)
  5. [C++对象模型][9]虚继承与虚函数表
  6. java日志框架log4j详细配置及与slf4j联合使用教程
  7. 细谈Ehcache页面缓存的使用
  8. three.js插件实现立体动感视频播放效果
  9. Ollydbg使用教程学习总结(四)
  10. C#递归搜索指定目录下的文件或目录
  11. JVM飙高排查脚本-结构分析
  12. 基于单片机的老人防摔GSM报警
  13. Git客户端Tower for Mac 8.2
  14. android切图规范,APP切图详细规范终极指南
  15. 数显之家快讯:【SHIO世硕心语】中国武侠背后的传奇家族-海宁查氏,如何兴盛600年?
  16. Failed to introspect Class [com.ssm.controller.OrderController] from ClassLoader [ParallelWebappClas
  17. antd vue form 手动校验_Ant Design 4.0 的一些杂事儿 - Form 篇
  18. 软件开发之版本控制方式
  19. mtk RF配置步骤三
  20. android实现LED发光字效果实战

热门文章

  1. 什么是5g全双工模式_5G的完整形式是什么?
  2. React Native的Navigator详解
  3. 2022年全球打鼾解决方案行业分析报告
  4. 怎么剪切音频的一部分 去掉音频中的某段内容
  5. oracle 拉里 网线通道,拉里.埃里森:Oracle云计算服务进入超速增长阶段
  6. 招聘移动全栈工程师(iOS 方向)
  7. 每周论文精读05-A2J:AnchortoJointRegressionNetwork for 3D ArticulatedPoseEstimation from a SingleDepthImage
  8. ubuntu 坚果云无法切换用户[closed]
  9. 苹果快捷指令——支付宝小程序一键直达:URL Scheme 跳转
  10. C语言--第二篇类型、运算符与表达式