最近,StableDiffusion成为一个新兴的研究方向。一位名叫MatthiasBühlmann的博主尝试通过实验探索该模型的强大功能,发现StableDiffusion是一种非常强大的有损图像压缩编解码器。他写了一篇博客描述实验分析过程,以下是博客原文。首先,MatthiasBühlmann给出了StableDiffusion方法、JPG、WebP在高压缩因子条件下的压缩结果,所有结果都是512x512像素分辨率:旧金山风景,从左到右:JPG(6.16kB)、WebP(6.80kB)),稳定扩散:(4.96kB)。糖果店,从左到右:JPG(5.68kB)、WebP(5.71kB)、StableDiffusion(4.98kB)。动物照片,从左到右:JPG(5.66kB)、WebP(6.74kB)、StableDiffusion(4.97kB)。这些示例清楚地表明,与JPG和WebP相比,使用StableDiffusion压缩图像可以以更小的文件大小保持更好的图像质量。探索性实验MatthiasBühlmann分析了工作原理,StableDiffusion使用三个串行训练的人工神经网络:变分自动编码器(VariationalAutoEncoder,VAE)U-Net文本编码器(TextEncoder)VAE将图像空间中的图像编码和解码成一些一种潜在的空间表征。源图像(512x512、3x8或4x8位)的潜在空间表示将具有较低的分辨率(64x64)和更高的精度(4x32位)。VAE在训练过程中自己学习。随着模型逐渐训练,不同版本模型的潜在空间表示可能看起来不同。例如,StableDiffusionv1.4的latentspacerepresentation如下(重新映射到4-channelcolorimage):当重新缩放和解释latentfeatures为颜色值时(使用alpha通道),主要特征图像仍然可见,并且VAE还将更高分辨率的特征编码为像素值。例如,通过使用VAE对往返进行编码/解码得到以下结果:值得注意的是,这个往返不是无损的。比如图中蓝色波段上的白色字,解码后可读性稍差。StableDiffusionv1.4模型的VAE通常不太擅长表示小文本和人脸。我们知道,StableDiffusion的主要目的是从文本描述中生成图像,这需要模型对图像的潜在空间表示进行操作。该模型使用经过训练的U-Net对潜在空间图像进行迭代去噪,输出它在噪声中“看到”(预测)的内容,类似于我们有时将云视为形状或面孔的方式。在迭代去噪步骤中,第三个ML模型(文本编码器)指示U-Net尝试查看不同的信息。MatthiasBühlmann分析了VAE生成的潜在表征是如何被有效压缩的。他发现对VAE中的潜在表示进行采样或将现有的有损图像压缩方法应用于潜在表示会大大降低重建图像的质量,而VAE解码过程似乎对潜在表示的质量具有鲁棒性。MatthiasBühlmann将潜在表示从浮点数量化为8位无符号整数,发现只有非常小的重构误差。如下图所示,左:32位浮点潜在表示;中间:基本事实;右:8位整数潜在表示。他还发现,使用调色板和抖动算法进行进一步量化会产生出奇的好结果。然而,当使用VAE直接解码时,调色板表示会导致一些可见的伪影:左:32位潜在表示;中间:8位量化潜在表示;右图:使用Floyd-Steinberg抖动表征的调色板8位潜在表征使用Floyd-Steinberg抖动的调色板表示引入了使解码结果失真的噪声。所以MatthiasBühlmann使用U-Net去除抖动引起的噪声。4次迭代后,重建结果在视觉上非常接近未量化版本:重建结果(左:使用Floyd-Steinberg抖动的调色板表示;中:四次迭代后去噪;右:GroundTruth)。虽然结果非常好,但引入了一些瑕疵,例如上面中心符号上的光泽阴影。虽然从主观上看,StableDiffusion对图片的压缩比JPG和WebP要好很多,但是在PSNR、SSIM等指标上,StableDiffusion并没有明显的优势。如下图所示,虽然StableDiffusion作为编解码器在保留图像粒度方面比其他方法要好得多,但它受到压缩伪影的影响,图像中物体的形状等特征可能会发生变化。左:JPG压缩;中间:地面真相;右图:稳定的扩散压缩。值得注意的是,目前的StableDiffusionv1.4模型在压缩过程中并不能很好地保留小字体的文本信息和人脸特征,但StableDiffusionv1.5模型在人脸生成方面有所改进。左:真实情况;中间:VAE往返之后(32位潜在特征);右:从调色板去噪的8位潜在特征解码的结果。MatthiasBühlmann的实验分析在博文发布后引发了讨论。MatthiasBühlmann自己认为StableDiffusion的图像压缩效果比预期的要好,而且U-Net似乎能够有效消除抖动引入的噪声。但是,StableDiffusion模型的未来版本可能没有此图像压缩功能。不过也有网友质疑:“VAE本身就是用来做图像压缩的。”比如基于Transformer的图像压缩方法TIC就采用了VAE架构,所以MatthiasBühlmann的实验就显得有些大材小用了。你觉得这怎么样?
