文章的创新点是在量化中加入了Importance Map,让模型自适应地选择重要的区域,整体结构为:
在编码器的输出端有两个分支。一个分支类似传统的自编码器,用于输出特征,并量化和解码。另一个分支作用是产生一个Importance Map,进而产生一个mask,对特征进行更好地量化。
1、二值化量化
对于编码器输出的特征,首先进行二值化,对每个值都量化为0或1,得到一个形状为HxWxC的特征图。为了保证反向传播中的可导,在反向传播使用线性模型代替二值化,公式可以查阅论文或者博客。
2、Importance Map
对于形状为HxWxC二值特征矩阵,实际上可以理解为特征图有HxW个点,每个点用C位二进制表示。实际上,更合理的方式是,根据每个点重要程度的不同,使用不同位的二进制数来表示。Importance Map可以理解为是实现这个功能,对于重要的点保留更多的位,不重要的点使用更少的位。
对Importance Map进行可视化,可以发现在边缘区域需要保留更多的位,这与经验一致。
Importance Map转为mask以及与二值特征相乘的公式可以在论文中查阅,此处不再贴出。
3、Loss函数设计
这里的Loss使用了传统的率失真目标,分为失真loss和码率loss。
失真loss衡量解码图像与真实图像差异,此处直接使用L2距离。
码率loss衡量编码图像需要的比特数。此处由于Importance Map直接影响了熵编码前的比特数,所以使用Importance Map值之和来衡量码率,同时设计阈值r控制码率。