テキストから画像を生成するAIは、「Text2Image」と呼ばれています。
今回は2021年に発表された、「Big Sleep」を試してみました。
今回は2021年に発表された、「Big Sleep」を試してみました。
BigSleepとは
「Big Sleep」は、「BigGAN」と「CLIP」を組み合わせたものです。テキストから画像を生成できます。Python向けライブラリとして利用できます。
BigGANとは
「BigGAN」は、1000カテゴリの画像を生成するモデルです。名前の通り、GANのネットワークを大規模化しています。DeepMindが開発しました。
2018年から「敵対的生成ネットワーク(GAN)」が流行りました。
GANは、「識別モデル」と「生成モデル」を互いに競い合わせることで精度を高めていく、教師なし学習です。生成モデルは、本物画像に似た画像を生成し、識別モデルが偽画像か本物画像かを見分けられるように学習していきます。BigGANはGANの発展形の一つです。
2018年から「敵対的生成ネットワーク(GAN)」が流行りました。
GANは、「識別モデル」と「生成モデル」を互いに競い合わせることで精度を高めていく、教師なし学習です。生成モデルは、本物画像に似た画像を生成し、識別モデルが偽画像か本物画像かを見分けられるように学習していきます。BigGANはGANの発展形の一つです。
CLIPとは
「CLIP(Contrastive Language-Image Pre-training)」は、画像分類モデルです。画像とテキストの4億ペアを事前学習させています。OpenAIが開発しました。
学習方法としては、画像-テキストのペアのベクトルの内積を最大化し、ペアではないベクトルの内積を最小化するようにベクトルを調整していきます。その結果、画像からもテキストからも、その特徴を表現するベクトルを取得できます。
Big GAN: https://github.com/ajbrock/BigGAN-PyTorch
CLIP : https://github.com/openai/CLIP
textに生成したい絵のテキスト文を入力します。文は英語が無難です。
推論には時間がかかるので、エポック数とイテレーション回数をデフォルト値より減らしてみました。長時間Google ColabのGPUを実行し続けると、利用制限がかかるので気を付けます。
かと言ってイテレーション回数が少ないと画像が生成されませんので、とりあえずイテレーション150回で実施。(デフォルト:epochs = 20, iterations = 1050)
出力された画像を、表示してみます。Google Colabのフォルダに生成された画像ファイル名は、lsコマンドで確認してください。
推論された画像「cat_and_dog_in_the_sky」
エポック数やイテレーションをかなり少なくした割には、それっぽくなっている気がします。
CLIP : https://github.com/openai/CLIP
Google ColaboratoryのGPU環境を利用する
BigSleepの動作にはGPU環境が必須です。マシンを持っていない方は、Google ColabのGPU環境を利用しましょう。
Google Colaboratoryは、ブラウザから操作するPythonの実行環境です。基本的にGPU 環境も無料で使用できます。利用には、Googleアカウントとchromeブラウザが必要です。
GPU環境の設定方法ですが、まずGoogle Colabにアクセスして、左上メニューの[ランタイム]をクリックし、[ランタイムのタイプを変更]を押下して、ハードウェア アクセラレータを[GPU]に変更してください。
※もしライブラリ間の依存関係でインストールエラーになる場合は、エラーになったライブラリを一度アンインストールして、再度big-sleepのインストールを実行しましょう。
Google Colaboratoryは、ブラウザから操作するPythonの実行環境です。基本的にGPU 環境も無料で使用できます。利用には、Googleアカウントとchromeブラウザが必要です。
GPU環境の設定方法ですが、まずGoogle Colabにアクセスして、左上メニューの[ランタイム]をクリックし、[ランタイムのタイプを変更]を押下して、ハードウェア アクセラレータを[GPU]に変更してください。
BigSleepを試してみる
①big-sleepをインストールする
pipでbig sleepをインストールします。!pip install big-sleep
※もしライブラリ間の依存関係でインストールエラーになる場合は、エラーになったライブラリを一度アンインストールして、再度big-sleepのインストールを実行しましょう。
②big-sleepで推論する
推論には時間がかかるので、エポック数とイテレーション回数をデフォルト値より減らしてみました。長時間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」
エポック数やイテレーションをかなり少なくした割には、それっぽくなっている気がします。