background-eyecatch
eyecatch
公開日:2022/07/22更新日:2022/08/12

GLIDEで様々な条件を指定したテキストから画像を生成するレシピ

---(0)
0

メニュー

概要

本レシピでは、GLIDEの技術概要を解説し、論文発表元が公開するミニモデルGLIDE(filterd)を用いて、テキストから画像を生成する方法や、テキストに応じた画像修復方法をご紹介します。

GLIDEとは

GLIDE(Guided Language to Image Diffusion for Generation and Editing)とは、OpenAIが2021年12月に論文発表したText-Guided Diffusion Modelsです。

Text-Guided Diffusion Modelsとは、端的には入力されたテキストから画像を生成するDiffusion Models(拡散モデル)を意味しています。

まずはGLIDEが生成した画像を見てみましょう。下記は、Text to Imageの出力結果を示しています。


出典: GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models

上記を見ると、"a corgi wearing a red bowtie and a purple party hat"のように複数の修飾語に応じて忠実な画像が生成できています。

また、"a professional photo ~"、"a high-quality oil painting of ~"のように条件付けをすることで、写真のように忠実な画像や、絵画のような画像も生成可能なことが見て取れます。

このような画像を生成可能なGLIDEは、被験者によるDALL-Eとの比較評価において、画像の写実度では87%、入力テキストに対する忠実度では69%の割合でGLIDEの方が優れていると評価されています。

それでは、GLIDEの技術概要を見ていきましょう。

まず、中心技術である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を生成するようにトレーニングされます。

Guided Deffusion

上記Diffusion Modelsをベースに、多様性と忠実度を調整できるよう改良を施したモデルがGuided Deffusionです。

GLIDEでは、Diffusion Modelsがテキストから画像を生成するため以下2つの方法を用いています。

  • 分類器を用いたClassifier guidance
  • 分類器を必要としないClassifier-free guidance

Classifier guidanceでは、ラベルと画像を学習したDiffusion Modelsのサンプリング時に、別途用意した分類器を用いてラベル通りに画像を生成するようにガイドします。

ガイド時には、分類器が期待するラベルに画像を分類するように損失勾配でガウスノイズの平均に重みづけを行います。

この方法では、Diffusion Modelsと分類器の2つのモデルを用います。
GLIDEでは、分類器に、自然言語と画像との意味的関連性を算出可能なCLIPを用いることで、自然言語で入力されたテキストに対して、意味的関連性の高い画像を生成するようにガイドしています。

もう一方のClassifier-free guidanceでは、別途個別の分類器を使用しない代わりに、Diffusion Modelsと分類器を同時に学習させます。
GLIDEでは、テキスト情報であるテキストキャプションと画像を学習させますが、一定の確率で空のシーケンスを与え、無条件の画像生成と条件付き画像生成を学習させます。

サンプリング時には、Diffusion Modelsの出力に対して、テキストキャプションで重みづけを行い、再度Diffusion Modelsに予測させることでテキストキャプションへと生成画像をガイドします。

分類器が不要になったことにより、単一のモデルでDiffusion Modelsのガイドを実現しています。

論文中の実験では、上記2つの方法を用いた実験を行いClassifer-free guidanceが優位な精度を示したと記されています。


出典: GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models

また、ノイズから画像を生成する特性を生かし、画像の一部にノイズ(マスク)を施し、画像を生成することで画像編集も実現しています。


出典: GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models

このように、GLIDEでは、テキストから本物の写真と区別がつかないような画像生成や画像編集が可能となっていますが、論文発表元のOpenAIでは、GLIDEを用いたフェイクニュースやディープフェイクの生成を防止するため、データセットのフィルタリングと、モデルのパラメータ削減を施したミニモデルGLIDE(filtered)のみ公開しています。

以降では、GLIDE(filtered)を用いた画像生成、画像編集を実装していきます。

学べること

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

始める前のスキルセット

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

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

実務活用例

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

キッチン

開発環境

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

ツール

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

データセット

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

調理

テスト

GLIDEはどこが開発したモデルですか?

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

今回、画像修復を行った際にマスクした部分はどの画像に修復されましたか?

おすすめレシピ