普通のPC+ノー環境構築でAI画像生成を遊ぶ


AIによる画像生成「Stable Diffusion」が話題なので、さっそく遊んでみましたのですが、これが結構面白いです。おもしろ画像を生成してくれるキーワードを大喜利のような感覚で探して楽しめます。例をいくつか挙げると

“mad scientist in the heaven”
“a punk rocker takes an exam at Stanford University”
“never ending story”
“a photo of an athlete running on the sea”

みたいな感じです。いろいろ遊んでみたい方のために、手順を紹介しておこうと思います。

とりあえず試したい

という人はデモサイトで試すことができます。

https://huggingface.co/spaces/stabilityai/stable-diffusion

ただしデモサイトだと生成完了まで結構待たされます。5分ぐらいかかるかな?Advanced optionを変更すればもう少し早めることもできそうですが、自前の環境を作ってしまえば、もっと高速に画像が生成できます。Google colabを使いましょう。

Google Colabを使用する

まずはGoogle Driveにアクセスしましょう。そして任意の場所で右クリックして、表示されるポップアップメニューから「その他」-「Google Colaboratory」を選択します。

(長くなってしまいそうなのでColabの詳しい使い方は割愛します)

Colabのタブが開くと思います。ではまず初めにランタイムタイプをGPUに変更しておきます。画面の上の方のメニューバーから「ランタイム」-「ランタイムタイプの変更」を選択し、表示されたダイアログからGPUを選択します。

GPUに変更できたら、次はアクセストークンを発行します。Stable Diffusionを使用するために必要なキー情報です。これは運営元Hugging faceでアカウントを作成する必要があります。次のURLにアクセスします。

CompVis/stable-diffusion-v1-4

サイト内でSing upして登録メールアドレスで本登録を完了させます。そこまでいったらサイト内のアカウントのページ(画面右上のプロフィールアイコンをクリックすると表示される)から Settings ページに行きましょう。

Hugging faceのプロフィールメニュー

Settingsページの「Access Tokens」から「New Token」ボタンをクリックすることで、トークンを発行できます。トークン名は任意で構いません。権限はReadでOKです。トークンが発行出来たらコピーボタンでトークンをクリップボードにコピーしておきましょう。

トークンの準備は完了です。ではさっきのstable-diffusion-v1-4のページに戻って、「Accept repository」しておきましょう。(必要あるのか不明ですが一応)

ここまでの手順が完了したら、いよいよColabの設定です。まずは最初のコードセルを作成して、必要なライブラリをインストールします。

!pip install --upgrade diffusers transformers scipy

セルを実行するとライブラリのダウンロード・インストールが始まります。ちょっと時間かかるかもしれません。

続いて、トークンを設定してきます。コードセルを追加して、次の内容を入力してください。

AUTH_TOKEN = "<さっき取得したトークン>"

<さっき取得したトークン>の場所はご自分のトークンに置き換えて入力してください。

次のコードセルでstable-diffusionの準備をします。

import torch
from torch import autocast
from diffusers import StableDiffusionPipeline

model_id = "CompVis/stable-diffusion-v1-4"
device = "cuda"


pipe = StableDiffusionPipeline.from_pretrained(model_id, use_auth_token=AUTH_TOKEN)
pipe = pipe.to(device)

初回は処理時間がかかるかもしれませんが、気長に待ってください。セルの実行が完了したら、いよいよ画像の生成です。次のコードセルを作成して、次の内容を入力してください。

prompt = "a photo of an astronaut riding a horse on mars" # これがキーワード
filename = prompt.replace(' ', '_') + '.png'

with autocast("cuda"):
    image = pipe(prompt, guidance_scale=7.5)["sample"][0]  
    
image.save(filename)

セルを実行して数秒待ちます。処理が完了したら画像ファイルができているか確認してみます。画面左のペインからフォルダのアイコンをクリックするとカレントディレクトリのファイル一覧が表示されます。正常に画像生成が完了していれば、「a_photo_of_an_astronaut_riding_a_horse_on_mars.png」というファイルができあがっているはず!

ダブルクリックすると画面右側のペインに画像を表示することができます。私の場合はこんな画像ができてました。いい感じですね。

“a photo of an astronaut riding a horse on mars”

ちなみにもうお気付きかもしれませんが、違うキーワードで画像を生成したい場合は、さきほど入力した最後のコードセルの冒頭の prompt の内容を好きなキーワードにして実行すればオッケーです。(実行するのは最後のセルだけでいい)

あとは色々と遊んでもらえば!

補足:CUDA out of memoryというエラーが出た

何度も実行しているうちに、最後のコードセルで「CUDA out of memory」というエラーが出て画像が生成できなくなるかもしれません。そんな場合はメニューバーから「ランタイム」-「ランタイムの再起動」を実行してみてください。その後、「ランタイム」-「すべてのセルを実行」しましょう。たぶん、これで解決するはず。

関連する記事


コメントする

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください