Stable Diffusionを入れてみた

話題のお絵描きAIを使ってみたいと思い立ったのだが、Webサービスに登録したりアプリを入れたりするのもなんだかなあと思い、せっかくなら勉強にと思ってローカル環境に入れてみた。

とはいえPythonもTensorflowも触ったことないわ、GitHubのアカウントも持ってないわ、なんなら開発環境も全然入ってないわということで完全に手探り状態。
参考にしたのはこのあたり。
【簡単】ローカル環境でStable Diffusionを実行する方法 | ジコログ
Stable Diffusionをローカルマシンで実行する(VSCodeとDevcontainerを使用)
GPUの無いPCでStableDiffusionのインストールと実行時間の比較(AMDでもOpenvinoは動作しました) | ううら.site

なんとなくインストールはできたが、コードをコピペしても色々エラーが出てうまくいかない。

RuntimeError: CUDA out of memory.

一応うちのPCNVIDIA GeForceGTX1050/4GBを積んでるのだが、10GB無いとエラーになるようで、使用するGPUのメモリ量を設定することもできず、少ないGPUメモリで動かすには別のフォークをインストールしないとダメっぽいので諦め。
これはpipe.to("cuda")をpipe.to("cpu")にしたら動くようになった。ほかにも

pipe = StableDiffusionPipeline.from_pretrained(MODEL_ID, revision="fp16", torch_dtype=torch.float16, use_auth_token=YOUR_TOKEN)
with autocast(DEVICE):

あたりの記述でエラーが出る。

Autocast error: expected scalar type Half but found Float

最終的にはこの記事のコードを切り貼りしてつなげたら無事動いた。torch_dtypeあたりの引数があるとダメみたいだ。
画像生成AI「Stable Diffusion」を低スペックPCでも無料かつ待ち時間なしで使う方法まとめ - GIGAZINE

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


ようやく動くようになって記念すべき1枚目はこれ。


なんか不穏な感じの猫だ。ちなみにCPUは Core i7-8750Hなのだが、これでも1itあたり12~15秒くらいかかるので、51itで出力すると10分以上かかるというなかなか辛い感じなので、呪文の修行をするモチベーションも上がらず1日1枚くらい試してみている。

お次はこれ。なんだこの萎びたナスは。

そもそも英語の語彙力がないのではということでDeepL翻訳を使いつつ長文にしてみたところ、なかなかいい感じの画像になった。
AI翻訳で意訳っぽくしてくれるDeepLとの相性が良かったりするんだろうか。

カメラとレンズの情報を入れるといい感じになるというのをどっかで見かけたので入れてみた。呪文を考えたときのイメージとは違うけどいい感じ。

絵としてはそんなに変ではないけどイメージ的にはナンダコレ感のある画像。

雰囲気は良いのだがなんか下にクレジット文字列みたいなのが出た。なんだこれは。


というわけでなんとなく遊べるようにはなったが、数十GBをインストールに使ってこれだけというのは勿体ない。
GitHub登録してVisualStudioでPythonの勉強でも始めてみるかな…