cedro-blog

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 一発でインストールできます。

   

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

 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