BigGAN+CLIPで、テキストから画像を生成する

1.はじめに

 今回は、2018年に発表されたBigGANにOpenAIのCLIPを組み合わせて、テキストから画像を生成するモデルをご紹介します。

2.モデルの構成

  BigGANは Imagenet の巨大な画像データセットをSA-GANを大幅に増強したネットワークで学習したもので、1000カテゴリーの画像を最大512×512ピクセルの高解像度で生成するGANモデルです。2018年にDeepMindが開発しました。

  CLIPは画像と画像を説明するテキストのペア4億組を学習させることによって、画像からもテキストからも、その特徴を適切に表すベクトルを取得できるモデルです。2021年にGoogleが開発しました。

 GANモデルは様々な画像を生成できますが、入力パラメータにランダムノイズを使うため、モデルによってはカテゴリー程度の指定ができますがそれ以上の指定はできず、ランダムな画像しか生成できません

 今回は、このBigGANとCLIPを組み合わせることによって、テキストから画像を生成するモデルを作成します。下記にそのモデルを示します。

 画像生成をしたい TextCLIP Text Encoder に入力し、テキストの特徴ベクトルTを取得します。一方、Parmeter (ランダムノイズ)を BigGAN Image Generatorに入力し、出力ImageCLIP Image Encoder に入力し、画像の特徴ベクトルIを取得します。

 IT は出来るだけ同じにしたいので、IT の内積(COS類似度)が出来るだけ大きくなるように Parameter を最適化します。こうすることで、テキストの内容に沿った画像を生成できるようになるわけです。

 それでは、コードを動かしてみましょう。

3.コード

 コードはオリジナルを少しいじったものをGithubに上げてあります。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。

 最初に、セットアップを行います。big-sleep は pip 一発でインストールできます。

   

 それでは、テキストから画像を生成してみましょう。パラメータの設定内容について説明しておきます。

  • SAVE_EVERY:設定したiter毎に生成した途中画像を表示します。
  • SAVE_PROGRESS:Trueで生成した途中画像を保存します。
  • LEARNING_RATE:学習率です。数字を増やすと創造性が増します。
  • ITERATIONS:モデル内部での試行回数です。
  • SEED:乱数SEEDの設定です。

 LEARNING_RATEは、自分の生成したいテキストの内容によって上下させて適切な値を探ってみて下さい。探索ループの for epoch in range()() 内の数字を増やすと解像度が若干上がりますが、時間が掛かるので上げるかどうかはお好みです。

 では、TEXT = ‘an armchair in the shape of an avocado’ (アボガドの形をしたアームチェア)でやってみましょう。

 もう1つ、TEXT = ‘Einstein and Chaplin drinking coffee at a cafe’ (アインシュタインとチャップリンがカフェでコーヒーを飲んでいる)でやってみましょう。

 では、また。

(オリジナルGithub)https://github.com/lucidrains/big-sleep

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

アバター

ディープラーニング・エンジニアを趣味でやってます。E資格ホルダー。 好きなものは、膨大な凡ショットから生まれる奇跡の1枚、右肩上がりのワクワク感、暑い国の新たな価値観、何もしない南の島、コード通りに動くチップ、完璧なハーモニー、仲間とのバンド演奏、数えきれない流れ星。