テキストから画像を生成するAIは、「Text2Image」と呼ばれています。
今回は2021年に発表された、「Big Sleep」を試してみました。

BigSleepとは

「Big Sleep」は、「BigGAN」と「CLIP」を組み合わせたものです。テキストから画像を生成できます。Python向けライブラリとして利用できます。

BigGANとは

「BigGAN」は、1000カテゴリの画像を生成するモデルです。名前の通り、GANのネットワークを大規模化しています。DeepMindが開発しました。

2018年から「敵対的生成ネットワーク(GAN)」が流行りました。
GANは、「識別モデル」と「生成モデル」を互いに競い合わせることで精度を高めていく、教師なし学習です。生成モデルは、本物画像に似た画像を生成し、識別モデルが偽画像か本物画像かを見分けられるように学習していきます。BigGANはGANの発展形の一つです。

CLIPとは

「CLIP(Contrastive Language-Image Pre-training)」は、画像分類モデルです。画像とテキストの4億ペアを事前学習させています。OpenAIが開発しました。

学習方法としては、画像-テキストのペアのベクトルの内積を最大化し、ペアではないベクトルの内積を最小化するようにベクトルを調整していきます。その結果、画像からもテキストからも、その特徴を表現するベクトルを取得できます。

参考ページ
Big Sleep: https://github.com/lucidrains/big-sleep
Big GAN: https://github.com/ajbrock/BigGAN-PyTorch
CLIP : https://github.com/openai/CLIP

Google ColaboratoryのGPU環境を利用する

BigSleepの動作にはGPU環境が必須です。マシンを持っていない方は、Google ColabのGPU環境を利用しましょう。

Google Colaboratoryは、ブラウザから操作するPythonの実行環境です。基本的にGPU 環境も無料で使用できます。利用には、Googleアカウントとchromeブラウザが必要です。

GPU環境の設定方法ですが、まずGoogle Colabにアクセスして、左上メニューの[ランタイム]をクリックし、[ランタイムのタイプを変更]を押下して、ハードウェア アクセラレータを[GPU]に変更してください。

BigSleepを試してみる

①big-sleepをインストールする

pipでbig sleepをインストールします。
!pip install big-sleep

※もしライブラリ間の依存関係でインストールエラーになる場合は、エラーになったライブラリを一度アンインストールして、再度big-sleepのインストールを実行しましょう。

②big-sleepで推論する

textに生成したい絵のテキスト文を入力します。文は英語が無難です。

推論には時間がかかるので、エポック数とイテレーション回数をデフォルト値より減らしてみました。長時間Google ColabのGPUを実行し続けると、利用制限がかかるので気を付けます。

かと言ってイテレーション回数が少ないと画像が生成されませんので、とりあえずイテレーション150回で実施。(デフォルト:epochs = 20, iterations = 1050)

from big_sleep import Imagine

dream = Imagine( text = "cat and dog in the sky", lr = 0.1,
epochs = 5, iterations = 150, save_progress = True ) dream()

③出力画像を確認する

1時間ほどで推論が完了しました。

出力された画像を、表示してみます。Google Colabのフォルダに生成された画像ファイル名は、lsコマンドで確認してください。
from IPython.display import Image

Image('cat_and_dog_in_the_sky.png')

推論された画像「cat_and_dog_in_the_sky
cat_and_dog_in_the_sky
エポック数やイテレーションをかなり少なくした割には、それっぽくなっている気がします。