background-eyecatch
eyecatch
公開日:2022/07/29更新日:2022/09/14

Latent Diffusion Modelsを用いてテキストから画像を生成するレシピ

5.0(1)
0

メニュー

概要

本レシピでは、Latent Diffusion Modelsの技術概要を解説し、Huggingfaceのdiffusersライブラリを用いて、テキストから画像を生成する方法や、モデルが画像を生成する過程をアニメーションで可視化する方法をご紹介します。

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

Diffusion Modelsは、Denoising Diffusion Probabilistic Modelsをベースとした以下の2つのプロセスによって構成されるモデルです。

  • Forward diffusion process(下記、q(xtxt1)q(x_t|x_{t-1}))
    • 画像X0X_0に段階的にガウスノイズを加えていき画像を完全なノイズ画像XTX_Tにする過程
  • Reverse diffusion process(下記、pθ(xtxt1)p_θ(x_t|x_{t-1}))
    • ノイズ画像XTX_Tから段階的にガウスノイズを除去していきX0X_0相当の画像を生成する過程


出典: Denoising Diffusion Probabilistic Models

モデルの入力はノイズ画像XtX_tで、モデルはガウスノイズの平均と分散を予測します。

学習時、モデルはForward diffusion processで付与したガウスノイズと、予測したガウスノイズの平均と分散の差分を最小化するように学習します。

予測したガウスノイズを除去し、次のステップでさらに予測・除去といった処理を繰り返すことで最終的にX0X_0相当の画像を生成します。

このようにDiffusion Modelsはノイズを除去していくプロセスを学習していくことでXTX_Tの状態から画像X0X_0を生成するようにトレーニングされます。

Latent Diffusion Models

このDiffusion ModelsをベースにLatent Diffusion Models(以下、LDM)は以下のように構成されます。


出典:High-Resolution Image Synthesis with Latent Diffusion Models

εεはエンコーダー、DDはデコーダーを示しています。
また、τθτ_θは、Text to Imageタスクにおける入力テキスト(プロンプト)などをエンコードするドメイン固有のエンコーダーです。

Diffusion Modelsとの違いは、Variational AutoEncoder(以下、VAE)を適用し、
latent representation(潜在表現)を用いてDiffusion Processを実現している点です。

VAEとは、教師なし学習の一つで、画像を表現する特徴を確立分布上で構築するニューラルネットワークです。
画像を、潜在表現に変換するエンコーダーと、潜在表現から元画像を復元するデコーダーで構成されます。


出典: Variational autoencoder

このVAEの適用によって、画像は、高次元なxxから低次元な潜在表現zzにエンコードされ、Diffusion Process全体での計算量の削減をもたらします。

さらに、プロンプトなどの条件に応じた、条件付き画像生成の精度を高めるためU-Netベースのクロスアテンションを導入し、高解像度の画像生成を可能にしています。

これらの既存手法を組み合わせ実現されたLDMは、画像修復、クラス条件付き画像合成などのタスクで最先端(state-of-the-art)のパフォーマンスを実現しています。

それでは、実際にLDMを用いてテキストから画像を生成していきます。

学べること

  • Latent Diffusion Modelsを用いたText to Imageタスク
  • 自然言語表現から画像を生成する仕組み

始める前のスキルセット

このレシピは次のような人を対象としています。

  • Pythonの基本的な知識を有する人
  • 機械学習の基本的な知識を有する人
  • 「Text to Imageタスク」に興味を持っている人

実務活用例

  • 製品、建造物などデザインアートへの利用
  • 自然言語表現で指定した画像を生成し広告への活用

キッチン

開発環境

  • Google Colaboratery
  • 下記の手順に従いGPUモードを利用してください
    • 「ランタイム」→「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更

ツール

  • Python3
  • Numpy, Pytorch等のライブラリ
  • Huggingfaceのdiffusers

データセット

  • 使用するデータセットはありません。

調理

テスト

ノイズ画像から段階的にガウスノイズを除去していく過程を何と言いますか?

今回、Huggingfaceの何というライブラリを使用しましたか?

今回、テキストから画像を生成した際に入力したテキストはどれですか?

おすすめレシピ