本レシピでは、Stable Diffusionの技術概要を解説し、テキストから画像を生成するText to Image、画像とテキストから新たな画像を生成するImage to Image、画像の指定範囲をテキストで指示した画像で修復するInpaintingを行う方法をご紹介します。
Stable Diffusionとは、2022年8月にStability.AIによって無償公開された画像生成モデルです。
Google ResearchのImagenやOpenAIのDALL2-Eなど、近年最先端のパフォーマンス発揮する画像生成モデルは、モデルを公開することによる社会的影響の大きさから公開を控えていました。
一方で、Stable Diffusionはモデルが社会的バイアスを含んだコンテンツや、安全でないコンテンツを生成する可能性があるとしつつも、商用、非商用利用可能なCreative ML OpenRAIL-Mライセンスの元、公開に踏み切っています。
Stable DiffusionはLatent Diffusion Modelsと呼ばれる手法をを用いて、5850億もの画像とテキストのペアを持つLAION-5Bデータセットをトレーニングしたモデルで、その表現力の高さから大きな話題となっています。
それではStable Diffusionを使用する前に、ベースの技術となるLatent Diffusion Modelsを見ていきます。
Latent Diffusion Modelsとは、2021年12月に論文発表されたDiffusion Models(拡散モデル)ベースの画像合成モデルです。
Diffusion Modelsはテキストから画像を生成するText to Imageタスクなどで競争力のある精度を発揮しますが、計算量が多くモデルのトレーニングには多くの時間・GPUを要することが知られています。
Latent Diffusion Modelsでは、精度を損なうことなく、計算量を削減することを目的にDiffusion Modelsを改善したモデルとなっています。
まずは、ベースとなるDiffusion Modelsを見ていきます。
Diffusion Modelsは、Denoising Diffusion Probabilistic Modelsをベースとした以下の2つのプロセスによって構成されるモデルです。
出典: Denoising Diffusion Probabilistic Models
モデルの入力はノイズ画像で、モデルはガウスノイズの平均と分散を予測します。
学習時、モデルはForward diffusion processで付与したガウスノイズと、予測したガウスノイズの平均と分散の差分を最小化するように学習します。
予測したガウスノイズを除去し、次のステップでさらに予測・除去といった処理を繰り返すことで最終的に相当の画像を生成します。
このようにDiffusion Modelsはノイズを除去していくプロセスを学習していくことでの状態から画像を生成するようにトレーニングされます。
このDiffusion ModelsをベースにLatent Diffusion Models(以下、LDM)は以下のように構成されます。
出典:High-Resolution Image Synthesis with Latent Diffusion Models
はエンコーダー、はデコーダーを示しています。
また、は、Text to Imageタスクにおける入力テキスト(プロンプト)などをエンコードするドメイン固有のエンコーダーです。
Diffusion Modelsとの違いは、Variational AutoEncoder(以下、VAE)を適用し、
latent representation(潜在表現)を用いてDiffusion Processを実現している点です。
VAEとは、教師なし学習の一つで、画像を表現する特徴を確立分布上で構築するニューラルネットワークです。
画像を、潜在表現に変換するエンコーダーと、潜在表現から元画像を復元するデコーダーで構成されます。
このVAEの適用によって、画像は、高次元なから低次元な潜在表現にエンコードされ、Diffusion Process全体での計算量の削減をもたらします。
さらに、プロンプトなどの条件に応じた、条件付き画像生成の精度を高めるためU-Netベースのクロスアテンションを導入し、高解像度の画像生成を可能にしています。
これらの既存手法を組み合わせ実現されたLDMは、画像修復、クラス条件付き画像合成などのタスクで最先端(state-of-the-art)のパフォーマンスを実現しています。
それでは、実際にLDMをベースとして生成されたモデルStable Diffusionを用いて画像生成などを行っていきます。