首页 / 使用神经网络压缩图像

使用神经网络压缩图像有效专利 发明

技术领域

[0001] 本说明书涉及通过神经网络层处理图像数据以生成输出。

相关背景技术

[0002] 神经网络是使用一个或多个非线性单元层来预测接收输入的输出的机器学习模型。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出用作网络中下一层的输入,即下一个隐藏层或输出层的输入。网络的每层根据相应参数集的当前值从接收的输入生成输出。
[0003] 变分自动编码器可以对输入图像自动编码,即生成输出图像,所述输出图像是提供给自动编码器的输入图像的重建。变分自动编码器通常包括编码器神经网络和生成式神经网络。通常,对给定变分自动编码器中的编码器神经网络和生成式神经网络进行联合训练以生成输入图像的高质量重建。
[0004] 一旦经过训练,变分自动编码器中的编码器神经网络就被配置成接收输入图像并处理输入图像以生成定义表示输入图像的特征的潜变量的值的输出。例如,对于给定的潜变量,例如通过将线性变换应用于输出,编码器神经网络的对应输出可以参数化潜变量从其被采样的分布,或者可以用于生成该分布的参数。一些编码器神经网络是递归神经网络,其生成定义多个时间步长中的每一个处的潜变量的值的输出,一些编码器神经网络是深度神经网络,其生成定义多个层中的每一个的潜变量的值的输出,并且一些编码器神经网络是既为递归也为深度的深度递归神经网络。
[0005] 一旦经过训练,生成式神经网络就被配置成生成以由编码器神经网络的输出定义的潜变量为条件的输入图像的重建。也就是说,生成式神经网络接收潜变量的值作为输入,并使用接收的值生成输入图像的重建。与编码器神经网络一样,一些生成式神经网络是递归神经网络,一些生成式神经网络是深度神经网络,且一些生成式神经网络是深度递归神经网络。

具体实施方式

