本文介绍的是ECCV 2020 Oral论文《Invertible Image Rescaling》,论文做者来自北大、微软亚洲研究院和多伦多大学。git
做者 | 郑书新github
编辑 | 丛 末安全
论文地址:https://arxiv.org/pdf/2005.05650.pdf
服务器
开源代码:https://github.com/pkuxmq/Invertible-Image-Rescaling(即将开源)网络
1函数
研究背景性能
不知道同窗们平日里上网有没有遇到过这种状况:本身精心拍摄的高清照片/视频,想发给朋友or分享到朋友圈/微博/抖音/知乎,结果上传文件以后,直接被无良服务器压成超低分辨率渣画质。甚至有些图片/表情包在通过屡次传播以后,画质已经糊到惨不忍睹。
学习
其实,图片的降采样(缩放)能够说是对数字图像最多见的操做了,它的用处多种多样:压缩图片尺寸、节省服务器存储or带宽、适配不一样分辨率的屏幕等等。像如今服务器资源这么贵,你们发微博/知乎也不交钱,顶多给各位多塞点广告,因此高清图片和视频天然是能压则压,能分得清张一山和夏雨就能够了。ui
如何恢复降采样后的图片是图像处理中一个很是有挑战的问题,一直没有被很好的解决。3d
咱们这篇最新工做,就巧妙地尝试从本质上解决这个问题,论文已被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来恢复出原图。 因此,折腾了半天又把这条路堵死了?
别急,咱们再来回顾一下前面的简单例子:
咱们令 表示原始高清图片, 和 分别表示低频与高频份量。小波变换 将 转换为 。 本该被丢弃,然而却没法被丢弃(丢弃后没法经过 恢复 ),其缘由在于 的分布是condition on ,即 是与样本相关的(case-specific),所以分布 是难以获知的。那咱们的insight就是:只要捕捉到丢失信息(Lost Information)的分布,就能获得关于它最多的信息。所以若是能令 与 相互独立,而且使全部的 (over dataset)经过某个变换服从一个预约的简单分布(如高斯分布),那么 就能够被安全地丢弃,须要它时再采样就行了。
此时,轮到咱们的INN出场了。咱们引入变量 ,令 。 是一个INN,负责把 转换为 (这步有定理保证[1])。此使 的分布已经与 无关了,即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