Stable Diffusionも試してみる

Stable Diffusionも試してみる

2022年8月25日
知恵
Pocket

AIによる画像生成めちゃくちゃ熱いですね。

DALL·E 2に続き

DALL·E 2が使えるようになったので使ってみた

DALL·E 2が使えるようになったので使ってみた

7/6に申請して なかなか来ないな〜と思ってたら 100万人に提供というニュース…
zaitakukinmu.com

Midjourney

Midjourneyも試してみる

Midjourneyも試してみる

先日、DALL·E 2の記事を書いたばかりですが https://zaitaku…
zaitakukinmu.com

そして、今回紹介する「Stable Diffusion」と立て続けにサービスが出ています。

ここまでクォリティーが高いものが簡単に生成できるとなるとゲームチェンジが起こるのではと思います。

デザインされたものを服とか靴にすることだって可能だし、そういったサービスが出てくるのではと。

「Stable Diffusion」もそうですが、かなりスペックの高いPCがないと簡単には利用できません。

検索してみると、以下の記事が見つかりました。

この方法であれば、無料でできるので、こちらを参考に環境を構築し、Stable Diffusionを試していきます。

Stable Diffusionも試してみる

画像生成AI「Stable Diffusion」を低スペックPCでも無料かつ待ち時間なしで使う方法まとめ - GIGAZINE

2022年8月23日に無料公開された画像生成AI「Stable Diffusio…
gigazine.net

Hugging Faceのトークンを発行

Hugging Faceとは???は、以下の記事を参考ください。

Stable Diffusionも試してみる

atmarkit.itmedia.co.jp

自然言語処理のデータセット提供サイトで、「Stable Diffusion」のコードやドキュメントは、こちらで公開されているため、アカウントを作成してトークンを発行する必要があるそうです。

以下にアクセスします。

Stable Diffusionも試してみる

CompVis/stable-diffusion-v1-4 · Hugging Face

We’re on a journey to advance and democr…
huggingface.co
Stable Diffusionも試してみる
Access repository
このモデルにアクセスするには、あなたの連絡先情報を共有する必要があります。
このリポジトリは一般に公開されていますが、コンテンツにアクセスするには登録が必要です。心配しないでください、ワンクリックするだけです

下の「リポジトリにアクセス」をクリックすると、あなたの連絡先(メールアドレスとユーザー名)がリポジトリの作者と共有されることに同意したことになります。これにより、例えばライセンス上の理由でリポジトリのコンテンツの一部を削除する必要がある場合、作者に連絡することができます。

このモデルを入手する前にもう一歩。

このモデルはオープンアクセスで誰でも利用でき、CreativeML OpenRAIL-Mライセンスでさらに権利と使用方法が規定されています。

CreativeML OpenRAILライセンスでは、以下のように規定されています。

1.あなたは、このモデルを使用して、違法または有害な出力やコンテンツを意図的に作成したり、共有したりすることはできません。

2.CompVisは、あなたが生成した出力に関する権利を主張しません。あなたはそれらを自由に使用することができ、ライセンスで設定された規定に反してはならないその使用について説明責任を負います。

3.3. あなたは、重みを再配布し、モデルを商業的および/またはサービスとして使用することができます。その場合、ライセンスに記載されているものと同じ使用制限を含め、CreativeML OpenRAIL-Mのコピーをすべてのユーザーと共有しなければならないことに注意してください(ライセンスを完全にかつ注意深く読んでください)。

ライセンスの全文はこちらでご覧ください: https://huggingface.co/spaces/CompVis/stable-diffusion-license

下の "Access repository "をクリックすると、あなたの*連絡先*(メールアドレスとユーザー名)がモデルの作者とも共有されることに同意したことになります。

あなたはすぐにモデルのコンテンツにアクセスできるようになります。

Access repositoryボタンをクリックして同意します。

するとログイン画面が表示されるので、「Sign Up」をクリックして新規登録をします。

Stable Diffusionも試してみる
Hugging Faceログイン画面

アカウント作成画面が表示されるので、メールアドレス、パスワードを入力して、Nextをクリックします。

Stable Diffusionも試してみる
Hugging Faceアカウント作成

プロフィール入力が出るので、Username、Full name、同意のチェックをつけて「Create Account」をクリックします。

Stable Diffusionも試してみる
Hugging Faceプロフィール入力

