画像生成AI「Stable Diffusion」が実はかなり優秀な画像圧縮を実現できることが判明
![](https://image.news.livedoor.com/newsimage/stf/c/3/c31a0_88_b08a9ed59a21d5d7a6ed55bf17168c7c.jpg)
2022年8月に一般公開されたStable Diffusionは、入力した言葉に従って画像を自動で生成してくれるAIです。そんなStable Diffusionを画像生成AIだけではなく強力な非可逆画像圧縮コーデックとして使う方法について、ソフトウェアエンジニアのマシュー・ビュールマン氏が解説しています。
Stable Diffusion based Image Compression | by Matthias Bühlmann | Sep, 2022 | Medium
実際に以下の画像はすべて512×512ピクセルに圧縮した画像で、サンフランシスコ市街を撮影したもの。1枚目がJPEG形式、2枚目がWebP形式、3枚目がStable Diffusionによる圧縮です。
![](https://image.news.livedoor.com/newsimage/stf/3/d/3ddb0_88_de9fac9e3642ed1ba69562c973358195.jpg)
![](https://image.news.livedoor.com/newsimage/stf/7/a/7a4de_88_131470ff2d12dba2f5d292eba456b102.jpg)
![](https://image.news.livedoor.com/newsimage/stf/2/b/2bf29_88_4e3c6b981e128c78c94fd8f1e58d8c76.jpg)
お菓子屋のショーケース。1枚目がJPEG形式、2枚目がWebP形式、3枚目がStable Diffusionによる圧縮です。
![](https://image.news.livedoor.com/newsimage/stf/2/c/2c538_88_b8960ae6fbe45646ae82d3d1d0d26c77.jpg)
![](https://image.news.livedoor.com/newsimage/stf/e/4/e4ef9_88_4b0e6a418bb5a0050f8e90b63a889f07.jpg)
![](https://image.news.livedoor.com/newsimage/stf/b/9/b9647_88_a759b9b327c3bf4bda9a031fa7e2cf62.jpg)
アルパカの顔。1枚目がJPEG形式、2枚目がWebP形式、3枚目がStable Diffusionによる圧縮です。
![](https://image.news.livedoor.com/newsimage/stf/3/2/32851_88_24545b4ca246f9f3c37b2a28685f6561.jpg)
![](https://image.news.livedoor.com/newsimage/stf/f/c/fc177_88_6b4155f694afa2ffaee445066aa3eda2.jpg)
![](https://image.news.livedoor.com/newsimage/stf/4/5/45b75_88_16420528747d89dacdb974547affb574.jpg)
いずれのケースでも、Stable Diffusionを使った圧縮がもっともノイズが少なく、なおかつ圧縮後のファイルサイズが最も小さくなっていることがわかります。
Stable Diffusionで画像を生成する上で、画像を画像空間から何らかの潜在空間にエンコードおよびデコードするのがVariational Auto Encoder(VAE)です。潜在空間表現とは任意のソース画像(3×8または4×8ビットで512×512ピクセル)を低解像度(64×64ピクセル)・高精度(4x32ビット)で表現したものです。
例えば以下の512×512ピクセル・24bppの画像を……
![](https://image.news.livedoor.com/newsimage/stf/4/0/40cbd_88_e1617b977a1493b7093219ba08646ffd.jpg)
VAEで64×64ピクセル・128bppの画像にエンコードするとこんな感じ。
![](https://image.news.livedoor.com/newsimage/stf/5/8/58efe_88_94bd6f9b0ec2253fec779f4b4e6e4a01.jpg)
そしてエンコードした画像を512×512ピクセル・24bppの画像にデコードしたものが以下。一見すると元に戻っただけのように見えますが、実はアルパカの首輪に書かれている文字がやや読みにくくなっているなど、わずかに損失は発生しています。
![](https://image.news.livedoor.com/newsimage/stf/1/d/1dc67_88_850e90b2a3516fea700249eb19e58d6f.jpg)
ビュールマン氏は、Stable Diffusionを画像圧縮コーデックとして利用するために、VAEで生成された潜在画像表現をどこまで効率よく圧縮できるかを検討しました。潜在画像をダウンサンプリングしたり、既存の非可逆画像圧縮方式を適用したりすると、再構成された画像が大きく劣化してしまったとのこと。一方で、VAEのデコードは、潜在画像の量子化に対して非常に強いことがわかったそうです。
VAEで潜在画像を8bitに量子化することで、画像表現のデータサイズは64×64×4×8bit=13万1072bit=約16.4kBとなります。さらにフロイド-スタインバーグ・ディザリングを使って256個のパレット化した表現を使うことで、データサイズは64×64×8ビット+256×4×8ビット=4万960bit=約5.12kBとなります。
潜在パレットにはフロイド-スタインバーグ・ディザリングによってノイズが発生するため、デコード結果には歪みが発生してしまいます。しかし、Stable Diffusionは潜在画像からノイズを除去する仕組みなので、数回の反復を行うことでデコード結果は元画像に近いものになります。
ただし、Stable Diffusionは画質よりも画像コンテンツそのものに影響を与えるという性質があります。Stable Diffusionのバージョン1.4で潜在空間に小さな文字や顔を保持できないため、一見画質がキレイであるように見えても、実際はまったく別の画像になってしまっていることもあるとのこと。ビュールマン氏は、バージョン1.5でこの問題が解決されれば、Stable Diffusionの画像圧縮アルゴリズムとしての有用性がさらに高まるだろうと述べています。