【画像作成AI】NSFWフィルタを無効化したいのでStable Diffusionをローカルに構築
少し前からテキストや画像から新しく画像を生成してくれるAI、Stable Diffusionのローカルインストール方法やアプリが公開されています。
正直、ちょっと使ってみるだけの場合はアプリやwebサービスを使った方が環境構築も無く、早く便利に使えます。
ですが、Stable Diffusionの初期設定ではNSFW(職場閲覧注意)フィルタが入っています。
試してみるだけでは問題ありませんが、やっぱりフィルタを無効化した結果も知りたいと思ってしまうのは私だけでしょうか?
なので、フィルタを無効化した画像を作りたいだけでローカル環境を作りました。
と言うか、それ以外はローカル環境を作るメリットが無いかもしれません…。
環境構築の手順(参考サイト)
- Google Colaboratoryを使った方法
- GPUはあってもメモリが少ない場合のインストール(単精度モデルを使用)
- 倍精度モデルモデルを無理やりCPUで動かす方法
- Openvinoを使ってCPUで動かす方法
最後のOpenvinoを使った方法は、更新の影響か参考サイト通りでは実行できませんでした。
1からStable Diffusion実行環境を構築
ハードウェア:GALLERIA GR2060RGF-T(CPU:Ryzen7 4800H、GPU:GeForce RTX 2060 GDDR 6GB)
2021年12月に買ったPCでGPUが載っていますが、メモリは6GBとStable Diffusionをそのまま使うには足りません。
そのため上記の「GPUはあってもメモリが少ない場合のインストール(単精度モデルを使用)」を参考にして環境を作ります。
Visual Studio Community 2022のインストール
CUDA Toolkitのインストールに必要になるため、先にコンパイラ(Visual Studio)をインストールします。
Visual Studioを使わない場合は開発環境のインストールだけでも問題ありませんが、良くわからなかったのでVisual Studio Community 2022をインストールしました。
CUDA Toolkitのインストール
2022年9月時点の最新はCUDA Toolkit 11.7ですが、PyTorchが11.6までの対応のためArchiveから11.6をインストールします。
Python開発環境の構築
四苦八苦しながら、何とかVisual Studio Codeで実行できるようになりました。
モジュールのインストール
必要に応じてpipをアップデートしてください。
PyTorchのインストール(PyTorch公式:https://pytorch.org/)
python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
transformers・Diffusers・ftfyのインストール
python -m pip install transformers diffusers ftfy
学習済みモデルのダウンロードとテスト
参考サイト通りにHugging Faceのアカウント作成からアクセストークンを入手します。
テストコード
こちらもprompt以外は参考サイト通りです(まだフィルタは無効化していません)。
promptはこちらを参考にしました。
import torch
from diffusers import StableDiffusionPipeline
from torch import autocast
MODEL_ID = "CompVis/stable-diffusion-v1-4"
DEVICE = "cuda"
YOUR_TOKEN = "コピーしたアクセストークン"
pipe = StableDiffusionPipeline.from_pretrained(MODEL_ID, revision="fp16", torch_dtype=torch.float16, use_auth_token=YOUR_TOKEN)
pipe.to(DEVICE)
prompt = "A young girl white hair in front of a fan of her bedroom, in a heat day, by dustin nguyen, akihiko yoshida, greg tocchini, greg rutkowski, cliff chiang, 4 k resolution, trending on artstation"
with autocast(DEVICE):
image = pipe(prompt, guidance_scale=7.5)["sample"][0]
image.save("test.png")
結果
画像作成時間:約15秒/1枚
単精度モデルで計算量が少ない事もあり1枚の作成時間も短く済みます。
それっぽい画像を作ってくれたのでテストは終了です。
NSFWフィルタの解除
フィルタの解除方法も記載されていたので、素直にそのまま実施します。
実行結果
ここに載せて何かあると困るので、念のためアダルトOKのサイトを作ってそちらに掲載しています。
公開は中止しました。
順次コンテンツは増やす予定ですが、今の時点はテスト結果だけです。
FC2の登録を間違えてたので登録し直すまでリンクは消しておきます。
NvidiaのGPUが必要にはなりますが、色々と試すことができると世界が広がりそうな気がします。
ディスカッション
コメント一覧
まだ、コメントがありません