以下の画面に戻ります。

Stable Diffusionも試してみる

アカウント作成時のメールアドレスにメールが来ているので確認し、リンクを押してconfirmします。

Stable Diffusionも試してみる
Hugging Face認証メール

メールアドレスの認証が完了すると、アカウントの作成が完了となります。

Stable Diffusionも試してみる
Hugging Face認証完了後

再度、以下のURLに戻ります。

Stable Diffusionも試してみる

CompVis/stable-diffusion-v1-4 · Hugging Face

We’re on a journey to advance and democr…
huggingface.co

ライセンスに同意するチェックをつけて、Access repositoryをクリックします。

Stable Diffusionも試してみる
再同意

以下のページが表示されます。

Stable Diffusionも試してみる

右上のプロフィールアイコンをクリックし、Settingsをクリックします。

Stable Diffusionも試してみる
Settings

Settingsページの左ナビから、「Access Tokens」を選択し、「New token」をクリックします。

Stable Diffusionも試してみる
Access Tokens

適当な名前をつけて、「Generate a token」をクリックします。

Stable Diffusionも試してみる
トークン生成

以下のように作成されます。トークンの発行は以上になります。

Stable Diffusionも試してみる
アクセストークンの確認

Colaboratoryの準備

Colaboratoryとは???は、以下の記事を参考ください。

利用には、Googleアカウントが必要になります。(Googleのサービス)

以下に、アクセスします。

Stable Diffusionも試してみる

Google Colab

colab.research.google.com

既にアカウントにログインしている状態だったため、以下のように表示されました。

未ログイン時は、ログインボタンが表示されるので、ログインをしてください。

Stable Diffusionも試してみる
Colaboratory

「ノートブックを新規作成」をクリックします。

Stable Diffusionも試してみる
Colaboratory新規作成

ノートブックが作成されたら「編集」「ノートブックの設定」をクリックします。

Stable Diffusionも試してみる
Colaboratoryノートブックの設定

「GPU」を選択して「保存」をクリックします。

Stable Diffusionも試してみる
ColaboratoryのGPU設定

この環境に、「Stable Diffusion」をインストールします。

各種設定

Colaboratoryが無料利用だとリセットされるため、ここの手順はリセットされるたびに必要になります。

以下のコマンドを入力し、再生ボタンをクリックします。

pip install diffusers==0.2.4 transformers scipy ftfy
Stable Diffusionも試してみる
Colaboratoryインストール

以下のように、表示されたら成功です。

Successfully installed diffusers-0.2.4 ftfy-6.1.1 huggingface-hub-0.9.0 tokenizers-0.12.1 transformers-4.21.2
Stable Diffusionも試してみる

続いて、Hugging Faceのトークンを設定します。

YOUR_TOKEN=”Hugging Faceで発行したトークン”

以下の画面で、青枠をクリックするとコピーできます。

URLは、https://huggingface.co/settings/tokens

Stable Diffusionも試してみる

コマンド入力欄に、以下のコマンドを入れて、再生ボタンをクリックします。

YOUR_TOKEN="Hugging Faceで発行したトークン"

コマンドを追加で入力する際は、「+コード」をクリックして枠を追加します。

Stable Diffusionも試してみる

続けて、以下のコマンドを入力します。(YOUR_TOKENは、そのままで大丈夫です)

from diffusers import StableDiffusionPipeline

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

ダウンロードが始まります。私は、2分かかりました。

Stable Diffusionも試してみる
stable-diffusionインストール

完了したら、再度コマンド欄を追加して、以下を実行します。

緑色のチェック(5秒の記載の上)が出たら、Stable Diffusionを使う準備は完了です。

pipe.to("cuda")
Stable Diffusionも試してみる
stable-diffusionの動作確認

Stable Diffusionで画像を生成してみる

+ コマンドをクリックして、コマンド入力欄を追加します。

そして、以下のコマンドを入力し、再生ボタンを押してみます。

prompt = "cute cat paly with ball"

image = pipe(prompt)["sample"][0]

image.save(f"cat.png")

実行に、36秒かかり、左ナビのファイルのところに、cat.pngが出来上がりました。

Stable Diffusionも試してみる

画像ファイルをダブルクリックすると右ペインに画像が表示されます。

Stable Diffusionも試してみる
stable-diffusion画像生成

