無料で使える描画AI!Stable Diffusionで画像を生成する方法

  • URLをコピーしました!

今回はMidjourneyと並んで話題の画像生成AI、Stable Diffusionを試してみました。Hugging Faceのトークンの作成から画像生成までを行う手順を解説していきたいともいます。

目次

Stable Diffusionとは

Stable Diffusion(ステーブル・ディフュージョン)は、オープンソースとして2022年8月に無償公開された画像生成AIです。Midjourneyと同様に描いてほしい画像のキーワードを指定することでそれに応じた画像を生成させることができます。

Stable Diffusionはオンライン上の研究コミュニティであるConpVisとLAION、およびロンドンを本拠とするAI企業Stability AIによって開発が行なっており、オープンソースコミュニティHugging Faceで公開されています。

出典:wikipedia

Hugging Faceのトークンを作成する

さてここからは実際にStable Diffusion使うための手順を解説していきます。
以下のHugging Faceのサイトにアクセスします。

ライセンスに関する説明が表示されますので、内容を確認したら「Access repository」をクリックします。

ログイン画面が表示されたらメールアドレスとパスワードを入力してログインします。ユーザー登録をされていない場合はSign Upからユーザー登録を行ってください。

画面左側のメニューから「Settings」をクリックします。

画面左側のメニューから「Access Tokens」をクリックします。

Access Tokensの画面が表示されたら、「New token」のボタンをクリックします。ボタンが押せない場合は登録したメールアドレスに認証の依頼が来ていますので、そちらを認証してから再度このページで確認してみてください。

アクセストークンの名前を「Name」に登録します。忘れない名前を適当に入力すればOKです。Roleは「read」のままで「Generate a token」のボタンをクリックします。

以下の画面のようにトークンが生成されますので、こちらをコピーしたらトークンの作成は完了です。

Stable Diffusionのインストール

以下のコマンドを実行します。

pip install diffusers==0.2.4 transformers scipy ftfy

以下のようにインストールされたバージョンが表示されたらインストール完了です。

Successfully installed diffusers-0.2.4 ftfy-6.1.1 huggingface-hub-0.9.1 tokenizers-0.12.1 transformers-4.22.0

あとは次の項目で紹介するPythonのコードを実行すればイラストを生成することができます。

作成したソースコード

ここからは実際にStable Diffusionに絵を描かせるためのコードを実装していきます。

ソースコード解説

先ほどHuggingFaceのサイトで生成したトークンを定数として設定します。

HF_TOKEN = "〇〇"

画像生成に使用するデバイスを設定します。今回は私の環境ではグラボのないノートPCで使用したため「cpu」で設定しましたが、生成にものすごく時間がかかりました。
グラボを積んでいるPCかGoogle ColaboratoryなどGPUが使える環境では「cuda」と設定してください。

pipe.to("cpu")

ここが一番重要な部分で、どのような画像を生成したいかを指示します。〇〇の部分に単語、もしくは英文で指示を記述します。単語、英文の間は「,」で区切って複数のキーワードで指定できます。

今回は「”a girl standing in a futuristic city, soft light, 8 k, cyberpunk colour palette, dramatic composition, dramatic lighting”」というキーワードで設定してみました。

prompt = "〇〇"

実際に画像を生成する処理です。
どのような絵を描くかという指示のpromptと合わせて、「height」、「width」のパラメータで画像の出力サイズを指示することができます。ただモデル自体が512×512に最適化されているようで、この設定が一番高品質な絵が生成されるようです。

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

作成した全体のソースコード

以下が全体のソースコードです。

from diffusers import StableDiffusionPipeline
from datetime import datetime

#HuggingFaceのトークン
HF_TOKEN = "〇〇"

#StableDiffusionパイプライン設定
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=HF_TOKEN)

#使用するデバイスを設定
#pipe.to("cuda")
pipe.to("cpu")

#生成したい画像を指示
prompt = "〇〇"

#画像生成
image = pipe(prompt)["sample"][0]

#生成した画像をファイル出力
date = datetime.now().strftime("%Y%m%d_%H%M%S") #現在の日時を取得
path = date + ".png" #ファイル名を生成した日時にする
image.save(path)

「pipe.to(“cpu”)」の行までは初回のみでOKで、2回目以降はprompt = “〇〇”からだけで生成できますので、キーワードを色々変更して試してみてください。

発生したエラー

私の環境では実行時に以下のようなエラーが発生しました。

発生個所

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

エラー内容

OSError: [WinError 1314] クライアントは要求された特権を保有していません。

対策

windowsの開発者向け設定を変更することで解決しました。
スタートメニューから開発者向け設定を検索して開きます。

「開発者モード」の設定をオンに変更します。

変更後、再度実行したらエラーは発生しませんでした。

実行結果

ソースコードの解説にも書きましたが、今回のテストでは以下のようなキーワードを試してみました。

a girl standing in a futuristic city, soft light, 8 k, cyberpunk colour palette, dramatic composition, dramatic lighting

このキーワードで実行したら以下のような画像が生成されました。

同じ指示のワードでも毎回全く異なる絵が生成されるようですので、スクリプトで複数回繰り返し実行するとよさそうです。

ちなみに私のノートPCでは非力なこともありCPUで処理した場合、1枚生成するのに40分もかかってしまいました。できればグラフィックボードを搭載したGPUマシンで実行したいところです。

最近はビットコインマイニング需要も落ち着いてきたこともあり、NVIDIAのRTX3060あたりを搭載したグラフィックボードはかなりお手頃価格で入手できるようになってきました。VRAM(ビデオカードメモリ)は12GB以上のものがおすすめです。
描画AIでの画像生成や機械学習のモデル作成にGPUを活用してみてはいかがでしょうか。

まとめ

今回は画像生成AIであるStable Diffusionについて解説してみました。
私も何枚か試しに生成してみましたが、これだけのクオリティの画像を生成できるAIが無料で使えるというのは本当に驚きです。またStable Diffusionは商用利用が可能というのもうれしいですね。

2次元キャラクターの成功率を向上させるモデル、Waifu Difussionの使い方についても以下の記事で解説していますので、あわせてご覧ください。

それでは、また次の記事でお会いしましょう。

参考

よかったらシェアしてね!
  • URLをコピーしました!
目次