今回は2次元キャラクターに特化したモデルWaifu Diffusionを、イラスト描画AIであるStable Diffusionの最新バージョン2.xで動作させる方法を解説します。
ローカル環境やGoogle ColabでPythonコードから使用できますので、ぜひトライしてみてください。
また、StableDiffusionに関連する記事を以下のページでまとめていますので、あわせてご覧ください。

以下のページで自然言語処理モデルGPT-3を使ったライティングツールCatchyで、Stable DiffusionのPromptを自動生成する方法について解説していますので、あわせてご覧ください。

Stable Diffusionとは
Stable Diffusion(ステーブル・ディフュージョン)は2022年8月に無償公開された描画AIです。ユーザーがテキストでキーワードを指定することで、それに応じた画像が自動生成される仕組みとなっています。
NVIDIAのGPUを搭載していれば、ユーザ自身でStable Diffusionをインストールし、ローカル環境で実行することも可能です。
(出典:wikipedia)
2023年1月現在、Stable DiffusionはVersion 2.x系がリリースされていますので、今回はStable Diffusion 2.0を使用します。Stable Diffusion 2.0の使い方については、以下のページでも解説しています。

Waifu Diffusionとは
ハイクオリティなイラストを生成できるお絵かきAI、Stable Diffusionをさらに2次元イラストに特化させるためのチューニングが行われたモデルがWaifu Diffusionです。
2023年1月現在のWaifu Diffusionのバージョンはv1.4となります。
Waifu Diffuisonのリポジトリは以下となります。今回はこのモデルを使って2次元キャラクターを描かせてみようと思います。

StableDiffusion 2.xのセットアップ
以下のコマンドを実行してパッケージをインストールします。
pip install diffusers[torch]==0.9 transformers
pip install --upgrade --pre triton
StableDiffusionのリポジトリを取得してインストールします。
pip install --upgrade git+https://github.com/huggingface/diffusers.git transformers accelerate scipy
以上でStableDiffusion 2.0のセットアップは完了です。
作成したソースコード
Waifu Diffusionのモデルを指定
Waifu Diffusionを使用する方法は、モデルの指定箇所を変更するだけです。
model_id = "hakurei/waifu-diffusion" #waifu diffusionのモデルを指定
作成した全体のソースコード
作成した全体のソースコードは以下の通りです。
モデルIDの指定箇所以外は通常のStable Diffusion 2.0と同じです。
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
import torch
from datetime import datetime
#model_id = "stabilityai/stable-diffusion-2"
model_id = "hakurei/waifu-diffusion" #waifu diffusionのモデルを指定
# Use the Euler scheduler here instead
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, revision="fp16", torch_dtype=torch.float16)
pipe = pipe.to("cuda") #GPUがない場合は「cpu」を指定
#画像生成の指示(呪文)
prompt = "(イラストに対する指示を設定)"
#描画する回数を設定
num_images = 5
#イラスト生成
for i in range(num_images):
#推論実行
image = pipe(prompt, height=768, width=768).images[0]
#生成日時をファイル名にして保存
date = datetime.now().strftime("%Y%m%d_%H%M%S")
path = date + ".png"
image.save(path)
実行結果
今回は動作確認のため、chiliさんがTwitterで公開されているPrompt(呪文)をお借りしました。
(画像の「ALT」をクリックするとPromptが確認できます)
お借りしたPromptで先ほどのPythonプログラムを実行したところ以下のような画像が生成されました。

以下のページで自然言語処理モデルGPT-3を使ったライティングツールCatchyで、Stable DiffusionのPromptを自動生成する方法について解説していますので、あわせてご覧ください。

安定した環境を手に入れるためにはローカルでの構築がおすすめ
Stable Diffusionを使用する際にGoogle ColaboratoryやWebサービスを利用されている方も多いかと思います。しかし、最近Google Colabの無料での使用範囲が大きく制限されたり、Webサービスでは月額費用がかかったりします。
欲しいイラストを生成するにはかなりの回数をトライする必要があるため、これらの制約に縛られることなく使用できるローカル環境を構築するのがおすすめです。
ローカルのPCに搭載するグラフィックボード
ローカルマシンで実行する上で重要になってくるのがグラフィックボードです。
Stable Diffusionでイラストを生成するために実行される推論処理を、グラフィックボード上のGPUを使って大幅に高速化することができます。
トライする回数が増えれば品質の高いイラストが生成される可能性が上がりますので、グラフィックボードは重要です。
Stable Diffusionで使用するためのGPUは2022年に新たにNVIDIAから発売されたRTX4000シリーズのGPUとVRAM12GB以上のものがおすすめです。最近は半導体不足も一服したこともあり、新しい製品ながら価格が下がりつつあります。
また、PCのパーツ交換等ができない方には、RTXを搭載したゲーミングPCがおすすめです。
HP ゲーミングデスクトップPC OMEN by HP 40L RTX 3070 Ti Core i7 16GB 1TB Win11 Pro
Pythonによる自動化、UIの作成
当ブログでもソースコードを公開していますが、Stable Diffusionを使用するためのコードはPythonで簡単に実装することができます。Pythonの初歩的なプログラミングを習得することで、Promptを自動で生成、組み合わせ変更してトライするプログラムを作成したり、他の方が配布されているオープンソースのUIを自分好みにカスタマイズすることも可能です。
Pythonのプログラミングを学びたい方には、初心者からでも挫折することなく習得できるオンラインスクールがおすすめです。

最近ではほとんどのスクールがオンラインに対応しており、好きな時に自宅で自分のペースで学ぶことができます。
まとめ
Stable Diffusion 2.xでもWaifu Diffusionを使ってイラストを生成することができました。
現在Stable Diffusion 1.xは動作しなくなってしまっているようですので、2.x系で活用してみてください。
以下のページで自然言語処理モデルGPT-3を使ったライティングツールCatchyで、Stable DiffusionのPromptを自動生成する方法について解説していますので、あわせてご覧ください。

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