图像压缩方法、编解码网络训练方法、装置及电子设备
技术领域
本发明涉及图像压缩领域,特别涉及一种图像压缩方法、编解码网络训练方法、装置及电子设备。
背景技术
目前的图像编码模型训练方法存在技术复杂度高、低码率容易造成细节的丢失、低码率下,对文字等细节重建质量一般等问题。
发明内容
为了解决上述问题,本发明实施例提供了一种图像压缩方法。
根据本发明的第一方面,提供了一种图像压缩方法,包括:
获取图像,所述图像为四通道图像;
根据图像编码网络对所述图像进行至少一次下采样压缩,得到压缩后的第一图像比特流;
根据图像解码网络对所述压缩后的第一图像比特流进行解压,得到第一重建图;
计算所述第一重建图与所述图像的残差,得到第一残差;
根据第一残差编码网络对所述第一残差进行至少一次下采样压缩,得到压缩后的第一残差比特流;
根据第一残差解码网络对所述压缩后的第一残差比特流进行解压,得到第一残差重建图;
根据所述第一重建图与所述第一残差重建图计算得到第二重建图;
计算所述第二重建图与所述图像的残差,得到第二残差;
根据第二残差编码网络对所述第二残差进行至少一次下采样压缩,得到压缩后的第二残差比特流;
根据第二残差解码网络对所述压缩后的第二残差比特流进行解压,得到第二残差重建图;
根据所述第一图像比特流、第一残差比特流、第二残差比特流计算所述图像的压缩比特流。
进一步地,所述图像编码网络、图像解码网络、第一残差编码网络、第一残差解码网络、第二残差编码网络以及第二残差解码网络为卷积神经网络,所述各个网络的结构相同和/或不同。
进一步地,所述根据图像编码网络对所述图像进行下采样压缩的次数不小于所述根据第一残差编码网络对所述第一残差进行下采样压缩的次数;
所述根据第一残差编码网络对所述第一残差进行下采样压缩的次数不小于所述根据第二残差编码网络对所述第二残差进行下采样压缩的次数。
根据本发明的第二方面,提供了一种图像压缩方法,包括:
获取图像,所述图像为四通道图像;
根据图像编解码网络和至少一个残差编解码网络级联地对所述图像进行处理,得到所述图像的比特流和至少一个残差比特流;
根据所述图像的比特流和所述至少一个残差比特流,计算所述图像的压缩比特流。
进一步地,所述根据图像编解码网络和至少一个残差编解码网络级联地对所述图像进行处理包括:
根据所述图像编解码网络中的图像编码网络对所述图像进行至少一次下采样压缩,得到压缩后的图像的比特流;
根据所述图像编解码网络中的图像解码网络对所述压缩后的图像的比特流进行解压,得到重建图;
计算所述重建图与所述图像的残差,得到残差;
根据所述至少一个残差编解码网络中的残差编码网络对所述残差进行至少一次下采样压缩,得到压缩后的残差比特流;
根据所述至少一个残差编解码网络中的残差解码网络对所述压缩后的残差比特流进行解压,得到残差重建图。
进一步地,所述图像编码网络、至少一个残差编码网络为卷积神经网络,所述各个网络的结构相同和/或不同。
根据本发明的第三方面,提供了一种图像编解码网络训练方法,包括:
获取图像,所述图像为四通道图像;
根据图像编解码网络和至少一个残差编解码网络级联地对所述图像进行处理,得到所述图像的第一重建图和至少一个残差重建图;
根据所述图像的第一重建图和所述至少一个残差重建图,计算所述图像的压缩重建图像;
根据概率模型对所述压缩后的图像的比特流和压缩后的残差比特流进行估计,得到码率估计结果;
将所述压缩重建图像与所述图像进行比较,并根据所述码率估计得到率-失真优化结果;
根据所述率-失真优化结果对所述图像编解码网络的参数进行调整。
根据本发明的第四方面,提供了一种图像压缩装置,包括:
获取模块,用于获取图像,所述图像为四通道图像;
第一编码模块,用于根据图像编码网络对所述图像进行至少一次下采样压缩,得到压缩后的第一图像比特流;
第一解码模块,用于根据图像解码网络对所述压缩后的第一图像比特流进行解压,得到第一重建图;
第一计算模块,用于计算所述第一重建图与所述图像的残差,得到第一残差;
第二编码模块,用于根据第一残差编码网络对所述第一残差进行至少一次下采样压缩,得到压缩后的第一残差比特流;
第二解码模块,用于根据第一残差解码网络对所述压缩后的第一残差比特流进行解压,得到第一残差重建图;
第二计算模块,用于根据所述第一重建图与所述第一残差重建图计算得到第二重建图;
第三计算模块,用于计算所述第二重建图与所述图像的残差,得到第二残差;
第三编码模块,用于根据第二残差编码网络对所述第二残差进行至少一次下采样压缩,得到压缩后的第二残差比特流;
第三解码模块,用于根据第二残差解码网络对所述压缩后的第二残差比特流进行解压,得到第二残差重建图;
第四计算模块,用于根据所述第一图像比特流、第一残差比特流、第二残差比特流计算所述图像的压缩比特流。
根据本发明的第五方面,提供了一种图像压缩装置,包括:
获取模块,用于获取图像,所述图像为四通道图像;
处理模块,用于根据图像编解码网络和至少一个残差编解码网络级联地对所述图像进行处理,得到所述图像的比特流和至少一个残差比特流;
压缩模块,用于根据所述图像的比特流和所述至少一个残差比特流,计算所述图像的压缩比特流。
根据本发明的第六方面,提供了一种图像编解码网络训练装置,所述装置包括:
获取模块,用于获取图像,所述图像为四通道图像;
处理模块,用于根据图像编解码网络和至少一个残差编解码网络级联地对所述图像进行处理,得到所述图像的第一重建图和至少一个残差重建图;
计算模块,用于根据所述图像的第一重建图和所述至少一个残差重建图,计算所述图像的压缩重建图像;
估计模块,用于根据概率模型对所述压缩后的图像的比特流和压缩后的残差比特流进行估计,得到码率估计结果;
计算模块,用于将所述压缩重建图像与所述图像进行比较,并根据所述码率估计得到率-失真优化结果;
调整模块,用于根据所述率-失真优化结果对所述图像编解码网络的参数进行调整。
根据本发明的第六方面,提供了一种电子设备,包括:
存储器,用于存储程序;
处理器,耦合至所述存储器,用于执行所述程序,所述程序运行时执行本发明提供的方法。
本发明实施例提供一种图像压缩方法、编解码网络训练方法、装置及电子设备,可对任意类型数据进行压缩,并有很大的性能提升空间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的图像压缩方法流程图;
图2是本发明实施例提供的图像压缩方法流程图;
图3是本发明实施例提供的图像编解码网络训练流程图;
图4是本发明实施例提供的编解码网络示意图;
图5是本发明实施例提供的编解码网络示意图;
图6是本发明实施例提供的编解码网络示意图;
图7是本发明实施例提供的编解码网络示意图;
图8是本发明实施例提供的编解码网络示意图;
图9是本发明实施例提供的编解码网络示意图;
图10是本发明实施例提供的编解码网络示意图;
图11是本发明实施例提供的编解码网络示意图;
图12是本发明实施例提供的图像压缩装置示意图;
图13是本发明实施例提供的图像压缩装置示意图;
图14是本发明实施例提供的图像编解码网络训练装置示意图;
图15是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仪是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
术语定义:
Src:原图;
Tar:重建图;
Bits:压缩比特;
bits_1:压缩后的第一图像比特流;
bits_2:压缩后的第一残差比特流;
bits_3:压缩后的第二残差比特流;
bits_total:原图的压缩比特流;
tng_1:一级图像解码重构;
res_1:一级残差解码重构;
res_2:二级残差解码重构;
Tng_1:一级图像压缩网络;
Res_1:一级残差网络;
Res_2:二级残差网络;
GDN/IGDN:泛化可归一化网络;
leak_relu:编解码网络的输入参数;
Analysis_network:图像编码网络;
Synthesis_network:图像解码网络;
Analysis_prior:超先验编码网络;
Synthesis_prior:超先验解码网络;
AE/AD:算术编码/解码器;
loss:损失;
Rd_loss:率-失真优化;
lambda:码率控制超参数;
distortion:均方误差损失;
distrubition_loss:码字大小。
作为本发明的一个实施例,提供了一种图像压缩方法,如图1所示,包括:
步骤102,获取图像,所述图像为四通道图像。
具体的,四通道图像可以为拜耳阵列图像,拜尔阵列是一种摄像机传感器阵列排布方式,通常是一个4x4的整列,由8个绿色传感器,4个蓝色传感器和4个红色传感器组成。与传统RGB压缩不同,拜尔阵列通常是RGGB四通道排布。并且与传统的8比特256位图不同的是,拜尔阵列通常是有更高的色位精度,例如每个像素通道为10位的1024位图。当对图片进行压缩时,获取该图片对应的图像,当对视频中的全部或者部分视频帧进行压缩时,获取待压缩的视频帧。
步骤104,根据图像编码网络对所述图像进行至少一次下采样压缩,得到压缩后的第一图像比特流。
具体的,根据图像编码网络对所述图像进行4次下采样压缩,每次下采样倍数为2,得到压缩后的第一图像比特流。
步骤106,根据图像解码网络对所述压缩后的第一图像比特流进行解压,得到第一重建图。
具体的,根据图像解码网络对所述图像进行4次上采样解压,每次上采样倍数为2,得到解压后的第一重建图。
步骤108,计算所述第一重建图与所述图像的残差,得到第一残差。
具体的,将所述第一重建图与所述图像相减得到所述第一残差。
步骤110,根据第一残差编码网络对所述第一残差进行至少一次下采样压缩,得到压缩后的第一残差比特流。
具体的,根据第一残差编码网络对所述第一残差进行3次下采样压缩,每次下采样倍数为2,得到压缩后的第一残差比特流。
步骤112,根据第一残差解码网络对所述压缩后的第一残差比特流进行解压,得到第一残差重建图。
具体的,根据第一残差解码网络对所述压缩后的第一残差比特流进行3次上采样解压,每次上采样倍数为2,得到第一残差重建图。
步骤114,根据所述第一重建图与所述第一残差重建图计算得到第二重建图。
具体的,将所述第一重建图与所述第一残差重建图相加得到所述第二重建图。
步骤116,计算所述第二重建图与所述图像的残差,得到第二残差。
具体的,将所述第二重建图与所述图像相减得到所述第二残差。
步骤118,根据第二残差编码网络对所述第二残差进行至少一次下采样压缩,得到压缩后的第二残差比特流。
具体的,根据第二残差编码网络对所述第二残差进行2次下采样压缩,每次下采样倍数为2,得到压缩后的第二残差比特流。
步骤120,根据第二残差解码网络对所述压缩后的第二残差比特流进行解压,得到第二残差重建图。
具体的,根据第二残差解码网络对所述压缩后的第二残差比特流进行2次上采样解压,每次上采样倍数为2,得到第二残差重建图。
步骤122,根据所述第一图像比特流、第一残差比特流、第二残差比特流计算所述图像的压缩比特流。
具体的,将所述第一图像比特流、第一残差比特流、第二残差比特流相加得到所述图像的压缩比特流。
其中,所述图像编码网络、图像解码网络、第一残差编码网络、第一残差解码网络、第二残差编码网络以及第二残差解码网络为卷积神经网络,所述各个网络的结构相同和/或不同。
作为本发明的一个实施例,提供了一种图像压缩方法,如图2所示,包括:
步骤202,获取图像,所述图像为四通道图像。
具体的,四通道图像可以为拜耳阵列图像,拜尔阵列是一种摄像机传感器阵列排布方式,通常是一个4x4的整列,由8个绿色传感器,4个蓝色传感器和4个红色传感器组成。与传统RGB压缩不同,拜尔阵列通常是RGGB四通道排布。并且与传统的8比特256位图不同的是,拜尔阵列通常是有更高的色位精度,例如每个像素通道为10位的1024位图。当对图片进行压缩时,获取该图片对应的图像,当对视频中的全部或者部分视频帧进行压缩时,获取待压缩的视频帧。
步骤204,根据图像编解码网络和至少一个残差编解码网络级联地对所述图像进行处理,得到所述图像的重建图和至少一个残差重建图。
具体的,根据所述图像编解码网络中的图像编码网络对所述图像进行至少一次下采样压缩,得到压缩后的图像的比特流。
根据所述图像编解码网络中的图像解码网络对所述压缩后的图像的比特流进行解压,得到重建图。
计算所述重建图与所述图像的残差,得到残差。
对于所述至少一个残差编解码网络中的每个残差编解码网络:
根据该残差编解码网络中的残差编码网络对所述残差进行至少一次下采样压缩,得到压缩后的残差比特流;
根据该残差编解码网络中的残差解码网络对所述压缩后的残差比特流进行解压,得到残差重建图;
所述重建图与所述残差重建图计算得到第二重建图;
计算所述第二重建图与所述图像的残差,得到第二残差。
将所述第二残差作为级联的下一级残差编码网络的输入再次进行上述操作。
步骤206根据所述图像的比特流和所述至少一个残差比特流,计算所述图像的压缩比特流。
具体的,将所述图像的比特流以及每一级残差编解码网络得到的残差比特流相加得到所述图像的压缩比特流。
其中,所述图像编码网络、至少一个残差编码网络为卷积神经网络,所述各个网络的结构相同和/或不同。
作为本发明的一个实施例,提供了一种图像编解码网络训练方法,如图3所示,包括:
步骤302,获取图像,所述图像为四通道图像。
具体的,四通道图像可以为拜耳阵列图像,拜尔阵列是一种摄像机传感器阵列排布方式,通常是一个4x4的整列,由8个绿色传感器,4个蓝色传感器和4个红色传感器组成。与传统RGB压缩不同,拜尔阵列通常是RGGB四通道排布。并且与传统的8比特256位图不同的是,拜尔阵列通常是有更高的色位精度,例如每个像素通道为10位的1024位图。
步骤304,根据图像编解码网络和至少一个残差编解码网络级联地对所述图像进行处理,得到所述图像的第一重建图和至少一个残差重建图。
具体的,根据所述图像编解码网络中的图像编码网络对所述图像进行至少一次下采样压缩,得到压缩后的图像的比特流。
根据所述图像编解码网络中的图像解码网络对所述压缩后的图像的比特流进行解压,得到重建图。
计算所述重建图与所述图像的残差,得到残差。
对于所述至少一个残差编解码网络中的每个残差编解码网络:
根据该残差编解码网络中的残差编码网络对所述残差进行至少一次下采样压缩,得到压缩后的残差比特流;
根据该残差编解码网络中的残差解码网络对所述压缩后的残差比特流进行解压,得到残差重建图;
所述重建图与所述残差重建图计算得到第二重建图;
计算所述第二重建图与所述图像的残差,得到第二残差。
步骤306,根据所述图像的第一重建图和所述至少一个残差重建图,计算所述图像的压缩重建图像。
具体的,将所述重建图以及每一级残差编解码网络得到的残差重建图相加得到所述图像的压缩重建图像。
步骤308,根据概率模型对所述压缩后的图像的比特流和压缩后的残差比特流进行估计,得到码率估计结果。
具体的,通过超先验编码网络(Analysis_prior)训练一个element-wise自适应高斯概率模型。
步骤310,将所述压缩重建图像与所述图像进行比较,并根据所述码率估计得到率-失真优化结果。
具体的,将所述压缩重建图和所述图像进行比较,得到失真残差;
根据所述码率估计结果和所述失真残差得到所述率-失真优化结果。
在编解码网络中,失真D可以用均方误差
进行表示,其中,x表示所述图像(也称为图像或输入图像),
表示重建图,或使用如MS-SSIM之类的主观失真进行计算。根据对码率和失真进行加权的损失函数R+λD对图像编解码网络进行端到端的优化,其中R表示码率,D表示失真,λ表示权重,在优化过程中,首先定义损失函数,然后可使用反向传播算法对网络参数进行优化。
步骤312,根据所述率-失真优化结果对所述图像编解码网络的参数进行调整。
具体的,根据所述率-失真优化结果对所述图像编解码网络的参数进行训练,并根据训练结果对所述参数进行优化。
作为本发明的一个实施例,提供了一种图像编解码网络训练方法及图像压缩/解压方法,其中,图像编解码网络训练方法通过一级图像压缩(Tng_1),一级残差压缩(Res_1),二级残差压缩模块(Res_2),三者级联优化,通过反向传播算法寻找最优的码字分配,如图4所示。
其中共性的结构包括图像编码网络(Analysis_network),图像解码网络(Synthesis_network),超先验编码网络(Analysis_prior),超先验解码网络(Synthesis_prior),算术编码网络(AE),算术解码网络(AD)几个部分。
1)一级图像压缩:
一级图像压缩的图像编码网络(Analysis_network)进行4次下采样,每次下采样倍数为2。结构如下:
其中GDN/IGDN层为泛化可归一化网络,加快网络收敛速度。
编码网络中192*5*5/2代表卷积核kernel size为[5,5],卷积核channel数量192个,下采样两倍。
解码网络中192*5*5/2含义类似,只不过是进行上采样2倍的操作,如图5所示。
超先验编码网络(Analysis_prior)通过对量化后的特征,训练一个element-wise自适应高斯概率模型。接着通过二值化、熵编码网络,将特征进一步压缩。超先验编码/解码网络如图6所示。
此处的特征即为图像编码网络输出的特征,sigma为训练的高斯概率模型的方差。接着通过二值化网络计算每个二进制字符串的条件概率,最终输入熵编码网络即可,得到压缩后的比特流:bits_1_1。
对于超先验网络的特征,由于本身码字很小,用一个无参估计熵编码网络对其进行压缩,得到bits_1_2。
2)一级残差压缩:
由于残差的分布与原图不同,容忍更进一步的下采样消除残差,所以对一级残差压缩的图像编码网络(Analysis_network)继续进行3次下采样,每次下采样倍数为2。
此处的Src,tar分别为输入残差,及编解码后的输出残差,如图7所示。
一级残差的超先验编码网络目的与之前类似,通过对量化后的特征,训练一个element-wise自适应条件概率模型。接着通过二值化、熵编码网络,将残差的特征进一步压缩,得到压缩后的比特流:bits_2_1,如图8所示。
对于一级残差超先验网络的特征,同样用一个无参估计熵编码网络压缩,得到bits_2_2。
3)二级残差压缩:
同理,二级残差压缩的图像编码网络(Analysis_network)再继续进行2次下采样,每次下采样倍数为2。此处的Src,tar分别为二级残差网络输入残差,及编解码后的输出残差,如图9所示。
二级残差特征的压缩比特流bits_3_1的获取方式同bits_2_1。通过图10的超先验网络学习到element-wise的自适应条件概率。
对于二级残差超先验网络的特征,再用一个无参估计熵编码网络压缩,得到bits_3_2,如图10所示。
最终的压缩重建图像为:
Tar=tng_1+res_1+res_2
最终的压缩比特流为三级网络相加:
bits_total=(bits_1_1+bits_1_2)+(bits_2_1+bits_2_2)+(bits_3_1+bits_3_2)。
网络训优化目标采用Rd_loss形式,通过lambda超参数进行码率控制。通过更改lambda大小,分配模型对预测和残差压缩阶段的重视程度。只约束精度损失Loss,会使模型对P帧的恢复越来越精准。但与此同时,压缩消耗的码字也会直线上升。我们的目的是寻求精度与压缩比的平衡。
Rd_loss=lambda*distortion+distrubition_loss
训练网络架构如图11所示。
熵编码时需要首先将卷积得到的特征量化,量化此处直接进行四舍五入操作。由于量化不可导,此处采用两种方式解决:
一是直接添加一个均匀噪声,模拟量化带来的均匀噪声损失;
二是对四舍五入操作进行梯度截断。
对图像进行压缩时,将三层卷积网络得到的三个图像特征直接进行四舍五入量化操作,结合超先验网络得到的上下文,进行熵编码;再将三个超先验网络特征用一个无参估计的概率模型进行熵编码。得到压缩后的比特流:bits_total=bits_1+bits_2+bits_3。
对图像进行解压时,对bits_1、bits_2、bits_3分别进行熵解码,得到一级图像,一级残差,二级残差的超参数特征;经过超参数解码网络,分别得到三个概率模型;利用三个概率模型,结合压缩后的比特流,熵解码得到三个图像特征;将图像特征经过图像解码网络,得到重建后的tng_1、res_1、res_2,相加即得到最终的重建图像。
作为本发明的一个实施例,提供了一种图像压缩装置,如图12所示,包括:
获取模块1201,用于获取图像,所述图像为四通道图像;
第一编码模块1202,用于根据图像编码网络对所述图像进行至少一次下采样压缩,得到压缩后的第一图像比特流;
第一解码模块1203,用于根据图像解码网络对所述压缩后的第一图像比特流进行解压,得到第一重建图;
第一计算模块1204,用于计算所述第一重建图与所述图像的残差,得到第一残差;
第二编码模块1205,用于根据第一残差编码网络对所述第一残差进行至少一次下采样压缩,得到压缩后的第一残差比特流;
第二解码模块1206,用于根据第一残差解码网络对所述压缩后的第一残差比特流进行解压,得到第一残差重建图;
第二计算模块1207,用于根据所述第一重建图与所述第一残差重建图计算得到第二重建图;
第三计算模块1208,用于计算所述第二重建图与所述图像的残差,得到第二残差;
第三编码模块1209,用于根据第二残差编码网络对所述第二残差进行至少一次下采样压缩,得到压缩后的第二残差比特流;
第三解码模块1210,用于根据第二残差解码网络对所述压缩后的第二残差比特流进行解压,得到第二残差重建图;
第四计算模块1211,用于根据所述第一图像比特流、第一残差比特流、第二残差比特流计算所述图像的压缩比特流。
作为本发明的一个实施例,提供了一种图像压缩装置,如图13所示,包括:
获取模块1301,用于获取图像,所述图像为四通道图像;
处理模块1302,用于根据图像编解码网络和至少一个残差编解码网络级联地对所述图像进行处理,得到所述图像的重建图和至少一个残差重建图;
压缩模块1303,用于根据所述图像的比特流和所述至少一个残差比特流,计算所述图像的压缩比特流。
作为本发明的一个实施例,提供了一种图像编解码训练装置,如图14所示,包括:
获取模块1401,用于获取图像,所述图像为四通道图像;
处理模块1402,用于根据图像编解码网络和至少一个残差编解码网络级联地对所述图像进行处理,得到所述图像的第一重建图和至少一个残差重建图;
计算模块1403,用于根据所述图像的第一重建图和所述至少一个残差重建图,计算所述图像的压缩重建图像;
估计模块1404,用于根据概率模型对所述压缩后的图像的比特流和压缩后的残差比特流进行估计,得到码率估计结果;
计算模块1405,用于将所述压缩重建图像与所述图像进行比较,并根据所述码率估计得到率-失真优化结果;
调整模块1406,用于根据所述率-失真优化结果对所述图像编解码网络的参数进行调整。
作为本发明的一个实施例,提供了一种电子设备,如图15所示,包括:
存储器1501和处理器1502。
存储器1501,用于存储程序。
除上述程序之外,存储器1501还可以被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器1501可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),快闪存储器,磁盘或光盘。
处理器1502,耦合至存储器1501,用于执行存储器1501中的程序,所述程序运行时执行如图1至图3中任意一种方法。
上述的具体处理操作已经在前面的实施例中进行了详细描述,在此不再