[0014] 图1示出了示例编码器系统100和示例解码器系统150。编码器系统100和解码器系统150是在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例,其中可以实现下文描述的系统、组件和技术。
[0015] 编码器系统100接收输入图像102并压缩输入图像102以生成输入图像102的压缩的表示122。
[0016] 解码器系统150接收输入图像150的压缩的表示122并生成作为输入图像102的重建的重建图像172。也就是说,解码器系统150基于输入图像102的压缩的表示122来生成输入图像102的估计。
[0017] 通常,压缩的表示122是图像的有损压缩。也就是说,压缩的表示包括少于解码器系统150完美重建图像所需的所有数据,但包括足够的数据以确保重建图像172相对于输入图像102具有期望的质量水平。
[0018] 具体来说,编码器系统100包括编码器神经网络110和压缩子系统120。
[0019] 编码器神经网络110是已经通过训练被配置成处理输入图像102以生成输入图像102的潜变量数据112的神经网络。
[0020] 具体来说,编码器神经网络110已被训练为变分自动编码器的编码器神经网络,并且因此被配置成接收图像102并处理图像102以生成定义多个潜变量的值的输出,每个潜变量表示图像102的一个不同特征。在一些实施方式中,编码器神经网络110的输出定义从中对潜变量进行采样的分布(例如高斯分布)的参数,例如均值或对数方差或这两者。例如,在这些实施方式的一些中,可以将线性变换应用于输出以生成分布的参数。
[0021] 在一些情况下,编码器神经网络110是递归神经网络,其在输入图像102的处理期间生成定义多个时间步长中的每一个处的潜变量的值的输出。
[0022] 在一些其它情况下,编码器神经网络110是深度神经网络,其生成定义多个层中的每个层处的潜变量的值的输出。也就是说,编码器神经网络110具有多个神经网络层,并且多个神经网络层中的每一个被配置成生成相应的层输出,所述相应层输出定义表示图像的特征的相应潜变量的值。
[0023] 在其它情况下,编码器神经网络110是递归深度神经网络,其具有多个层,每个层生成定义多个时间步长中的每一个处的潜变量的值的输出。
[0024] 压缩子系统120被配置成从潜变量数据112生成压缩的表示122。
[0025] 为了生成有损压缩,压缩子系统120使用由编码器神经网络110的输出定义的潜变量的预定恰当子集来生成压缩的表示122,即,使用少于由编码器神经网络110的输出定义的所有潜变量的潜变量来压缩输入图像102。
[0026] 也就是说,潜变量数据112定义第一数目潜变量的值,每个潜变量表示图像102的特征,但是压缩子系统120使用少于第一数目潜变量的潜变量来压缩图像102。用于压缩图像的潜变量在本说明书中将被称为压缩潜变量,而由编码器神经网络110的输出定义但未用于压缩图像的潜变量在本说明书中将被称为剩余潜变量。
[0027] 从下面的描述中可以明显看出,增加被视为压缩潜变量的潜变量的比例提高了重建图像172的质量,但也增加了压缩的表示122的大小。
[0028] 具体来说,图像的特征以从图像的最不抽象表示到图像的最抽象表示的层次结构排列。层次结构的高层级(即,高度抽象层级)处的特征的一个示例可以是指示图像中是否描绘了特定类型的对象(例如,猫、狗或电视)的特征。层次结构的较低层级处的特征(即较不抽象的特征)的一个示例可以是图像的背景是否包含特定图案。
[0029] 为了生成压缩的表示122,压缩子系统120使用与层次结构的预定数目的最高层级相对应的潜变量作为压缩潜变量,并且不使用与层次结构中较低的特征相对应的剩余潜变量。
[0030] 更具体地,由于被训练为变分自动编码器的一部分,在对输入图像102的处理期间,与由编码器神经网络110的其它输出定义的潜变量相比,编码器神经网络110的某些输出定义与层次结构中的更高层级中的特征相对应的潜变量的值。
[0031] 具体来说,当编码器神经网络110是包括在堆栈中布置的多个层的深度神经网络时,堆栈中较高的层生成定义与层次结构中的较高层级中的特征相对应的潜变量的输出,而堆栈中较低的层生成定义与层次结构中的较低层级中的特征相对应的潜变量的输出。因此,为了生成压缩的表示122,压缩子系统120使用与堆栈中的预定数目的最高层相对应的潜变量作为压缩潜变量,并且不使用由堆栈中的较低层生成的剩余潜变量。
[0032] 当编码器神经网络110是递归网络时,在较早时间步长处生成的输出定义于层次结构中较高的层级中的特征相对应的潜变量,而在较晚时间步长处生成的输出定义与层次结构中较低的的特征相对应的潜变量。因此,为了生成压缩的表示122,压缩子系统120使用与预定数目的最早时间步长相对应的潜变量作为压缩潜变量,并且不使用由较晚时间步长生成的剩余潜变量。
[0033] 当编码器神经网络110是深度递归神经网络时,在给定的时间步长内,堆栈中较高的层生成定义与层次结构中的较高层级中的特征相对应的潜变量的输出,而堆栈中较低的层生成定义与层次结构中较低的特征相对应的潜变量的输出,并且跨时间步长,在较早时间步长处生成的输出定义与层次结构中的较高层级中的特征相对应的潜变量,而在较晚时间步长处生成的输出定义与层次结构中较低的特征相对应的潜变量。
[0034] 因此,为了生成压缩的表示122,压缩子系统120使用与在预定数目的最早时间步长处由一些或所有层生成的输出相对应的潜变量作为压缩潜变量,并且不使用由较晚时间步长生成的剩余潜变量。
[0035] 下面参考图2更详细地描述从压缩潜变量生成压缩的表示。
[0036] 在一些实施方式中,编码器系统100和解码器系统150在同一组的一个或多个计算机上实现,即,在当由所述组的一个或多个计算机本地存储图像时使用压缩来减小图像的存储大小的情况下。在这些实施方式中,编码器系统120将压缩的表示122存储在可由一个或多个计算机访问的本地存储器中,使得压缩的表示可以由解码器系统150访问。
[0037] 在一些其它实施方式中,编码器系统100和解码器系统150彼此远离,即,在通过数据通信网络(例如,局域网、广域网或网络的组合)连接的相应计算机上实现。在这些实施方式中,使用压缩来减小通过数据通信网络来传输输入图像102所需的带宽。在这些实施方式中,编码器系统120通过数据通信网络将压缩的表示122提供给解码器系统150,以用于重建输入图像102。
[0038] 解码器系统150包括重建子系统160和生成式神经网络170。
[0039] 重建子系统160被配置成接收压缩的表示122并生成重建的潜变量数据162。具体地,重建子系统160被配置成从压缩的表示重建压缩潜变量并生成剩余潜变量的新值。下面参考图3更详细地描述重建压缩潜变量并为剩余潜变量生成新值。
[0040] 生成式神经网络170是已经通过训练被配置成处理重建的潜变量数据162以生成重建图像172的神经网络。
[0041] 具体来说,编码器神经网络110和生成式神经网络170已被联合训练为变分自动编码器。因此,生成式神经网络170被配置成通过处理由编码器神经网络110的输出定义的潜变量来重建图像。
[0042] 因为压缩潜变量是与输入图像102中的较高层级特征相对应的潜变量,所以由生成式神经网络170生成的重建图像172可以保持输入102的高质量重建,尽管并非所有潜变量都被提供给生成式神经网络170,即,因为与为较高层级特征生成新值相比,为较低层级特征生成新值对整体重建质量的作用更小。
[0043] 图2是用于压缩输入图像的示例过程200的流程图。为方便起见,过程200将被描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,被适当编程的编码器系统(例如图1的编码器系统100)可以执行过程200。
[0044] 系统接收输入图像(步骤202)。
[0045] 系统使用编码器神经网络处理输入图像以生成输入图像的潜变量数据(步骤204)。具体来说,如上所述,编码器神经网络被配置成处理输入图像以生成定义潜变量的值的输出,每个潜变量表示输入图像的不同特征。例如,对于一些编码器神经网络,由编码器神经网络生成的输出定义例如高斯分布的分布的参数,,从该分布中对潜变量进行采样。例如,可以线性地投射针对给定潜变量的输出以生成分布的均值、对数方差或这两者,从该分布中对潜变量的值进行采样。
[0046] 系统使用潜变量数据来生成输入图像的压缩的表示(步骤206)。
[0047] 通常,系统使用算术编码从潜变量数据生成图像的有损压缩的表示。
[0048] 在一个算术编码技术中,系统将离散值x1,...,xn的序列和每个值的相应概率p(x1),...,p(xn)编码为 比特加上一阶常数的压缩的表示。在以下文献中更详细地描述了可由系统使用的示例算术编码技术:Witten,Ian H,Neal,Radford M,and Cleary,John G.Arithmetic coding for data compression(数据压缩的算术代码化).Communications of the ACM,30(6):520–540,1987。
[0049] 在一些实施方式中,为了生成要编码的值和对应概率,系统将压缩潜变量离散化并生成离散化压缩潜变量的序列以作为要压缩的离散值序列。也就是说,系统在压缩输入图像时仅使用压缩潜变量而不使用剩余潜变量。
[0050] 为了使给定的压缩潜变量离散化,系统将潜变量离散化为大约潜变量从其被采样的分布的宽度,然后为潜变量指派最接近分布均值的离散值,即,由编码器神经网络的对应输出定义的离散值。这与其中潜变量的值将从分布中采样的常规变分自动编码器不同,基于分布的均值来将离散值指派给潜变量。
[0051] 然后,系统可以通过从在处理对应潜变量期间由生成式神经网络的相应中间输出参数化的生成式先验分布(例如,高斯分布)进行采样来为每个压缩潜变量生成相应的概率。
[0052] 也就是说,在操作期间,生成式神经网络生成中间输出,所述中间输出可用于对生成式先验分布进行参数化并指派概率来教导离散潜变量值。系统维护生成式神经网络的实例,并使用生成式神经网络处理潜变量的离散值,以生成对生成式先验分布的参数进行参数化或定义的中间输出。然后,对于每个压缩潜变量,系统确定当使用对应的中间输出进行参数化时在给定生成式先验分布的情况下该潜变量的概率。
[0053] 在一些其它实施方式中,系统使用bits-back代码化方案来生成离散值序列和对应的概率。具体来说,系统将压缩潜变量向下离散化到非常高的精度水平,并使用它们对应的概率将必要信息传输到解码系统。在以下文献中更详细地描述了bits-back代码化:Hinton,Geoffrey E and Van Camp,Drew.Keeping the neural networks simple by minimizing the description length of the weights(通过最小化权重的描述长度来保持神经网络的简单性).In  Proceedings of the sixth annual conference on Computational learning theory,pp.5–13.ACM,1993。
[0054] 图3是用于从图像的压缩的表示生成图像的重建的示例过程300的流程图。为方便起见,过程300将被描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,被适当编程的解码器系统(例如,图1的解码器系统150)可以执行过程300。
[0055] 系统接收图像的压缩的表示(步骤302)。
[0056] 系统对图像的压缩的表示进行解码以重建输入图像的压缩潜变量(步骤304)。也就是说,系统使用用于对压缩潜变量进行编码的相同算术代码化技术对压缩的表示进行解码,以重建压缩潜变量的离散值。
[0057] 系统生成剩余潜变量的值(步骤306)。具体来说,系统从先验分布中随机选择剩余潜变量中的每一个的相应值。
[0058] 系统通过以重建的压缩潜变量和随机选择的剩余潜变量作为生成式神经网络的条件来生成压缩图像的重建(步骤308)。也就是说,如上所述,生成式神经网络被配置成生成以一组潜变量为条件的输出图像,每个潜变量对应于不同的图像特征。通过以压缩潜变量和随机选择的剩余潜变量作为生成式神经网络的条件,系统使得生成式神经网络生成重建图像,所述重建图像针对与压缩潜变量相对应的特征具有与输入图像的特征匹配的特征,并且针对与剩余潜变量相对应的特征具有随机选择的值。因为压缩潜变量是与来自层次结构中的较高层级的特征相对应的潜变量,即与对定义输入图像外观最重要的特征相对应的潜变量,所以生成式神经网络仍然可以生成高质量的重建,即使是在剩余潜变量的值是随机选择的情况下。
[0059] 本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件中——包括本说明书中公开的结构及其结构等同物或在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即在有形非暂时性程序载体上编码的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。替选地或另外,程序指令可以在人工生成的传播信号上编码,所述信号例如机器生成的电、光或电磁信号,其被生成以对信息进行编码以便传输到合适的接收器装置从而由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行存取存储器设备,或它们中的一个或多个的组合。
[0060] 术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。所述装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,所述装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
[0061] 计算机程序(也可称为或描述为程序、软件、软件应用程序、模块、软件模块、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言或者声明式或过程式语言,并且计算机程序可以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、专用于所讨论的程序的单个文件中,或者存储在多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的文件。可以部署计算机程序以在一个计算机上或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上执行。
[0062] 本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以实现为专用逻辑电路,所述专用逻辑电路例如是FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
[0063] 适合于执行计算机程序的计算机包括——例如可以基于通用或专用微处理器或两者,或任何其它种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于实施或执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘或光盘),或者或可操作地耦合以从所述一个或多个大容量存储设备接收数据或将数据传送到所述一个或多个大容量存储设备,或者这两者。然而,计算机不需要这样的设备。此外,计算机可以嵌入在另一个设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备——例如通用串行总线(USB)闪存驱动器,仅举几例。
[0064] 适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0065] 为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有显示设备以及键盘和指示设备的计算机上实现,显示设备例如是CRT(阴极射线管)或LCD(液晶显示器)显示屏,用于向用户显示信息,键盘和指示设备例如是鼠标或轨迹球,用户可以通过它们向计算机提供输入。也可以使用其它类型的设备提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声学、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档(例如,通过响应于从web浏览器接收的请求将网页发送到用户的客户端设备上的web浏览器)来与用户交互。
[0066] 本说明书中描述的主题的实施例可以在包括后端组件(例如,作为数据服务器)或包括中间件组件(例如,应用服务器)或包括前端组件(例如,具有图形用户界面或Web浏览器的客户端计算机,用户可通过其与本说明书中描述的主题的实施方式进行交互)或者一个或多个这样的后端、中间件或前端组件的任何组合的计算系统中实现。系统的组件可以通过例如通信网络的任何形式或介质的数字数据通信互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如互联网。
[0067] 计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系由于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
[0068] 虽然本说明书包含许多具体的实现细节,但是这些不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在分开的实施例的语境中在本说明书中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的语境中描述的各种特征也可以在多个实施例中分开地或以任何合适的子组合来实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合中去除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。
[0069] 类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求以所示的特定顺序或连续顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各个系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应理解,所描述的程序组件和系统通常可以一起整合在单个软件产品中或封装成多个软件产品。
[0070] 已经描述了主题的特定实施例。其它实施例在所附权利要求书的范围内。例如,权利要求书中记载的动作可以按不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。

当前第1页 第1页 第2页 第3页
相关技术
压缩图像相关技术
神经网络相关技术
丹尼尔·彼得·维尔斯特拉发明人的其他相关专利技术