《Deep Image Compression with Latent Optimization and Piece-wise Quantization Approximation》
绪论
本文提出向优化目标中引入隐层变量损失,同时提出分段量化近似方法。
算法
方法介绍
本方法自编码器包含主网络和超先验网络两部分。主网络如图1所示,包含残差块、注意力模块和卷积层。对于编码器,设计了两种残差块,两者都是3x3卷积核,其中一个包含sub-sampling操作。同时,在编码端核解码端都是用跳跃连接进行特征聚合。
注意力机制帮助模型注意图像中重要区域。注意力模块设计如图2:
超先验模型用来提升熵模型概率估计的准确性。使用sub-pixel卷积和下采样保存更多信息。在超解码器最后,是3D上下文模型和高斯熵模型。输入张量被转化为3D张量然后被3D卷积处理,3D上下文模型可以利用不同通道的特征表示,有利于熵模型参数估计。超先验网络结构如图3,熵估计模块如图4。
损失函数与面向隐层优化
为计算隐层变量的损失,计算过程为:原始隐层变量传入解码器获得重建图像,重建图像被输入编码器来获得重建隐层变量。我们定义原始隐层变量与重建隐层变量之间的误差为隐层损失。
我们希望我们的网络可以尽可能保留隐层特征。基于这个目标,使用L2范数计算隐层损失:
实验损失函数包含四部分:感知损失,重建损失,熵编码损失,隐层损失:
感知损失使用LPIPS,重建损失使用MSE和一个可导实现的(1-MS-SSIM),熵编码损失包含两部分为主网络和超先验的编码长度。隐层损失包含主网络和隐层部分两部分。
使用分段函数来量化近似
反向传播时,区别于之前使用均匀噪声,我们使用非线性分段函数来近似量化过程。注意到隐层变量的范围在-1到1之间。因此设计分段函数如下:
分段函数导数如下:
随机噪声可以粗略的模拟量化过程。随机噪声的近似可能无法为不同子区间的精确舍入方向建模,同时也不能准确模拟量化函数的导数。相反,分段函数可以更好地反应在量化过程中数据变化的趋势。三角形导数与其他方法[ ]相比跟离散量化的导数形状更接近。如图6:
实验
为三种不同比特率0.075bpp,0.15bpp和0.3bpp。在训练阶段,使用从CLIC 2021中随机裁剪的块,采用两步训练过程:第一步,损失函数包含,第二步,添加到损失函数。
进行消融实验。在计算过程中,使用分段量化近似而不是直接量化,所有参数在训练模式下被确定。在极低比特率0.075bpp下,从CLIC2021验证集中选择两个图像块比较,结果为图7。即使面向隐层优化的模型比没有隐层损失优化的模型有更低的PSNR和更低的MS-SSIM,它有更高的感知质量。
另外,对分段函数进行消融实验。结果显示,使用分段函数进行量化近似可以用更少的比特率(0.2568bpp vs 0.2579bpp)提升PSNR 0.13,提升MSSSIM 0.0002。
CLIC2021验证集结果: