ECCV 2020 | 对损失信息进行建模,实现信号处理高保真还原

2020-09-04 | 作者:郑书新、刘畅

编者按:信号在我们的日常生活中随处可见,例如:声音、图像、视频等。然而在信号的传输或存储过程中,往往会面临信号失真、质量变差等问题。今天这篇文章就来探讨一下信号处理中的信息丢失问题,其中包括微软亚洲研究院机器学习组与北京大学在 ECCV 2020 上发表的 Oral 论文《可逆图像缩放》(Invertible Image Rescaling)等工作。


大家是否有过这样的经历:自己拍摄的高清照片/视频,想通过社交账号分享给朋友,然而对方接收到的却是一张低分辨率的模糊照片,甚至有些图片或表情包在经过多次传播之后,糊到惨不忍睹。

这种情况是由于程序为了减轻服务器端的传输和存储压力,主动对信号进行了采样、压缩等操作,而这些操作会不可避免地引起信息丢失(information loss)的问题,造成对原始信号还原的挑战性。直到今天,信息丢失问题仍没有被很好地解决。这篇文章将探讨信号处理中的信息丢失问题,其中包括的微软亚洲研究院机器学习组与北京大学在 ECCV 2020 上发表的 Oral 论文《可逆图像缩放》(Invertible Image Rescaling)工作则以图像信号为例,探讨了图像的压缩或缩放后的还原问题。

图像压缩算法是将原始图像压缩为比特流,图像缩放算法则是将高清图像降采样为低分辨率图像,在实际应用中,二者常结合使用。

图1:图像压缩与缩放任务

此前的通用方法是使用 Encoder-Decoder 框架对降采样(压缩)和升采样(重建)进行建模,并使用大规模的深度学习模型来取得较好的还原效果。然而,上述框架存在一个严重的问题:最后一步从低维信息中还原原始图像的过程是一个典型的不适定 (ill-posed) 问题。

何为不适定问题?以4个像素点的图像降采样为例:

上图有4个像素,值分别为1,3,5,7。假设对原图进行双线性插值降采样(Bilinear Interpolation),得到像素值为4的低分辨率图片。那么,如何从这一个像素还原出原图呢?这个问题非常难求解,因为有无数多种4个像素取值的组合都可以得到同样一张低分辨率的图片。如果是 4x 降采样,则会有16个像素被采样成一个点。这种不适定问题的产生,就是由于求解过程中的信息不完全所导致的。在降采样的过程中存在着不可逆的信息丢失, 以至于仅从剩余的不完全信息中无法很好地还原回原图。

对于图像缩放任务中的不适定问题,此前的做法一般是使用一个超分辨率的卷积神经网络,尝试从大量的数据中强行学习低分辨率到高分辨率的映射关系;或者使用编码器(encoder)网络对原图进行降采样,同时使用解码器(decoder)网络还原图片,二者进行联合训练(jointly training)来达到更好的效果。但以上这些方法都没有从本质上解决不适定问题,效果也不尽如人意。

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

不适定问题的产生是由于信息的丢失,那么具体是什么信息被丢失了呢?

“High-frequency content will get lost during sample rate conversion.”

——Nyquist-Shannon Sampling Theorem

香浓-奈奎斯特采样定理解释说,正是由于高频信息的丢失导致无法很好的还原高清原图。那么如果“保留”这些高频信息呢?

图3:经小波变换拆分成低频与高频分量的图片可以被小波逆变换完整恢复成原图片。

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

当选择保留全部信息时,可以使用小波变换的逆变换(即反函数,有f(x)=y, 则其反函数f^(-1) (y)=x),轻松地将原图恢复出来。同理,对于使用 DNN 进行降采样的图片,如果保留了全部信息,那么也可以使用 DNN 的反函数将原图恢复回来。

图4:使用 DNN Encoder 的逆函数、并保留损失的信息即可完美还原原始图像。

对于深度学习模型这样一种复杂的非线性函数,它的反函数又是什么呢?这就要用到可逆神经网络(Invertible NN, INN)模型。对可逆神经网络模型不熟悉的读者朋友,推荐阅读博客 Flow-based Generative Model:

