ECCV 2020 | 对损失信息进行建模,实现信号处理高保真还原
编者按:信号在我们的日常生活中随处可见,例如:声音、图像、视频等。然而在信号的传输或存储过程中,往往会面临信号失真、质量变差等问题。今天这篇文章就来探讨一下信号处理中的信息丢失问题,其中包括微软亚洲研究院机器学习组与北京大学在 ECCV 2020 上发表的 Oral 论文《可逆图像缩放》(Invertible Image Rescaling)等工作。
来源 | 微软研究院AI头条
大家是否有过这样的经历:自己拍摄的高清照片/视频,想通过社交账号分享给朋友,然而对方接收到的却是一张低分辨率的模糊照片,甚至有些图片或表情包在经过多次传播之后,糊到惨不忍睹。
这种情况是由于程序为了减轻服务器端的传输和存储压力,主动对信号进行了采样、压缩等操作,而这些操作会不可避免地引起信息丢失(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:经小波变换拆分成低频与高频分量的图片可以被小波逆变换完整恢复成原图片。
为了可以显式地保留高频信息,如果将降采样的过程替换成了小波变换,由小波变换可以得到原图的一个低频分量和三个不同方向的高频分量。可以看到,这里的低频分量与双线性插值降采样得到的低分辨率结果是一样的,而高频分量则是在降采样过程中被丢失的信息。
当选择保留全部信息时,可以使用小波变换的逆变换(即反函数,有 , 则其反函数 ),轻松地将原图恢复出来。同理,对于使用 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 来恢复出原图。到这里,好像又陷入了一个两难的局面,那有没有什么聪明的做法可以解决这个问题呢?回顾一下前面的简单例子:
研究员们令 表示原始高清图片, 和 分别表示低频与高频分量。小波变换 将 转换为 。 本该被丢弃,然而却无法被丢弃(因为丢弃后无法通过 恢复 ),其原因在于 的分布是依赖于 ,即 是与样本相关的,因此分布 是难以获知的。可以发现,只要捕捉到丢失信息(Lost Information)的分布,就能得到关于它最多的信息,所以如果能令 与 相互独立,并且使数据集中所有的 通过某个变换服从一个预定的简单分布(如高斯分布),那么 就可以被安全地丢弃,等需要它时再采样即可。
到这里,就轮到 INN 出场了。引入变量 ,令 。 是一个 INN,负责把 转换为 (这步有定理保证[1])。此时 的分布已经与 无关了,即与样本无关。同时,INN 还可以生成符合要求的 ,如视觉效果更好的/便于压缩的低维信息。
图6:对图像缩放任务中的损失信息建模
此时,对于与样本无关的 ,可以放心地将其丢弃。而当需要恢复原图时,可以在高斯分布中进行采样来得到 。需要注意的是,整个过程并不是完全没有信息丢失,这是因为研究员们使用了高斯分布中的一次随机采样来代替符合该分布中的一个特定样本点。但是由于 INN 已经学习到如何将符合高斯分布的点(结合 )恢复为与样本相关的 ,因此相对于此前完全忽视不适定问题的做法,则可以从本质上缓解求解不适定问题所带来的困难。该方法在图像缩放任务上的提升也非常显著(如下表所示)。
表1:图像缩放任务在常见数据集上的表现(PSNR)
除了性能的大幅提升,更重要的是,得益于建模方法尝试直接解决任务的本质问题,模型所需的参数量仅是此前方法的1/10~1/30。下面是效果的可视化,请注意绿色框中对原图的还原程度。
图7:效果可视化
对于图像压缩任务同理,该方法可以使用对损失信息进行建模的思想应用在图像压缩任务中,使用服从高斯分布的隐变量 来捕捉压缩过程中的信息丢失,从而帮助压缩图像的重建效果。对比此前的工作,该方法在压缩率与恢复效果上都有较大提升。
图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
更多精彩推荐
滴滴AI Labs负责人叶杰平离职!CTO 张博接任
5年5亿美金,华为昇腾如何构建全行业AI生态?
GitHub 标星 20000+,国产 AI 开源从算法开始突破 | 专访商汤联合创始人林达华
字节跳动斩获支付牌照欲建金融帝国,技术实力配得上野心吗?
腾讯微博即将关停,十年了,你用过吗?
相关文章:

斯坦佛编程教程-Unix编程工具(四)
emacs 下面将会简单的介绍一个叫做emacs的文本编辑器,它是由GNU组织提供的自由软件。它是一个非常优秀的编译器,并且,它能很好地和其他UNIX工具整合在一起。很多编辑器都有着非常多的理由来说明他们多优秀,但是这里我们就不讨论这…

addTwoNumbers
大神的代码好短,自己写的120多行_ 各种判断 ListNode *f(ListNode *l1, ListNode *l2) {ListNode *p1 l1;ListNode *p2 l2;ListNode *res new ListNode(0);ListNode *p3 res;int sum 0;while (p1 ! NULL || p2 ! NULL) { //这里用“或”sum / 10; //进位if (p1…

长江存储推消费级固态硬盘,Xtacking技术加持
9月10日,一直专注于to B的长江存储推出致钛系列两款消费级固态硬盘(SSD)新品,分别为PCIe接口PC005 Active和SATA接口SC001 Active,兼具强劲的性能和可靠的品质,并由Xtacking技术加持。目前两款产品现已登陆京东预售,两…

停电后,JavaScript定时器居然变慢了~
小停了会电。除了有点热,对于用笔记本的我们来说毫无损失。 不过,一件诡异的事却在这短短几分钟里遇到了:用 IE 测试 JavaScript 代码的时候,发现setInterval的频率变成了60帧/秒。 这在老版本的IE上面是再正常不过了。不过对于与…

HTML4.0标准语法--字体
◇ 标题字体(Header) <h#> ... </h#> #1, 2, 3, 4, 5, 6 <h1>今天天气真好!</h1> 今天天气真好! <h2>今天天气真好!</h2> 今天天气真好! <h3>今天天气真好!</h3>…

Tomcat 7.x热部署
由于在开发阶段,需要频繁的修改源代码,如果每次修改完代码都去重启服务器来检测效果,那简直麻烦到你想死,又耽误时间,所以,在网上找了许久,终于找到了解决办法, 特来分享 我也试了修…
机器学习中,梯度下降算法的问题引入
来源 | 动画讲编程今天讲解的内容是梯度下降算法。梯度下降算法在机器学习中的应用十分广泛,该算法的最主要目的是通过迭代的方法找到目标函数的最小值,经常用来解决线性回归和逻辑回归等相关问题。本节课主要讲解梯度下降算法解决一元线性回归问题&…

HTML4.0标准语法--文字布局
◇行的控制 段(Paragraph) (可以看作是空行) <p> 你好吗?<p>很好。 你好吗? 很好。 换行 <br> 你好吗?<br>很好。 你好吗?很好。 不换行<nobr> <nobr> 请改变您浏览器窗口的宽度&#x…

poj(2325)线段树
这里介绍另外一种解法,此题可以用线段树,可以用树状数组 其实这题求的都是下面的和左面的,线段树这种数组结构刚好可以满足,为什么呢?这里稍微解释下吧,也有助于以后的复习 看上面这个图,[1,1]&…

2017-1-7 html元素分类(1)
html元素分类结构性元素 section 在web页面应用中,该元素也可以用于区域的章节描述 header 页面主体的头部 footer 页面的底部 nav 专门用于菜单的导航、链接导航的元素 article 用于表示一篇文章的主体内用块级元素 aside 泳衣表达注记、贴士、侧栏、摘要的引用等作…

MyEclipse使用技巧小总结
1、 自动提示:窗口->首选项->Java->编辑器->内容辅助->自动激活,在下面的“Java的自动激活触发器里面填上“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”。 2、 加快自动提示的时间:窗口->首选项…
开放源码,华为鸿蒙HarmonyOS 2.0来了
作者 | Just出品 | AI科技大本营(ID:rgznai100)去年8月,鸿蒙HarmonyOS一经发布,在开发者群体中引发强烈反响。有人赞赏华为的战略和技术,但也有不少人质疑那只是个PPT操作系统,凡此种种,热议不断…
纯CSS实现对白框
如果一个盒子的长宽都为零,那么它的四条border就会碰到一起,变成实心的,而且每一条border都是一个三角形;我们就可以利用三角形来实现对白框的尖下巴。 通过把border上左设置为有颜色,下右设置为透明,在#de…

HTML4.0标准语法--表格
表格的色彩 表元的背景色彩和背景图象<th bgcolor#> <th background"URL"> #rrggbb 16 进制 RGB 数码, 或者是下列预定义色彩名称:Black, Olive, Teal, Red, Blue, Maroon, Navy, Gray, Lime, Fuchsia, White, Green, Purple, Silver, Yello…
能力差的程序员90%输在这点上!CTO:其实都是瞎努力!
在大数据浪潮当中,数据分析是这个时代的不二“掘金技能”。我们每一个人,每天无时无刻都在生产数据,一分钟内,微博上新发的数据量超过10万,b站的视频播放量超过600万......这些庞大的数字,意味着什么&#…

zendframwork入口关键Zend_Application.php类
为什么80%的码农都做不了架构师?>>> 推荐阅读:http://www.cnblogs.com/rexy/archive/2010/05/13/1734406.html 里面有详细的类图关系,UML图。。。 转载于:https://my.oschina.net/wufa/blog/71634
2017伊始-随笔
微信小程序发布 今天,2017年1月9日,微信的小程序发布了。我打开了美团外卖小程序,然后把美团外卖app卸载了;我打开了摩拜单车小程序,然后把摩拜单车app卸载了。有人问,这种小程序与网页版的桌面图标有什么区…

广告条随滚动条的移动而移动
文章来源:蓝色理想<html><head><title>跟随滚动条的图片</title><meta http-equiv"Content-Type" content"text/html; charsetgb2312"><STYLE mediascreen typetext/css>#floater { POSITION: abs…

使用wget在linux服务器上下载oracle软件
今天需要在远程几台服务器上安装oracle软件,本地的网络不是很好,如果同本地下载,然后再上传到服务器上比较耗时。所以就想直接在服务器上直接下载软件,这样不光速度比较快,而且还节省了很多时间。 我是这样做的。 首先…
揭秘华为AI一站式开发平台,3步构建一个AI模型 | 华为昇腾师资培训沙龙西安场...
2018 年,在第三届 HUAWEI CONNECT(华为全联接大会)上,华为首次公布了 AI 战略与全栈全场景 AI 解决方案,其中包含全球首个覆盖全场景人工智能的华为昇腾(Ascend)系列处理器以及基于华为昇腾全栈…

PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
Python黑帽编程1.5 使用Wireshark练习网络协议分析 1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为《Understanding Network Hacks Attack and Defense with Python》一书,为了解决很多同学对英文书的恐惧,解决看书之后实战过程中遇…

20种看asp源码的方法及工具
作者:欧杨飘雪 http://blog.csdn.net/flyingsnowy/众所周知windows平台漏洞百出,补丁一个接一个,但总是补也补不净。我把我所知道的20种看asp源码的方法总结了一下,并且用c#写了个应用程序来扫描这些漏洞,发现虽然大…
关注度越来越高的行人重识别,有哪些热点?
来源 | HyperAI超神经责编 | Carol封图 | CSDN付费下载自视觉中国在茫茫人海中,你能不能一眼就找到想找的那个人?如今,这个任务对于计算机来说,可能是小菜一碟了。而这得益于近年行人重识别技术的飞速发展。行人重识别࿰…

《QTP自动化测试进阶》(1)
学习《QTP自动化测试进阶》第一章。 采用不同的项目开发模型对自动化测试有不同的影响。 (1)瀑布模型:瀑布模型在需求定义方面做得很好,这对自动化测试是有益的,包括可以尽早选择合适的自动化测试策略,让自…

JNDI概述(转载)
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。那么,JNDI…
怎样用Python控制图片人物动起来?一文就能Get!
作者 | 李秋键责编 | 李雪敬头图 | CSDN 下载自视觉中国出品 | AI科技大本营(ID:rgznai100)引言:近段时间,一个让梦娜丽莎图像动起来的项目火遍了朋友圈。而今天我们就将实现让图片中的人物随着视频人物一起产生动作。…

Directx11教程(61) tessellation学习(3)
现在我们看看在不同tess factor的情况下,三角形是如何细分的?(这儿三条边和内部tess factor值是一样的,而且partitioning("integer")) 下面8张图是三角形在tess factor 1到8的情况下的细分细节: 因为TS阶段是硬件自己做…

HTML語法大全
作者:闪吧標籤 , 屬性名稱 , 簡介 <! - - ... - -> 註解 <!> 跑馬燈 <marquee>...</marquee>普通捲動 <marquee behaviorslide>...</marquee>滑動 <marquee behaviorscroll>...</marquee>預設捲動 <marquee beh…
php相关书籍视频
虽然如今web领域,PHP JSP .NET 并驾齐驱,但PHP用的最广,原因不用我多说。 首先发一个PHP手册,方便查询,这个肯定是学PHP必备的。 下载地址:http://u.115.com/file/aq3e5sv9PHP100的视频教程,这个…

你究竟了解多少HTML代码
作者:十二 文章来源: 蓝色理想今天想学习一下基础知识,就看了一下HTML(4.0),发现自己对HTML掌握的太少了。很多代码都很陌生,根本就没见过,更别提用了。就拿<a></a>元素来举个例子。它的属性…