ローカルPC (windows 11)でstable diffusionを動かしました。その覚書です。
“stable diffusion install” などのキーワードで検索すると、web GUIで操作ができる AUTOMATIC1111 のインストール方法が見つかります。インストールも簡単で使いやすそうなのですが、Python 3.10.6 をインストールすることが前提になるので、もともとPythonを別なバージョンでインストールしていると、どうやるかが難しいです。
そこで、ここでは、本家のstable diffusion をinstall しました。conda で仮想環境を作って、そこで動かすことができました。
環境
ハード
* CPU: 11th Gen Intel(R) Core(TM) i5-11400F @ 2.60GHz 2.59 GHz
* GPU: NVIDIA GeForce RTX 3060 Ti, メモリ8GB
ソフト
* OS: windows 11 Home
* pythonはminiconda でinstall 済
* git はinstall 済
環境構築の情報
インストール方法
以下、基本的には公式の手順。
コマンドプロンプトから、インストールしたいフォルダの上まで移動し、以下のコマンドでgit でクローン。stable_diffusion というフォルダにファイルがコピーされる。
[code]
git clone https://github.com/CompVis/stable-diffusion.git stable_diffusion
[/code]
以下のコマンドでldm という仮想環境が作られ、そこに環境が作られる。20分以上かかった。
[code]
conda env create -f environment.yaml
[/code]
以下のコマンドでpytorchをアップデート。
[code]
conda install pytorch torchvision -c pytorch
pip install transformers==4.30.0 diffusers invisible-watermark
pip install -e .
[/code]
※公式ではtransformers==4.19.2 だったが、実行時にエラーが出たので、transformers==4.31.0 とした。
学習済のモデルは、別なサイトから手に入れる。Hugging Faceというサイトから、sd-v1-4.ckptをDL(アカウント登録が必要)。4.1GBもあるので注意。stable_diffusionのフォルダに配置。これで準備はOK。
動作テスト txt2img
「a cofee cup on the beach」というプロンプトで画像を生成するには以下のコマンドを実行。
[code]
python scripts/txt2img.py –prompt "a coffee cup on the beach" –plms –ckpt sd-v1-4.ckpt –H 512 –W 256 –n_samples 1
[/code]
結果はこれ。20秒くらいで生成された。
まずまずではないか。
–ckpt でモデルのパスを指定、–Hと–Wは画像のサイズ。–n_samplesは生成する画像の数。
画像のサイズや画像の数を大きくすると、CUDA out of memory というエラーが出るので注意。
また、–seed で乱数のシード値を変えられる。
動作テスト img2img
画像を入力してそれに似た画像を生成することもできる。
これを入力にして、”realistic photo, a young man dancing on a boat, smailing” というプロンプトで画像を作成。
[code]
python scripts/img2img.py –prompt "realistic photo, a young man dancing on a boat, smailing" –init-img inputs/dancing_man2.png –strength 0.8 –ckpt sd-v1-4.ckpt –seed 0
[/code]
20秒くらいでこんなのができた。少しぼわーんとしていておばけっぽい。船の外に立っているし。
–strength は、0から1のパラメータで入力画像にどれくらい寄せるかを指定する。0に近いほど入力画像に近くなる。
こんなものも書いてみた。これを入力にする。
[code]
python scripts/img2img.py –prompt "super realistic photo, Mount Fuji and sea in Japan, summer, strong sunlight" –init-img inputs/fuji.png –strength 0.9 –ckpt sd-v1-4.ckpt –seed 3
[/code]
結果はこれ。写真という感じではないが、上手な絵になった。
コメントを残す