“电子包浆”:我的表情包怎么绿了?

2022年10月21日 344点热度 0人点赞 0条评论

图片

lenna原图(左),加上“电子包浆”的lenna(右)图片来源:电子包浆 图片赛博做旧/神奇海螺实验室


把文生图AI反过来用,不就能压缩图片了吗。


撰文 | 王昱

审校 | 栗子


每当在网上看到有趣的表情包、梗图时,不少人都会在心中暗暗念叨一句:“你的图很好,不过现在它是我的了。”


但当人们把“盗”下来的图再次传到其他帖子中时,网络平台往往会再次压缩图片,节省储存空间和网络带宽。如果一个图被“盗”的次数太多,就会被重复压缩多次。每次压缩,图片画质就会下降一点,变得更“糊”一点——甚至还会变绿、变暗一点。被“盗”过很多遍的图会变绿甚至已经变成了一个梗,甚至催生了一系列渣画质的表情包。原因大概是:如果一个图很有趣,就会被更多人保存,就会被压缩更多次,画质也就越差;反过来,如果一个图片画质很差,那大概也就说明它很受欢迎。


很明显这张盗图比色卡也被盗了很多次

这有点像一件受欢迎的古玩,在长久岁月中被无数人细细把玩,最终在表面形成了一层有光泽的“包浆”。渣画质、整体偏绿的颜色已经成为了网络时代的“电子包浆”、“赛博包浆”。甚至还有人看到那些高画质的好图,总觉得它没有经过“岁月的洗礼”,心中感慨:“干干巴巴的,麻麻赖赖的,一点儿都不圆润。盘它!”于是,电子包浆模拟器诞生了。

图片来源:电子包浆 图片赛博做旧/神奇海螺实验室


图片为何变绿

图片变绿其实是安卓操作系统核心代码的一个bug。安卓系统给开发者提供了一个图像压缩接口,可以让开发者方便地压缩JPEG图片(也就是jpg图片)。但这个接口的底层实现算法为了加速压缩计算过程,在色彩模式转换的过程中出了一个bug。

我们在手机屏幕上看到的图片都存储着RGB信息(Red红、Green绿、Blue蓝),它能告诉屏幕上每个红绿蓝子像素应该以何等亮度发光,从而在屏幕上显示出图片的样貌。但在图像处理过程中,一般需要RGB信息转换成YUV信息(亮度、蓝色浓度偏移量、红色浓度偏移量)。因为人眼对Y代表的亮度信息更为敏感,算法可以着重压缩UV信息。这样就能在人眼感知差别不大的情况下,尽可能减小图片所占的存储空间。

一般而言,从RGB色彩模式转换到YUV色彩模式是轻微有损的,但损失较小,并不至于让图片朝着变绿的方向一路狂奔。但是开发者为了加速这个转换计算过程,不当地使用了位运算,导致数据在从RGB向YUV转换时会向下取。所以在重复压缩过程时, Y、U、V三个值就会不断减小,亮度Y值减小会让图片不断变暗,而UV不断减小,会让色彩不断向绿色的方向偏移(见下图)。所以,经过多次压缩的图片会变绿、变暗。

Y=0.5时的UV色彩平面,UV减小时图片会变绿。图片来源:wikipedia


这个问题在2016年4月中旬就被修复了,按照安卓系统的发行时间来看,从2016年8月22日安卓7系统发布,这个问题才算解除。(不过考虑到手机厂商对安卓系统的跟进大多存在延迟,这个问题解决的时间就更晚了。)所以说,图片变绿的问题,只有在几年前的安卓系统上使用JPEG图片时才会产生。

新的图片压缩算法

虽然有人喜欢图片变绿变暗的“电子包浆”,觉得这样的图片更有“味道”。但开发者肯定还需要结果正确、不会变绿的图片压缩算法。除了修复安卓图片压缩接口的bug外,又有不少高效的图片格式被开发了出来。比如谷歌开发的WebP格式,苹果推广的HEIC格式,都采用了比较先进的图片压缩算法。和传统的JPEG格式相比,这两种格式在观看效果更好的同时,占用的空间还更小。