https://lilianweng.github.io/lil-log/2018/10/13/flow-based-deep-generative-models.html

研究员们采用了最简单的可逆架构形式(请注意这里只采用了可逆架构,但建模方式与 Flow-Based 模型不同),且可逆神经网络是严格可逆的。也可以从另一个角度来思考这个问题,即降采样和升采样本来就是一对逆任务,那是否应当使用可逆神经网络。

图5:使用可逆网络和其逆网络来代替 DNN Encoder 与 Decoder

有了可逆神经网络模型,就可以把之前的 Encoder-Decoder 网络换成 INN 和它的反函数,这样,如果可以保留全部信息,那么就能够完美恢复出原始的高清图片。然而,在存储、传输低分辨率图片时系统无法附带这些本应被丢失的信息(低分辨率图片的维度+丢失信息的维度=原始图片的维度),而丢弃的这些信息又导致无法使用 INN 来恢复出原图。到这里,好像又陷入了一个两难的局面,那有没有什么聪明的做法可以解决这个问题呢?回顾一下前面的简单例子:

研究员们令 x 表示原始高清图片,y 和 z 分别表示低频与高频分量。小波变换 f(⋅) 将 p(x) 转换为 p(y)p(z|y)。z 本该被丢弃,然而却无法被丢弃(因为丢弃后无法通过 f^(-1) (⋅) 恢复 x),其原因在于 z 的分布是依赖于 y,即 z 是与样本相关的,因此分布 p(z|y) 是难以获知的。可以发现,只要捕捉到丢失信息(Lost Information)的分布,就能得到关于它最多的信息,所以如果能令 z 与 y 相互独立,并且使数据集中所有的 z 通过某个变换服从一个预定的简单分布(如高斯分布),那么 z 就可以被安全地丢弃,等需要它时再采样即可。

到这里,就轮到 INN 出场了。引入变量 z',令 z'=h_y (z)。h(⋅) 是一个 INN,负责把 z~p(z│y) 转换为 z'~N(0,I) (这步有定理保证[1])。此时 z' 的分布已经与 y 无关了,即与样本无关。同时,INN 还可以生成符合要求的 p(y'),如视觉效果更好的/便于压缩的低维信息。

图6:对图像缩放任务中的损失信息建模

此时,对于与样本无关的 z',可以放心地将其丢弃。而当需要恢复原图时,可以在高斯分布中进行采样来得到 z'。需要注意的是,整个过程并不是完全没有信息丢失,这是因为研究员们使用了高斯分布中的一次随机采样来代替符合该分布中的一个特定样本点。但是由于 INN 已经学习到如何将符合高斯分布的点(结合 y')恢复为与样本相关的 z~p(z|y),因此相对于此前完全忽视不适定问题的做法,则可以从本质上缓解求解不适定问题所带来的困难。该方法在图像缩放任务上的提升也非常显著(如下表所示)。

表1:图像缩放任务在常见数据集上的表现(PSNR)

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

图7:效果可视化

对于图像压缩任务同理,该方法可以使用对损失信息进行建模的思想应用在图像压缩任务中,使用服从高斯分布的隐变量 z 来捕捉压缩过程中的信息丢失,从而帮助压缩图像的重建效果。对比此前的工作,该方法在压缩率与恢复效果上都有较大提升。

图8:图像压缩任务中对损失信息进行建模

图9:对图像压缩中损失信息进行建模在常用数据集上的效果

在本篇文章中,研究员们探讨了信号处理中常见的信息丢失问题,并采用对丢失信息进行建模的思想,利用可逆神经网络来最大化还原原始信号,在图像缩放、压缩等任务上都取得了较大的提升。了解更多信息,可参考论文以及代码:

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

相关代码和预训练模型:https://github.com/pkuxmq/Invertible-Image-Rescaling

参考:

[1] Nonlinear independent component analysis: Existence anduniqueness results

https://www.sciencedirect.com/science/article/abs/pii/S0893608098001403