端到端的图像压缩《Learning Scalable constrained Near-lossless Image Compression via Joint Lossy Image cmp》
Learning Scalable ∞-constrained Near-lossless Image Compression via Joint Lossy Image and Residual Compression
- 一. 简介
- 二.内容
- 2.1 现有方法缺陷
- 2.2 整体框架流程
- 2.3 量化工作
- 2.4 可伸缩编码方案
- 2.5 建模工作
- 2.5.1 有损模式建模
- 2.5.1 有损模式建模
- 2.6 损失函数
- 三. 实验结果
论文地址:https://openaccess.thecvf.com/content/CVPR2021/papers/Bai_Learning_Scalable_lY-Constrained_Near-Lossless_Image_Compression_via_Joint_Lossy_Image_CVPR_2021_paper.pdf
代码地址:https://github.com/BYchao100/Scalable-Near-lossless-Image-Compression
2021 CVPR中含金量相对高的图像压缩论文,工作量很大,把后处理内容做的很全。个人更愿意把这部分工作归于图像压缩的后处理工作,可以很好的与其他的idea耦合。
一. 简介
我们提出了一种联合有损图像和残差用于学习的压缩框架近无损图像压缩。通过有损图像压缩获得原始图像的有损重建,并均匀量化相应的残差以满足给定的误差界限。假设误差界为零,即无损图像压缩,根据变分自动编码器制定了压缩有损图像和原始残差的联合优化问题,并通过端到端训练来解决联合优化问题。为了实现误差范围大于零的可扩展压缩,通过学习量化误差的概率模型,而不是训练多个网络。并且纠正了由训练和推理之间的上下文不匹配引起的导出概率模型的偏差。最后,量化的残差根据偏差校正概率模型进行编码,并与压缩有损图像的比特流连接。
实质重点在于,如何在更低码率的情况下,传输后续增强所需要的高频信息,以及如何控制这部分高频信息的量化达到可伸缩编码的效果。
二.内容
2.1 现有方法缺陷
- 目前还没有很好的后处理方案能够奏效,实际上在端到端的压缩领域,解码端够复杂的情况下,是不需要常规的后处理网络,因为解码器本身承担一定的后处理工作。
- 通过控制后处理的误差容许范围达到整体压缩性能的伸缩性,达到可伸缩编码的效果。
- 校正了由于训练过程和测试过程中,上下文概率不匹配的问题,进一步提高了性能。
2.2 整体框架流程
整体框架图如下:
其中,淡紫色部分是一般性的端到端图像压缩的框架,本文作者follow了谷歌的工作,先通过一般的有损压缩框架得到重构数据,这部分数据相对源数据是有损的,而如何更好地传输这部分有损数据,是本文的关键。橙色模块是概率建模,而黄色模块则是条件触发模块,当进行无损失压缩时,则直接通过橙色模块进行概率建模,当进行有损压缩时,则会触发黄色模块(偏置矫正模块),,完成对于需要传输的残差信息的建模工作。总的来说流程如下:
- 利用现有的有损压缩器得到重构数据。
- 用原始数据和重构数据做减法,求得因为压缩损失的残差信息,记为 rrr,并且根据是否进行无损工作以及量化粗细控制参数得到量化后的残差信息r^\hat{r}r^ 。
- 利用重构信息和量化后的残差信息对 r^\hat{r}r^ 进行概率建模,用于熵编码。
2.3 量化工作
上述公式表示对 rrr进行量化工作,假设当 τ\tauτ 等于0 的时候, r^\hat{r}r^ 等于 rrr 取整,直观上好像是有信息损失的,但是实际上,rrr=x−x~x-\tilde{x}x−x~本身是在整数域上进行的,所以τ\tauτ =0 时没有任何信息损失,并且这个公式比较直观地代表了 bin= 2∗τ+12*\tau+12∗τ+1地量化区间,通过τ\tauτ 来控制残差数据 rrr 由于量化操作损失的信息量。并且由于这部分量化工作不可微分,在训练过程中采用添加等bin的均匀噪声的形式。
2.4 可伸缩编码方案
在端到端领域,可伸缩编码和可变速率应该是一个概念的,即使用单个模型就能达到多个码率效果的作用,而不像原来的一个模型只能对应一个码率点,如果需要多个码率的话,需要多个训练多个网络。区别于码率控制的概念:码率控制在于编码器决定为每帧视频分配多少比特的工具,通过某种方式确定编码参数使得编码器能将编码对象压缩到指定大小的码率,前者只要要求速率可变,后者要求编码到指定速率。
本文采用的伸缩编码方案如下:
- 采用紫色模块的编解码网络作为获得重构图像的初始解,换个角度思考,可以将这部分网络是为传统编码的预测器作用,这里进行预测编码。
- 预测后得到残差系数,对残差系数进行量化,通过τ\tauτ控制量化步长,控制残差系数的内容损失,步长越大,内容损失越大,步长越小,内容损失越小,这部分和传统编码的思想及其相似。
- 对量化后的残差系数进行熵编码,需要进行熵率建模。由于对同一信息进行不同量化步长的处理,导致残差系数的信息损失差距比较大,一般的神经网络不能很好地适应这种信息损失差距,所以会导致泛化性能较差,因为为了弥补这一性能上地损失,作者使用了Conditional Conv取代一般地Conv进行卷积运算。
伸缩编码通过量化的形式实现的:
当 τ\tauτ等于1时,量化的bin=3,具体量化如上图所示,所以此时如果计算每个量化后的残差系数的概率情况计算如下:
2.5 建模工作
2.5.1 有损模式建模
着重介绍这部分的建模工作,左边是无损压缩下的建模,右边是有损压缩下的建模,先行介绍左侧的无损下的建模原理。
r^\hat{r}r^ 如上所介绍的为量化后的残差系数,也是需要写进码流进行传输的。 μ\muμ 则是通过原始有损框架中的重构数据学习得到的,控制通道为64,宽度和长度与原图一致。CrC_rCr 是 r^\hat{r}r^ 经过5x5的Mask 卷积得到的,平采样且通道转换为64.
得到输入后,接下来对上述两个输入进行concat,具体操作如下:
输出建模四个建模参数,对其进行离散混合逻辑斯蒂建模,其中(a)中的每个估计参数估计组件如(b)所示,之所以采用1x1卷积核而不是3x3卷积核,是由于在这里要使用类似于Minnen2018[1]的自回归技术,保证每个解码点的信息来源仅限于已解码的信息,具体技术不做赘述,可参考博客,中间层卷积核的输出通道为128,最后一层输出 3xK 个通道,其中 K 设置为5,这里解释一下为什么是3xK 个通道:因为原始的残差信息是 (3,W , H)的数据,本文对其中的每一个点都建立数量为 5 的离散混合逻辑斯蒂模型,所以需要 3xk个通道输出,并且每个混合模型有3个系数(π,μ,σ\pi,\mu,\sigmaπ,μ,σ),实际上一般的建模工作到这里就可以了,已经完成了建模的功能了,但是本文做了进一步的优化,即还有一个β\betaβ系数,接下来介绍β\betaβ系数的作用:
简单来说这里包含了一系列的自回归操作,即利用已经解码的点对正在解码的点进行一个微调,而β\betaβ 就是这个微调系数,其中如图,k是表示第几个混合逻辑斯蒂的参数,i表示二维空域的位置,1,2,3则表示通道维度的下标,即这里利用已经解码的通道来对正在解码的通道进行refine,具体的refine规则则如上图,对原始的得到的μ\muμ参数进行加权和,β\betaβ是微调系数,又可以是权重系数。经过β\betaβ 调整后的建模参数则是最终的熵模型的参数。
其建模公式如下:
建模后的概率计算如下:
S表示标准的逻辑斯蒂的cdf函数,最终得到每个残差系数的概率情况,此时完成了在无损压缩的情况下,残差系数的建模工作,实际上这部分工作对于有损压缩也能work,并且我的理解是work的性能也不会差,但是进一步作者认为这部分工作在有损压缩条件下还有提升空间。
2.5.1 有损模式建模
有损模式下的建模工作问题其难度在于后续的可伸缩编码方式对于残差系数的处理,这部分会导致输入的高频分量的残差系数的内容复杂度幅度很大,从而导致 entropy model的性能变低,这里借鉴了Lee的思路,具体采用了一种Conditional Conv的方式,而具体的模型结构整体与上述的无损模式下的网络结构一直:
即通过τ\tauτ 编码成独热向量,然后经过全连接层生成权重与原始的图像进行作用,因为τ\tauτ一定程度上能够揭示输入内容的复杂性,所以先验地给卷积核输入这一信息能够增加泛化能力。
2.6 损失函数
整体上和原来的形式差不多,遵循 l=R+λ∗Dl=R+\lambda * Dl=R+λ∗D ,速率项包含了 基线框架中的 Ry\R_{y}Ry和Rz\R_{z}Rz 外,还增加了残差系数的码流Rr\R_{r}Rr。在失真项上表达式如下:
感觉表达的就是MSE的意思,关于这里的失真公式,并不是很能理解好。需要注意的时,这里的失真对比并不是原始图像和最终的重构图像的失真,而是原图和紫色模块的输出图像的失真。并且根据作者实验情况,λ\lambdaλ参数选择为0.03. 理论上,在做无损压缩得时候,可以将失真项权重设置为0,这个很合理,但是并不适用于这个近无损框架下的情况,因此还是设置了失真项的权重。
三. 实验结果
对比几种无损压缩方案,本文提出的算法:
对比近无损算法:
对比高比特率下的方案:
不太清楚在近无损情况下的性能是否能和有损压缩进行同级别对比,在0.8bpsp的时候跟Minner低了接近2db.
可视化对比:
端到端的图像压缩《Learning Scalable constrained Near-lossless Image Compression via Joint Lossy Image cmp》相关推荐
- 机器学习中什么是端到端的训练方法(端到端学习)?(end2end learning)
相对于深度学习,传统机器学习的流程往往由多个独立的模块组成,比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词.词性标注.句法分析.语义分析等多个独 ...
- 端到端的图像压缩----《Joint Autoregressive and Hierarchical Priors for Learned Image Compression》 论文笔记
Joint Autoregressive and Hierarchical Priors for Learned Image Compression 一 简介 二 内容 2.1 创新内容 2.2 框架 ...
- 端到端的图像压缩----《Variational Image Compression With A Scale Hyperprior》论文笔记
Variational Image Compression With A Scale Hyperprior 一 简介 二 内容 2.2 数据流程 2.3 变分自编码器 2.4 思路介绍 三 核心代码 ...
- 机器学习中的端到端学习(End-to-End Learning)
传统机器学习需要将一个任务的输入和输出之间人为地切割成很多子模块,或者多个阶段,每个子模块(阶段)分开学习.比如一个自然语言处理任务(NLP),一般需要分词.词性标注.句法分析.语义分析.语义推理等步 ...
- 什么是端到端模型(end-to-end learning)?
非端到端 传统机器学习的流程往往由多个独立的模块组成,比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词.词性标注.句法分析.语义分析等多个独立步骤 ...
- 多目标跟踪数据关联的二部图解:CVPR18多目标跟踪开创性深度端到端二部图匹配佳作《Deep Learning of Graph Matching》读后有感
多目标跟踪算法的核心以及瓶颈之处,即是在得到两个set的DR(detection response,其中一个前序set可能是tracklets,但也由DR来表征)之后如何实现二部图匹配.传统的Hung ...
- 论文翻译:基于端到端的可训练神经网络基于图像的序列识别及其在场景文本识别中的应用
An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to S ...
- NLP 论文领读 | Seq2Seq一统江湖?谷歌提出全新端到端检索范式DSI,它才是检索模型的未来?
欢迎关注 NLP 论文领读专栏!快乐研究,当然从研读paper开始--澜舟科技团队注重欢乐的前沿技术探索,希望通过全新专栏和大家共同探索人工智能奥秘.交流NLP「黑科技」,踩在「巨人」肩上触碰星辰!官 ...
- GPU端到端目标检测YOLOV3全过程(下)
GPU端到端目标检测YOLOV3全过程(下) Ubuntu18.04系统下最新版GPU环境配置 · 安装显卡驱动 · 安装Cuda 10.0 · 安装cuDNN 1.安装显卡驱动 (1)这里采用的是P ...
最新文章
- 云服务器apache mysql php_服务器配置教程:阿里云服务器安装PHP环境(附PHP+MySQL+Apache后台小Demo)...
- pc构件生产线及设备_PC构件成组立模生产线
- 3 分钟搞定 Android Push
- 深入浅出,对于代理模式的理解(代理模式与外观模式的区别)
- 获知哪个函数调用了本函数及它的类名
- 分页缓冲池内存过高_揭秘:为什么新买的8G内存却显示4G可用,是系统出错还是被人坑了?...
- 【月径流预测】基于matlab未来搜索算法算法优化BP神经网络月径流预测【含Matlab源码 2001期】
- CocosCreator-IOS 开发篇
- 西门子/软件/博途/TIA PORTAL V14 SP1
- java 等值线,java 克里金插值+等值线划分示例
- i5 10400 + B460M 黑苹果 EFI Big Sur 11.6
- Openbravo中文使用手册
- 058 不定积分计算工具总结
- UVA 10559 Blocks 方块消除
- checkbox选中时如何改变默认样式
- 欧几里得算法(扩展欧几里得、欧拉定理、费马小定理)
- 【Flink】 is not serializable. The object probably contains or references non serializable fields
- swagger3 不能传header未解之谜
- Maven(保姆级全详)新手入门
- RMC公链2022开启 坚持 共进与突破
热门文章
- 调研分析-全球与中国FAKRA射频连接器市场现状及未来发展趋势
- 2021年全球青贮玉米种子收入大约6382.6百万美元,预计2028年达到8090.4百万美元
- 【从零基础学习C语言】一维数组与二维数组—第四篇
- 炖猫汤音频mp3下载,撸猫神器吸猫神器小程序
- 步步高 java_java的高精度计算(步步高)
- 视频直播app源码,动态发布功能模块代码
- JavaScript 基础:21点算法
- 5.4.1 jmeter组件—逻辑控制器-简单控制器、IF控制器、事务控制器、循环控制器、交替控制器
- 嵌套在计算机中应用,嵌入式系统在计算机中的应用.ppt
- Linux-修改主机名-设置本地域名解析