一图胜千言。Web与过去冷冰冰的互联网最大的区别就在于多了丰富的图片。而web上面最流行的静态图片格式非JPEG莫属。JPEG文件的多寡往往会影响页面的加载速度。为此,Google开发了一种新的JPEG算法,可将文件大小减少35%,这无疑会提高网站的加载性能;此外新算法还可以在保持大小不变的情况下显著改善图片质量。更重要的是,Google的这种JPEG格式跟WebP、WebM等图像压缩办法不同,它可以完全与现有的浏览器、设备、图片编辑应用以及JPEG标准兼容。而且,Google还把它给开源出来了。
Google的这个新的JPEG编码器叫做Guetzli,由Google研究院苏黎世办公室领导开发。Guetzli在瑞士德语中是曲奇的意思,不过项目内容似乎跟曲奇并没有太大的关联,这也许是Google命名传统的延续,就像Android系统都是以糖果名称来命名那样。
一般而言,优化JPEG图片质量与大小有好几种手段,不过Guetzli聚焦的是量化阶段的压缩。简而言之,量化就是把大量难以压缩的无序数据缩减为易于压缩的有序数据的过程。在JPEG的编码中,这一过程往往是通过将渐变的颜色简化为色块而把小的细节完全抹除掉。
不过这个过程的困难之处在于,要在抹除细节与缩小文件大小之间找到平衡。每一种有损编码器(比如libjpeg、x264、lame)的做法都不一样。
而Guetzli的做法是利用一种新的精神性视觉模型(基于人类的视觉处理系统)来确定应该保留和丢弃哪些颜色和细节,它的名字叫做Butteraugli。Butteraugli的具体细节淹没在一堆高精度的常量之中,这些常量可以生成一个“近似于颜色感知和视觉”的模型,而且比其他的编码器更加透彻和详细。
至于Google研究院是如何发现这些常量的就不得而知了。不过似乎是计算机生成的,或者至少是经过计算机优化的。之前Google曾经推出过一款可以将有码变成无码的AI软件,它可以利用两种神经网络从已知的图片中寻找与待补充细节匹配的新像素,并将添加进去。也许给神经网络提供足够丰富的图像语料库的话,AI就能概括出这种精神性视觉模型?
编码器对比:左为原图,中为libjpeg的处理,右为Guetzli。
虽然Guetzli的主要用途是减少文件大小,但Google研究院认为该编码器也可以在保持大小不变的同时用来提高JPEG可感知的画质。在于另一款流行的开源编码器libjpeg进行对比时,Google称“75%的打分更偏好Guetzli。这意味着Butteraugli的精神性视觉图像类似性指标在高画质方面接近于人类感知。”
不管是减少大小还是提高质量,Guetzli的开源对于JPEG这款高度流行的图片格式的作用都是深远的。不过,Google要实现这些效果也不是说没有任何代价,跟libjpeg相比,其编码需要的时间还是要多一些。