三点リーダーをクリックして、ダウンロードをクリックするとDLできます。

Stable Diffusionも試してみる

猫の体しか描かれていませんでした。。。

Stable Diffusionも試してみる

他の画像生成を試す場合は、「+コマンド」からコマンド入力欄を追加して、以下のコマンドの英文と出力ファイル名を変えることで可能です。

prompt = "cute cat paly with ball"    // ここの文章を変える

image = pipe(prompt)["sample"][0]

image.save(f"cat.png")  // ここのファイル名を変える

何度か試してみましたが、なかなか思うように絵が作成できません。

「stable diffusion 呪文」でtwitter検索するとこのキーワードを含めるとうまく生成できるといった呪文があるようです。

「makoto shinkai」

「Anime by Wlop」

ここらへんのキーワードをいれるといいみたいです。

呪文を唱えられる人が重宝されていくのでしょうか。

pipeの引数でいくつか設定ができるようです。

height = 512                        # default height of Stable Diffusion
width = 512                         # default width of Stable Diffusion

num_inference_steps = 100           # Number of denoising steps

guidance_scale = 7.5                # Scale for classifier-free guidance

generator = torch.manual_seed(0)    # Seed generator to create the inital latent noise

batch_size = len(prompt)

Google Colabには以下の制限があるので注意しましょう。

・RAM:12GB 
・ディスク:CPU/TPC:最大107GB、GPU:最大68GB
・90分ルール : 何も操作せずに90分経つとリセット
・12時間ルール : インスタンスが起動してから12時間経つとリセット
・GPUの使用制限 : GPUを使いすぎるとリセット(上限未公開)

翌日に同じものを利用して、描画を行おうとしたらエラーとなりました。

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-a01812185ea9> in <module>
      1 prompt = "a photograph of an astronaut riding a horse"
----> 2 image = pipe(prompt, height=512, width=768)["sample"][0]
      3 
      4 image.save(f"horse.png")

NameError: name 'pipe' is not defined

12時間ルール : インスタンスが起動してから12時間経つとリセット

こちらが影響しているものと思われ、各種設定の項を再実行する必要があります。

また、生成した画像も消えてしまうので、DLしておきましょう。

最初に生成した以下の命令ですが、文章を以下のように変えるとこのような絵に変わりました。

prompt = "cute cat paly with ball"    // ここの文章を変える

image = pipe(prompt)["sample"][0]

image.save(f"cat.png")  // ここのファイル名を変える

変更後

prompt = "cute cat paly with ball, professionally retouched, soft lighting, wide angle, 8 k high definition, intricate, elegant, art by brian miller, peter mohrbacher"

image = pipe(prompt)["sample"][0]

image.save(f"cat.png")
Stable Diffusionも試してみる
変更前
Stable Diffusionも試してみる
変更後

見違える絵になりました。

真四角になるので、以下のようにサイズを指定しておくと良さそうです。

image = pipe(prompt, height=512, width=768)["sample"][0]

呪文のサイトがありました。

生成されるイメージとキーワードの組み合わせを確認することができます。

The Ai Art - AI, Art, and everything in between

AI is not the future, rather the present…
www.the-ai-art.com

こちらのサイトのキーワードを参考に、以下のコマンドを実行してみました。(Bokeh effectを追加)

prompt = "cute cat paly with ball, professionally retouched, soft lighting, wide angle, 8 k high definition, intricate, elegant, art by brian miller, peter mohrbacher, Bokeh effect"

image = pipe(prompt, height=512, width=768)["sample"][0]

image.save(f"cat.png")
Stable Diffusionも試してみる

明確な違いは見られませんでした。

「Lens flare effect」も試してみます。

prompt = "cute cat paly with ball, professionally retouched, soft lighting, wide angle, 8 k high definition, intricate, elegant, art by brian miller, peter mohrbacher, Lens flare effect"

image = pipe(prompt, height=512, width=768)["sample"][0]

image.save(f"cat.png")

Stable Diffusionも試してみる

なかなか難しいw

Stable Diffusion 1.5を試して見たい方は、こちらを参考にしてみてください。

Stable Diffusion1.5を試してみる

Stable Diffusion1.5を試してみる

すでに一度Stable Diffusionを動作させたことがある方向けになります…
zaitakukinmu.com