Paper:Guetzli: Perceptually Guided JPEG Encoder
Guetzli是一种新的JPEG编码器,旨在以比其他常见的JPEG编码器更低的比特率产生视觉上无法区分的图像。它使用闭环优化器优化JPEG全局量化表和每个JPEG块中的DCT系数值。Guetzli使用我们的感知距离度量Butteraugli [1]作为其优化过程中的反馈来源。根据Butteraugli,与我们尝试的其他压缩机相比,我们在给定的感知距离上减少了29-45%的数据大小。Guetzli的计算目前是非常缓慢的,这限制了其压缩静态内容的适用性,并作为一个概念证明,通过将高级心理视觉模型与有损压缩技术结合起来,我们可以大大减少大小。
平均网页大小的三分之二用于图像表示:JPEG,GIF和PNG; 几乎一半的图像请求是JPEG,其字节大小比PNG和GIF大得多[2]。由于许多客户端,特别是移动客户端受到传输带宽的限制,我们可以通过减小大小来加快网站加载速度 的JPEG图像。 通过调整质量参数,标准JPEG编码器可通过调整尺寸来缩小视觉质量。 在这项工作中,我们研究如何减小JPEG图像的大小,而不会影响图像的感知视觉质量。
我们在视觉上观察到用现有编码器编码的JPEG通常具有不均匀的质量; 他们经常只在图像的几个地方展示令人不安的文物。 通常,接近锋利边缘或线条的区域表现出更可见的伪影(例如,如图1所示)。 这导致我们认为进一步优化是可能的。 我们假设当编码器以有效的方式丢弃信息时,JPEG图像应该在恶化开始变得可见时开始大致均匀地降级。使用Guetzli,我们尝试导致视觉质量下降更均匀 并产生较小的JPEG图像
Guetzli是一种开源的JPEG编码器[3],其针对非常高的感知品质。它执行闭环优化,由我们的人类视觉模型的Butteraugli提供反馈[1]。它的目标是根据Butteraugli发现人眼不能与原始图像区分的最小的JPEG。 Butteraugli考虑到大多数JPEG编码器没有使用的三个视觉特性。首先,由于锥体的灵敏度谱的重叠,伽马校正不应该分别应用于每个RGB通道。例如,看到的黄光量和对蓝光的敏感度。因此,可以更精确地编码黄色附近的蓝色变化(图2)。 YUV色彩空间定义为伽马压缩RGB的线性变换,因此不足以对这种现象进行建模。第二,人眼在蓝色中的分辨率比红色和绿色都要低,在视网膜的高分辨率区域没有蓝色受体。因此,可以较不精确地编码蓝色的高频率变化。第三,图像中精细结构的可视性取决于附近的视觉活动量。因此,我们可以更精确地编码具有大量视觉噪声的区域(参见图3中的示例)。在Guetzli,我们以这样的方式模拟所有这些方面,导致图像的均匀损失。我们通过使用我们的心理视觉指标Butteraugli指导编码器来实现这一点。
在本文中,我们描述了我们使用的优化方法和我们拒绝的优化方法,我们应用这些方法的迭代框架与其他JPEG编码器相比,显示了结果,并在图像压缩中讨论了其重要的机会。
JPEG编码包括将图像转换为YUV色彩空间,将其分解为块,使用DCT将每个块变换为频域,量化所得到的系数并无损压缩(图4)。 Guetzli寻求减少压缩表示的大小的可能性,而不会降低视觉质量。 本节介绍用于实现该方法的方法。
Guetzli生成一个兼容的JPEG文件,所以可以执行的优化严格限制在此数据格式中可用的选项,甚至进一步限于实际实现支持的选项。我们使用格式提供的三个选项:我们调整全局 量化表,用零替换一些DCT系数,并决定使用其中色度通道被采样的模式(YUV420)。 我们决定不使用其他选择,因为我们发现它们不是有益的,或者因为它们造成其他不利影响。
我们利用的第一个优化机会是改变(全局)量化表以使量化更粗糙,这减小了图像的大小(通过减小存储系数的大小)。 这类似于调整传统JPEG编码器中的质量参数,并导致整个图像失真。
第二个机会涉及直接修改系数。我们用零替换每个块中的一些DCT系数值。 该修改会扭曲该块的视觉外观。 零是RLE编码的,所以编码一个零,发生在另一个零成本几乎没有任何东西。 因此,当有一个相邻的零时,用一个零替换一个系数,将编码的大小减小该系数的大小。即使没有相邻的零,零的编码实质上总是比非零值。
最后,我们考虑YUV420模式下的编码,其中三个通道中的两个通道被下采样2?2。 不幸的是,YUV420对图像区域的处理并不取决于所涉及的颜色,因此它不能捕获图2所示的效果(参见图5,Guetzli适用于该图像的失真,其中 仍然无法看到)。 在许多情况下,以YUV420模式编码图像,没有量化,已经导致可见的失真。 因此,YUV420在Guetzli目标的质量范围中很少有用。
我们也试图通过减少(而不是归零)某些系统的绝对值来节省空间。 我们希望通过这样做,我们可以以较低的成本降低图像质量的大小。然而,我们无法找到一种有益的方式将其与零排除相结合。
我们还试图修改系统以补偿由前述优化引起的失真。 为了找出补偿修正,我们计算了Butteraugli近似的导数。 不幸的是,这种修改通常小于量化间隔,因此它们不能被应用。
我们选择放弃一些选项,因为他们会有不良影响。我们选择不将图像重新取样到较低的分辨率。 使用较低的空间分辨率通常是一种实用的方法[4],但是我们将其从自动优化中排除,因为我们认为它与我们所做的优化有些正交,可以作为更高级的优化来实现。我们还决定 放弃生成渐进的JPEG(我们总是生成连续的JPEG)。 虽然渐进JPEG比较小2-5%,但解码速度却慢了17-200%[5]。
Guetzli使用迭代优化过程。 为了使问题更简单,优化器不受le大小的指导。 而是由感知品质目标驱动。 它的目的是创建一个感知距离低于给定阈值的JPEG编码,尽可能接近阈值。 每次迭代产生候选输出JPEG,最后选择最佳(不一定是最后一个)。 如前所述,我们可以对图像进行两个调整:全局变量(量化表)和本地变量(用零替换系数)。 我们使它们顺序(图6):在仅调整全局调整的情况下,我们首先生成一些提案。 同时我们决定全面调整这一整套。 然后,在使用全局调整的全过程时,我们会在调整本地调整时生成更多提议。
对全局量化表的变化会影响整个图像的失真,通常以不同的方式,并且在不同的区域中具有不同的大小。 全局量化表是192个值的数组。 执行任何近似于对该空间的详尽搜索是不可行的。 相反,我们选择了一组预定义的量化表,我们仅使用该集合中的表。
我们尝试在该集合中发现一个会产生不大于的心理距离的量化表? 当不需要其他失真时,<1倍所需的最大距离。 倍增因子? 被实验选择为0:97,因为该值产生最小可能的nal输出图像。 这种少量的松弛允许在图像中的任何地方进行本地优化。
JPEG格式非常有效地对零DCT系数进行编码,因为它具有联合熵RLE方法与DCT值预编码一起编码零。 同时,任何其他系统修改可实现的成本节约要小得多。 在实践中,我们拥有的零越多,得到的JPEG越小。 因此,Guetzli的大部分权力取决于选择正确的系统零。
在远距离区块中选择零排放基本上是独立的。 然而,附近街区的选择必须由两个不同的原因进行协调。 最明显的是,两个块中的共享边缘影响工件的选择在边缘。 在某些情况下,似乎在边缘的两侧引入失真会导致失真比其中一个块不变更小可见。 其次,许多小物体在同一个附近的视觉冲击是相加的。
为了考虑这些依赖关系,我们同时调整所有块中的调零选项。 类似于全局优化阶段,在每次这样的调整之后,我们产生候选输出图像。 然后,我们计算原始和候选图像之间的心理视觉距离,并使用它来决定下一个调整。 因此,使用块不可知距离度量的反馈回路提供了所需的在附近块之间的协调。
为了简化调整,我们首先确定每个块中系数的相对重要性。 这是使用一个Butteraugli派生的启发式。 我们根据我们的重要性估计,将每个块中的一些最不重要的系数归零。 在产生每个后续候选人之前,我们只是将系统的数量调整为零,使心理误差低于阈值,尽可能接近阈值。
归结是迄今为止Guetzli最强大的部分。 通过使用全局和局部优化(仅使用本地优化)获得的大小减少(对于量化表而言具有一些合理的默认值)只有10%左右。
我们评估Guetzli压缩机,并将其性能与由Butteraugli测量的相同心理失真进行比较。 Butteraugli是Guetzli优化的指标。 因此,本实验测试了Guetzli的优化能力,本身不测量结果的视觉质量。 我们将分别公布人类评估研究的结果,该研究比较人类认为的视觉质量。
我们的图像语料库([6])是通过使用佳能EOS 600d相机拍摄照片创建的,使用最高质量的JPEG设置存储它们,并将生成的图像下采样4? 4使用Lanczos重采样,在GIMP中实现。 一些图像在4之前应用了他们的清晰蒙版 4重采样。
我们比较了Guetzli与libjpeg和mozjpeg。 我们以质量95运行libjpeg和mozjpeg,无论是否使用色度下采样。另外,对于mozjpeg,我们尝试了三个参数调用参数(hvs-psnr,ssim和ms-ssim)。 我们用于生成结果的过程在算法1中有详细描述。用于实现该过程的脚本可以在https://goo.gl/jON2lC找到。
结果总结在表1中。当将Guetzli与相同的Butteraugli得分的另一个压缩算法进行比较时,可以节省大小节省29-45%的大小。
JPEG格式不支持空间自适应量化,整个图像的量化数组是恒定的。 然而,可以通过在具有预期的较粗略量化的区域中创建更多的零来模拟这一点。 使用这种不良替代品的适应性,我们可以从利用视觉掩蔽现象中获得部分好处(图4)。 我们也用它近似sRGB空间中的非均匀量化。 对空间自适应量化和不同颜色空间和/或基于价值的自适应量化的格式级支持将使这些优化更简单和更强大。.
可以注意到,图3中的效果未以JPEG格式捕获。从RGB到YUV的颜色空间转换是线性的,并且不能在某种颜色混合物中降低蓝色的精度。类似地,YUV444和YUV420之间的变化并不会使不同颜色环境中蓝色的表现精度有所差异(空间缩小在黑色和黄色背景下类似地发生。这部分解释了为什么YUV420人造物可以在具有颜色细节和深色背景的图像中轻松观察。
本文提出的结果不能提供直观的结果视觉质量的证据。 我们将分别公布旨在提供此类证据的人类评估研究结果。
我们的一些结果是苹果与橘子的比较,因为我们比较渐进式JPEG(mozjpeg)与顺序JPEG(Guetzli)。 这使Guetzli处于劣势,但是在基于Butteraugli的测量中,Guetzli仍然可以节省总体成本(-29:95%)。 传输时节省的时间是否值得在解码时间放缓,这是值得怀疑的。 我们没有尝试使用Guetzli进行编码,所以我们不能确定这样的图像会变小多少,但是很可能会从渐进式编码中获得更大的节省。
与zopfli [7]一样,对于gzip / deflate / PNG格式,我们类似的e?ort,Guetzli编码相当慢。 对流行图像重型网站上的静态图像内容进行明显的节省可能是一个可能的实际用例。尽管Guetzli可能对于许多实际应用来说可能太慢,但我们希望它能为未来的图像格式设计展示方向。
我们已经表明,尽管JPEG格式的缺点,我们仍然可以从复杂的心理视觉评分(如Butteraugli)中获益,而且我们选择的方法会在一个较小的(29-45%)文件大小中产生 给予心理误差分数。 相同的方法可以应用于缺少这些缺点的格式(例如,允许空间自适应量化,承认可以以更小的计算成本从图3中捕获效应的更丰富的量化描述),并且可能 压缩比大大增加。