はじめに
十分に発達した科学技術は、魔法と見分けがつかない。1
いや、マジで! nikkieです。
画像生成AIをめぐる盛り上がり、遠巻きに見守ってきましたが、ばーん! このたびStable Diffusion web UIの環境構築に成功しました🙌 🙌 🙌
目次
きっかけ
はてなブログ巡回中にid:iwasimanさんのこちらの記事を見かけました。
今月のプロンプトエンジニアリング:Stable Diffusionに入門したよを読んでいくと
導入のハードルの高さというネックがありますが、あくまで一般人の場合。代表的なStable Diffusion Web UIを入れるのに必要な手順の実体は
- Python3.10.*のインストール
- Gitのインストール
- Gitを使ってGitHubからとってきて、
- Python+JavaScriptで動いているWebアプリをコマンドからlocalhostで動かす
...という流れなので、ITエンジニアの方だったら特に詰まることはないでしょう。
👀
「あれ、これ、Pythonに慣れている身からすると、かな〜〜〜り簡単に環境構築できちゃうんじゃないかな」
Stable Diffusion Web UIの導入が思っていたよりも簡単そうだと分かり、環境構築に取り組みました。
Apple SiliconでStable Diffusion web UIを動かす
Wikiの手順に従いました。
動作環境
% sw_vers ProductName: macOS ProductVersion: 12.6.3 BuildVersion: 21G419
CPUで動かしています
Wikiに沿ってソースコードとモデルを配置
※後述しますが、ソースコードは1箇所変更が必要でした。
- 5ab7f213bec2f816f9c5644becb32eb72c8ffb89を
git clone
しました(v1.1.1
タグ) - Pythonは
pyenv
を使っていますpyenv local 3.10.9
- モデルは(よくわかっていないのですが)「Stable Diffusion 1.5 (v1-5-pruned-emaonly.ckpt)」を選択2
- cloneしたリポジトリ内の
models/Stable-diffusion/
以下に配置
- cloneしたリポジトリ内の
これで./webui.sh
を叩くと3
Running on local URL: http://127.0.0.1:7860
web UI起動した!!
UIに適当(数語)なプロンプト(たしかcat)を入れて画像生成してみると
RuntimeError: "upsample_nearest2d_channels_last" not implemented for 'Half'
残念!😢
RuntimeError: "upsample_nearest2d_channels_last" not implemented for 'Half' の解消
対症療法(ワークアラウンド)かもしれませんが、以下のようにソースコードを編集して、画像が生成できています。
変えるファイルはwebui-macos-env.sh
-export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate" +export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --no-half --use-cpu interrogate"
--no-half
を追加しています。
エラーメッセージでリポジトリ内を検索して見つかった以下がワークしました。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/8555#issuecomment-1537272479
なんでこれで対処できるのか、わかんない!
Stable Diffusion 1.5が動いたぞ〜🙌
CPUなので20秒くらいかかります。
いわしまんさんのブログでStable Diffusion Web UI簡単に動かせるよと知り、やってみたら動いた!すげえええええ🙌 ブログに大感謝です
— nikkie にっきー (@ftnext) 2023年5月8日
4月のリリースノートにある呪文で召喚しました
モデルがよくわかってないですが、これは手元で自分好みのかわいいが作れてしまうかもしれない(きゃーーーー! https://t.co/XIUSIefYk7 pic.twitter.com/fdn92EBoRC
a girl with black hair and ribbon. wearing kimono. with smile shyly. upper body. without hands. at spring morning. with cherry blossom. in anime style.
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 1197544326, Size: 512x512, Model hash: cc6cb27103, Model: v1-5-pruned-emaonly
あ、4月のリリースノートに僕が書いたのはBing Image Creator用の呪文なので、Stable Diffusion用だとまたちょっと呪文が違います(プログラム言語の違いほどじゃなく方言レベル)
— いわしまん@AI術師入門中 (@iwasiman) 2023年5月8日
こちらもググるとたくさん出てきます。アニメ向けのModelなどを落としてきてWeb UIに入れてから試してください!👍
呪文って違うんですね!
— nikkie にっきー (@ftnext) 2023年5月8日
思ってもみませんでした。
教えてくださりありがとうございます!
起動したものの呪文が浮かばんぞとなり、いわしまんさんのブログで見かけた気がしたので動作確認目的で使ってみた次第です。
もう動いて感動です!
全力でkawaiiを作っていきたいと思います!
アニメ絵を生成したい! Counterfeit V2.5を動かす
再度いわしまんさんのブログより
アニメ・イラスト調の絵で背景も綺麗に出るCounterfeitという定番モデルのV2.5を主に使って
Counterfeit4 V2.5はアニメ絵が作れるのか 👀 👀 👀
以下を参考に動かせました。
モデルを変えるだけですね。
models/Stable-diffusion/
以下に配置します5。
- Counterfeit-V2.5.vae.pt
mv Counterfeit-V2.5.vae.pt Counterfeit-V2.5_pruned.vae.pt
- Counterfeit-V2.5_pruned.safetensors
./webui.sh
を叩き、立ち上がったUIで上記のプロンプトを入力すると
a girl with black hair and ribbon. wearing kimono. with smile shyly. upper body. without hands. at spring morning. with cherry blossom. in anime style.
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 1956824048, Size: 512x512, Model hash: a074b8864e, Model: Counterfeit-V2.5_pruned
かわいいいいいいいいいい!!!6
やばい!すごい!すごいいいい!
— nikkie にっきー (@ftnext) 2023年5月9日
かわいいいいいいいいい!AIさんすごい!!
Counterfeit-V2.5_pruned、RTと同じプロンプトで生成しました https://t.co/kDwY6200K1 pic.twitter.com/qMsCB1xuvv
技術の進歩、ヤバない?
— nikkie にっきー (@ftnext) 2023年5月9日
マジでヤバない?
魔法じゃん!!!
イラストは描けないですが、環境構築できたので、これでかわいいが作れるぞおおおおおおおおお!!!!!
より適切なプロンプトがあるのは承知しているのですが、あまりのかわいさにもう大満足してしまい、プロンプトエンジニアリングはまたの機会です。
はあ、かわいい... これ自分の手で作ったっていうのヤバない? ヤバない?
終わりに
Stable Diffusion web UIの環境構築に成功しました!
かわいいは、作 れ る!!🤗
Pythonのプログラミング経験がある方、お手元のPCにすでにPythonが入っていると思うので、Stable Diffusion web UI、ぜひお試しあれ!
画像生成AIは、驚くほど近くにありました。
先人のブログのおかげもあって全然つまづきませんでした。ありがとうございます!
私の身には、プログラムを書くか、死ぬかどちらかしかないんだ7、なんです。
自分ではどうやっても描けないかわいいイラストを生み出す絵師さんは皆さん本当にすごいと思っています(公開していただいてありがとうございます!眼福)。
そんな私にとって、Stable Diffusion web UIはもうとてつもなくやばいです。
プログラムを書く道の先にかわいいがあるという光が差しています!
プロンプトの情報収集していって、自分好みのかわいいをばんばん生み出していきたいですね〜
そして、かわいいが生み出せないと思っていた自分の手から生み出せたかわいいは本当にかわいいんですよ(親ばか)。
生成枚数は累計2枚とかなんですが、このブログに貼った娘とか、出てくるイラストがもうほんとかわいくてかわいくて、最高です!(優勝!!)
- https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%A9%E3%83%BC%E3%82%AF%E3%81%AE%E4%B8%89%E6%B3%95%E5%89%87↩
- v1-5-pruned-emaonly.safetensorsも試して、こちらもうまくいきました!(ckptの方は別ディレクトリに対比させています)↩
-
仮想環境(
venv
)を作って、依存関係をインストールするなどしてくれているみたいです。こういうラップの仕方があるんですね!めっちゃよいと思います↩ - 偽造品って単語を選ぶあたり洒落てますね↩
- 「Stable Diffusion 1.5」のモデルは別のディレクトリに移しています↩
- 「(萌え)豚は出荷よ〜」(古のコール&レスポンス)↩
- ref: ASCII.jp:映画を撮るか、死ぬかどっちかしかないんだ 「映画大好きポンポさん」 (7/9)↩