0%

论文笔记:Lossless Image Compression through Super-Resolution

论文笔记:Lossless Image Compression through Super-Resolution

前置知识

熵编码

一个符号 x 索要编码长度大约是

其中 P(x) 为 符号 x 出现的概率。直觉上来看,其实就是出现频率越高的字符,用更少的bit数表示,可以使得平均码长更短。

想想数据结构学的哈夫曼树

香农信源编码定理

一个随机信源产生的数据,如果进行无损编码,那么平均码长不能低于

比特。注意并不是说任何一条数据都一定能压到H(X),而是说长期平均意义下的。

算术编码

哈夫曼编码是对单个符号进行编码,当得到理论下界是小数时,实际需要向上取整。而算术编码可以将很多符号联合起来编码,从而平均下来平均码长尽可能达到理论下界。

具体来说,假设P(B)=0.6,P(A) = 0.4。那么B:[0, 0.6),A:[0.6, 1)。如果编码BA,那么第一段编码 B,新的区间宽度W=0.6,得到B:[0, 0.36),A:[0.36, 0.6),所以BA -> [0.36, 0.6)。如果编码BAB,那么算出BA后,新的区间长度为0.24,接下来同样的做法,略

方法

  • 学习自然图像分布$P_\theta(x)$,最小化交叉熵等价于最小化实际熵编码长度。
  • 传统PixelCNN由于强自回归依赖,导致解码非常慢。为了将方法介于完全独立预测和逐像素自回归之间,作者将图像分成“粗信息 + 细节”。给定低分辨率版本,让模型预测高分辨率版本,训练$H(X{HR} |X{LR} <H(X_{HR})$。形式上是超分辨率模型
  • 传统超分模型预测的结果是确定的。但是对于一个低分辨率图,可能存在无数个高分辨率图能下采样成它,所以SReC需要预测整个概率分布。但从低分辨率还原的超分图必须是确定的,所以对于这个一对多问题,需要额外加入bitstream,在encode时使用算术编码加入,decode中根据这个bitstream就能够知道选哪一个超分图。
  • 构建下采样图像金字塔。每次长宽除以二,相当于做2*2,步长为2的平均池化。那么下采样后的一个像素对应其原图的一个2*2的block。同时不难发现,我们只需要预测超分图对应block的前三个像素即可,并且四个像素的取值都是有范围的,预测出一个像素之后,剩下的两个范围会进一步缩小
  • 对于每个block内,为了保持内部的像素相关性,block内也同样有自回归,对应下图中的三个CNN

image-20260828210239040

整个流程为:

  1. 对原图$x^{(0)}$进行三次下采样得到对应的低分辨率图$x^{(1)}$,$x^{(2)}$,$x^{(3)}$,以及做平均池化得到的精确平均值矩阵(有小数部分)$y^{(1)}$,$y^{(2)}$,$y^{(3)}$,x-y得到round操作丢弃的小数部分 $r$。即$y^{(1)} = x^{(1)} + r^{(1)}$,且 r 只有四种取值
  2. 从最低分辨率$x^{(3)}$往回编码。先让$x^{(3)}$加上$r^{(3)}$后,得到$y^{(3)}$,预测$P_\theta (x^{(2)}|y^{(3)})$。更具体来说,对于每个block内,先用 y 预测得到a,接着按自回归过程依据a和y预测得到b…得到a,b和c后直接计算得到d。
  3. 重复第二步,知道编码得到原图