而最近,根据文字生成图像的AI火了起来。这些AI算法大多基于扩散模型,可以在经过大量文字、图像的训练后,从用户输入的文字生成一张图片。虽然图片的细节还不算完美,但可以日夜无休生成图片的AI还是让人看到了巨大的潜力。甚至有人感叹,这样发展下去,画师恐怕要失业了。

该图片由文心ERNIE-ViLG文生图模型生成。使用关键词为“写不出来稿子的编辑正在办公室里摸鱼,赛博朋克, 油画”。图片来源:文心ERNIE-ViLG文生图

这种AI将来能发展到什么程度我们先按下不表,倒是有一名瑞士开发者Matthias Bühlmann动起了“歪脑筋”——它能否用于图片压缩呢

人工智能压缩

Matthias Bühlmann选择了免费开源的文生图AI:Stable Diffusion。它主要由三个模块构成:变分自编码器(Variational Auto Encoder,VAE)、U-Net文字编码器

压缩图片时不需要文字输入,所以Matthias Bühlmann舍弃了文字编码器;而VAE则可以将图片编码到潜在空间表征(latent space representation)。在潜在空间表征下,图片分辨率变低了(从512×512到64×64),但是色彩精度却提高了(从8位提升到32位)。

VAE还能将潜在空间表征的图片再解码回图片原来的样子。就算在潜在空间表征上再次对图片进行压缩,VAE也能将图片大致还原成本来的样子。最终,Matthias Bühlmann将一张未经压缩的768kB的图片压缩到了5kB。肉眼看过去,同样是把图片压缩到这个大小,JPEG和WebP的压缩损失就很明显了。

从左到右分别为WebP图片、JPG图片、AI压缩图片和原图。图片来源:Matthias Bühlmann


AI电子包浆

当然,但这种压缩算法并不是完美的。虽然这种图片压缩算法能骗过人眼,但在客观评价图片质量的两个参数PSNR和SSIM上,它相对JPG和WebP并没有明显的优势。

说到底,这种图像压缩算法还是让AI根据一个压缩过的缩略图去“猜”它的原图长什么样子,还原出的图片在一些细节上难免和原图不一致,这反而造就了一种新的“电子包浆”。Matthias Bühlmann就发现,这种图像压缩算法在处理人脸、文字时,可能在人脸上生成诡异(甚至有时还有点“克苏鲁”)的效果,VAE重建的文字也几乎难以辨认。也就是说,和以前的压缩算法会让图片产生绿色的“电子包浆”,而新时代AI压缩算法会让人脸和文字产生诡异的“电子包浆”。

从左到右分别为WebP图片、JPG图片和AI压缩图片,注意红圈中人脸上的诡异状态。图片来源:Matthias Bühlmann


AI的复杂性也让这种图像压缩算法难以推广。传统图像压缩算法是一套固定的算法,可以用轻量化的程序实现。而AI则以计算量庞大著称,这种AI图像压缩算法需要足足4GB的空间存储参数文件,并且解码时间也比其他压缩算法更长。


所以说,目前这种图像压缩算法并不值得推广,就算推广了,它也并不能完美解决“电子包浆”的问题,反而却会因为AI的特性,产生人类难以想象的、全新的、诡异的“电子包浆”。


不过,现在最流行的电子包浆并不是整体偏绿偏暗的颜色,而是层层叠叠难以去除的水印……

参考链接:
https://pub.towardsai.net/stable-diffusion-based-image-compresssion-6f1f0a399202
https://arstechnica.com/information-technology/2022/09/better-than-jpeg-researcher-discovers-that-stable-diffusion-can-compress-images/
https://magiconch.com/patina/
https://www.zhihu.com/question/29355920/answer/119088684
https://github.com/google/skia/commit/c7d01d3e1d3621907c27b283fb7f8b6e177c629d
https://en.wikipedia.org/wiki/YUV
https://developers.google.com/speed/webp

《环球科学》10月新刊正在热卖

各电商平台均有销售


点击【在看】,及时接收我们的内容更新 

88420“电子包浆”:我的表情包怎么绿了?

root

这个人很懒,什么都没留下

文章评论