DALL-E で、文から画像を生成する

1.はじめに

 2021年新年早々、OpenAIが「テキストを入力するとそれっぽい画像を生成するDALL-Eというモデル」を発表し、私はその表現力に衝撃を受けました。

 先週、OpenAIからコードの一部Discrete VAE の部分)と論文が公開されましたが、まだ公式にはDALL-Eを完全には動かせない状態です。

 そうした中、@advadnoun さんがこれを受けて速攻でプロトタイプを公表してくれました(素晴らしい!)。今回はこれを試してみたいと思います。

2.DALL-Eとは?

  DALL-Eは、任意のテキストを入力するとその内容に合わせた画像を生成するモデルです。このモデルは、大きく分けると2つのステージを経て作られます。

 ステージ1は、画像の圧縮・復元モジュールの作成です。これには、Discrete VAE(離散変分オートエンコーダ)と呼ばれるモデルが使われていて、エンコーダがRGB 256×256画像を32×32の中間出力に圧縮し、デコーダはその中間出力を再び入力とほぼ同品質のRGB256×256画像に復元します。

 一般的に画像は情報量が大きくそのままでは扱い難い訳ですが、Discrete VAEの中間出力を使うことで画像の情報量を192分の1に削減出来ることになります。

 Discrete VAEは、画像のみを学習データとして、入力した画像を正確に出力することを学習します。

 ステージ2は、画像とテキストの対応関係の学習です。これには、Transformerと呼ばれるモデル(赤の点線で囲まれたEncoderの部分)が使われていて、画像情報(画像トークン)とその内容を説明するテキスト情報(テキストトークン)の対応関係を学習します。

 Transformerへ入力するデータ形式は、画像トークンとして先ほどの中間出力(32×32=1024個)、テキストトークンとしてテキストを構成する単語をベクトルに変換したもの(最大256個)、この2つを連結したものです。

 学習データはインターネットから収集された2億5000万の画像とテキストのペアを先程の形式にし、120億のパラメーターを持つ巨大なTransformerに学習させます。

 この2つのステージが完了すると、入力されたテキストをテキストトークンに変換し対応する画像トークンを求め、その画像トークンを画像に復元させれば目的が達成できるわけです。

3.コード

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

 最初に、セットアップを行います。DALL-E は pip 1発でインストールできるようになりました。

 必要なライブラリーのインポートと関数の定義を行います。

 「Perceptor」です。センテンスと画像の橋渡しをする、CLIPをモデル化します。

 「Generator」です。画像を生成するGeneratorをモデル化します。

 「Text input」です。自分が画像生成したいテキストを text_input に設定します。tau_value は1.2のままで構いません(ちなみに、数字を大きくするとより創造性が高まります)。

 「Latent coordinate」です。テキストをトークンに変換します。

 「Train」です。100トライ毎に生成した画像を表示すると共に images フォルダーにその画像が保存します。

 「Make movie」です。お好みにより、images フォルダーの画像から動画を作りたい場合は動かして下さい。-r の後の数字2はフレームレートです。

 2回目以降画像生成を行いたい場合は、「Text_input」〜「Train」のみを動かせばOKです。それでは、いくつか試した結果をお見せします。

 アボガドの形をしたアームチェア(an armchair in the shape of an avocado)

 OpenAIのデモの中で、私が一番気に入っていた例のアボガドです。今回は、OpenAIのデモのようなスマートなものではなく、ちょっとリアリティがある感じになりました。

 エッシャーが設計した美しくミステリアスなお城(a beautiful and mysterious castle designed by Escher)

 騙し絵の大家エッシャーの雰囲気が結構出てますよね。

モナリザが屋上にあるジャグジーで赤ワインを飲んでいる(Mona Lisa is drinking red wine in the rooftop jacuzzi)

 正に、無茶苦茶なテキストを与えたわけですが、さすがDALL-Eです、こちらの要求をちゃんとかなえてくれました。モナリザが惜しげもなく柔肌を見せてくれています(笑)。

ガウディが設計したスポーツカー(Sports car designed by Gaudi)

 これは凄いです!一応タイヤ、フロントガラス、サイドガラスと車の要素は含んでいるものの、もはや車の概念を超えています。さすがガウディ、ぶっ飛んでいます(笑)。

 それにしても、クリエイティブな感覚を刺激してくれる面白いモデルです。ビジュアルで詰まっている時に、気分転換に使うと色々なアイディアが出て来そうな気がします。凄い時代になったものです。

  @advadnounsさんは、今回ご紹介したプロトタイプを随時アップデートしているようなので、気になる方はTwitterで最新の情報を確認してみて下さい。では、また。

コメントを残す

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

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

ABOUTこの記事をかいた人

アバター

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