探索电子包浆技术:如何通过AI压缩图片并保持画质 - 神奇海螺实验室
Lenna原图(左)、带有“电子铜绿”的Lenna(右) 图片来源:电子铜绿图片cyber-old / 魔海螺实验室
如果我们反过来使用Vincent Image AI,我们就可以压缩图像。
每当在网络上看到有趣的表情包和表情包时,很多人都会在心里暗暗说:“你的图很好,但现在是我的了。”
但当人们将“盗来”的图片转发到其他帖子时,网络平台往往会再次对图片进行压缩,以节省存储空间和网络带宽。如果一张图片被“偷”太多次,它就会被多次压缩。每次压缩时,图像质量都会降低一点,变得更加“模糊”——甚至可能会变得更绿、更暗。多次“被盗”的图片会变绿,甚至成为表情包,甚至衍生出一系列劣质表情包。原因大概是:一张图片有趣的话,保存的人就越多,压缩的次数就越多,图片质量就会越差;相反,如果图像质量很差,则可能意味着它很受欢迎。
显然这张被盗的图片比色卡也被盗过多次。
它有点像一件流行的古董,多年来被无数人仔细把玩,最终在表面形成了闪亮的“铜绿”。低迷的画质和整体偏绿的色彩,成为了互联网时代的“电子涂层”和“网络涂层”。有些人甚至看到那些好的高品质图片,总觉得自己没有经过“时间的洗礼”,心里感叹:“干巴巴的,一点也不圆,拿去吧!”所以! ,电子铜绿模拟器诞生了。
图片来源:电子铜绿图片网络苦恼/魔海螺实验室的图片为什么会变绿?
图片变绿实际上是Android操作系统核心代码中的一个bug。 Android系统为开发者提供了图像压缩接口,可以让开发者轻松压缩JPEG图像(即jpg图像)。但为了加快压缩计算过程,该接口底层实现算法在颜色模式转换过程中存在bug。
我们在手机屏幕上看到的图片都存储了RGB信息(红、绿、蓝),它可以告诉屏幕上每个红、绿、蓝子像素应该发光的亮度,从而在屏幕上显示图片。外貌。然而,在图像处理过程中,一般需要将RGB信息转换为YUV信息(亮度、蓝色浓度偏移、红色浓度偏移)。由于人眼对Y代表的亮度信息比较敏感,因此算法可以重点压缩UV信息。这样就可以在不影响人眼感知的情况下,尽可能的减少图片占用的存储空间。
一般来说,从RGB颜色模式转换为YUV颜色模式会略有损失,但损失很小,不会让图片一路变绿。但开发者为了加快转换计算过程,不恰当地使用了位运算,导致RGB转换为YUV时数据向下取。因此,当重复压缩过程时,Y、U、V这三个值会不断减小。亮度Y值的降低会使画面继续变暗,UV的持续降低会使颜色继续向绿色方向偏移(见下图)。因此,经过多次压缩的图像会变绿变暗。
Y=0.5时的UV颜色平面,UV减小时图片会变成绿色。图片来源:维基百科
该问题于2016年4月中旬修复,根据Android系统的发布时间,直到2016年8月22日Android 7系统发布后,该问题才得到解决。(不过考虑到大部分手机厂商都存在延迟) Android系统后续会解决这个问题。)因此,图片变绿的问题只是几年前Android系统上使用JPEG图片时出现的。将被生成。
新的图像压缩算法
虽然有些人喜欢画面变绿变暗的“电子贴”,但认为这样的画面更有“味道”。但开发人员肯定仍然需要能够产生正确结果且不会变绿的图像压缩算法。除了修复Android图像压缩接口中的错误之外,还开发了许多高效的图像格式。例如,谷歌开发的WebP格式和苹果推广的HEIC格式都使用了相对先进的图像压缩算法。与传统的JPEG格式相比,这两种格式不仅具有更好的观看效果,而且占用的空间也更少。
最近,基于文本生成图像的人工智能变得流行。这些AI算法大多基于扩散模型,经过大量文本和图像的训练后,可以根据用户输入的文本生成图片。虽然图片的细节还不够完善,但能够日夜生成图片的AI仍然显示出巨大的潜力。甚至有人感叹,这种情况持续下去,油漆工可能会失业。
该图像由文鑫 ERNIE-ViLG 文鑫图模型生成。使用关键词“不会写稿子的编辑在办公室钓鱼、赛博朋克、油画”。图片来源:文鑫ERNIE-ViLG文胜图
我们无法预测这种AI未来能发展到什么程度,但是一位瑞士开发者Matthias Bühlmann却想出了一个“歪主意”——它能用于图像压缩吗?
人工智能压缩
Matthias Bühlmann 选择了免费开源的 Vincentian 图 AI:稳定扩散。它主要由三个模块组成:变分自动编码器(VAE)、U-Net和文本编码器。
压缩图像时不需要文本输入,因此Matthias Bühlmann放弃了文本编码器; VAE 可以将图像编码为潜在空间表示。在潜在空间表示下,图像分辨率变低(从512×512到64×64),但颜色精度提高(从8位到32位)。
VAE还可以将潜在空间表示的图像解码回原始图像。即使图像在潜在空间表示上再次被压缩,VAE 也可以将图像粗略地恢复到其原始外观。最终,Matthias Bühlmann 将未压缩的 768kB 图像压缩为 5kB。用肉眼看,即使将图像压缩到这个尺寸,JPEG和WebP的压缩损失也是显而易见的。
从左到右分别是WebP图片、JPG图片、AI压缩图片和原始图片。图片来源:Matthias BühlmannAI电子涂层
当然可以,但是这种压缩算法并不完美。这种图像压缩算法虽然可以欺骗人眼,但在PSNR和SSIM这两个客观评价图像质量的参数方面,相对于JPG和WebP并没有明显的优势。
毕竟,这种图像压缩算法仍然可以让AI根据压缩后的缩略图“猜测”原始图像是什么样子。修复后的图像不可避免地会在一些细节上与原始图像不一致,这反过来又创造了一种新的“电子涂层”。 Matthias Bühlmann 发现这种图像压缩算法在处理人脸和文本时可能会对人脸产生怪异(甚至有时有点“克苏鲁”)的效果,并且通过 VAE 重建的文本几乎难以辨认。也就是说,之前的压缩算法会在图片中产生绿色的“电子铜绿”,而新时代的AI压缩算法则会在人脸和文字中产生奇怪的“电子铜绿”。
从左到右分别是WebP图像、JPG图像和AI压缩图像。注意红圈内脸上的奇怪状态。照片来源:Matthias Bühlmann
AI的复杂性也使得这种图像压缩算法难以泛化。传统的图像压缩算法是一组固定的算法,可以用轻量级的程序来实现。人工智能以其巨大的计算量而闻名。这种AI图像压缩算法需要整整4GB的空间来存储参数文件,而且解码时间也比其他压缩算法更长。
因此,目前的图像压缩算法不值得推广。即使推广,也无法完美解决“电子铜锈”问题。相反,由于人工智能的特性,它会产生人类难以想象的新的、怪异的图像。 “电子铜绿”。
不过,现在最流行的电子镀膜并不是整体偏绿或偏暗的颜色,而是一层层难以去除的水印……
参考链接: