google ColabでAIに絵を描いてもらう

キーワードを入れるとAIが画像を生成してくれる「Stable Diffusion」をGoogleが基本無償で提供している、Python実行環境「Colaboratory」を使って、ローカルのPCやスマホから作成する手順です。

下記の画像は「キースヘリングが見た博多湾の夕日」と「キースヘリングが見た博多山笠」というタイトルで作成したらこうなりました。

事前に必要なもの

1.googleアカウント(既にアカウントを持っていれば不要です)
2.Hugging Faceアカウント(Stable Diffusionを使用するためのトークンをGETします)
どちらも無料ですので、まずはHugging Faceのアカウントを作ります。

1.Stable Diffusionを使うためのトークンをGETする

Hugging Faceのサイトでメールアドレスとパスワードを入力してNextをクリックします。
次の画面でUsernameFullnameを入れて、下部の規約にチェックを入れてCreateAccountをクリックします。

確認用のメールが届きますので、URLをクリックすると新規登録が完了します。

Hugging Faceのサイトに戻って、右上のアイコンをクリックしてSettingsページに入ります。

Settingsページから左のAccess Tokensをクリック。
New Tokenをクリックしてトークンを発行します。画像はトークン発行後の画面ですので、Showを押すとトークンが表示します。横のアイコンをクリックするとトークンをコピーできます。
コピー&ペーストの作業は後ほど行いますので、ひとまずここはそのままにしておきます。

上記のNew Tokensをクリックしたら、トークン名(半角英文字)を入力しGenerate a tokenで新規トークンを発行します。

2.ColaboratoryでStable Diffusionを使う

Googleアカウントにログインした状態で、Colaboratoryにアクセスします。
アクセスしたら、下記の画面が表示されますので、ノートブックの新規作成をクリックします。

新規ノートブックの画面になりますので、編集からノートブックの設定をクリックします。
ノートブックの設定がポップアップされますので、ハードウェアアクセラレータをGPUで選んで保存をクリックします。なお計算処理はクラウド上のPC上で行われるため、最新のGPUを搭載していないローカル上のパソコンやスマホからでも、GPUを用いた計算処理が可能になります。

Colaboratoryは下記のように、コマンドを入力して再生ボタンをクリックしながら実行するという作業になりますので、非常に簡単にStable Diffusionのインストール作業を行えます。
まずは、最初に下記のコマンドを入力して再生ボタンをクリックします。

pip install diffusers==0.2.4 transformers scipy ftfy

窓に経過中のログが表示されて処理がはじまります。左横の緑のチェックが出たら処理完了です。
完了後、同様に次のコマンドも入力していきます。
上部メニューの+コードの部分をクリックして、入力フォームを追加します。

新しく出来た入力フォームに、上記Hugging Faceのサイトで取得していたAccess Tokensを入力します。例えばトークンがABCDEFGなら下記のようにYOUR_TOKEN=”ABCDEFG”としますが、””内に上記のコピーしたトークンをそのままペーストします。ペースト後は同様に再生ボタンをクリックします。

YOUR_TOKEN="ABCDEFG"

次にも同様の作業で、上部メニューの+コードをクリックして入力フォームを追加し、下記のコードを入力し、再生ボタンをクリックします。この処理は2分くらいかかりますので、左の緑のチェックが出るまでしばらく待ちます。

from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=YOUR_TOKEN)

最後に、下記のコードを入力してStable Diffusionを使用する準備が完了します。
同様に+コードで入力フォームを追加、コードをペースト、再生ボタンです。
この処理が終われば、あとは文章のコマンドを投げて画像を作るような作業を行います。

pipe.to("cuda")

3.文章のコマンドを投げて画像を作ってもらう

画像を生成するために必要なコマンドは下記の3つです。
prompt = “作りたい画像の文章”
image = pipe(prompt)[“sample”][0]
image.save(f”保存ファイル名.png”)

例えば「ボートの上から魚を見ている猫」が欲しい場合「cat watching fish from boat」と文章に入れて、保存ファイル名を「cat.png」とします。

prompt = "cat watching fish from boat"
image = pipe(prompt)["sample"][0]
image.save(f"cat.png")

今までと同じように、+コードをクリックし、フォームに上記をペーストし、再生ボタンをクリックすると30秒ほどで作成完了しますが、保存されている画像は左メニューのフォルダアイコンをクリックすると、左ペインに保存ファイルで指定した「cat.png」が出てきますので、これをダブルクリックします。

右ペインに作成された画像が表示されます。

ネコの振り向き具合が白昼夢を見ているようですが、思っていたのと違う場合、この状態で何度か再生ボタンを押したり、文章を変えてみたりしてcat.pngをダブルクリックすると毎回違う画像を作ってくれます。また、画像の保存は画像上で右クリック→画像を保存や、右上にある「…」のメニューからダウンロードでも行えます。

また次回からは、Colaboratoryのトップページで最初に表示される作成済みのノートブックをクリックすると各コマンド入力済みの状態から再開できます。

写真の場合は「どこで」「誰が」「何をしている」ような文章だと、いろいろ調整が必要になりそうですが、イラストや絵画風の場合はある程度はうまくいくのかなと思います。
下記はゴッホとモネが描いた、それぞれ「カフェでくつろぐ黒猫」というタイトルで出してみました。やっぱりカップに手を突っ込んだりしていますが、雰囲気や構図をつかむのはできそうですね。