Stable Diffusionをインストールすると毎度以下の順にコマンドを実行する必要があります。
少し面倒くさいので、今回はバッチファイルで実行できるようにしてみます。
cd Stable Diffusionのフォルダパス
conda activate ldm
call python scripts/txt2img.py --prompt "a cute himalayan cat" --ckpt checkpoints/v2-1_512-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference.yaml --H 512 --W 512 --n_iter 4 --n_samples 1 --device cuda
今回の記事の内容
- バッチファイルテクニック
- 小細工無しでシンプルなバッチファイルの作成
- SEED値をランダムに発生させたい
- プロンプトを外部ファイルに出して制御したい
- 出力先を変更したい
- 管理者権限で実行したい
- バッチファイルの管理者権限で実行(ショートカット)
- バッチファイルに管理者権限で実行(コマンド)
バッチファイルテクニック
小細工無しでシンプルなバッチファイルの作成
とりあえず一番シンプルな方法でバッチファイルにしてみます。
@echo off
rem -- Stable Diffusionのフォルダを指定する ---
set CURRENT_DIR=C:\stablediffusion-main\stablediffusion-main
rem -- Anaconda Promptの実行ファイルパスを指定する --
set CONDA_PATH=C:\ProgramData\Anaconda3\Scripts\activate.bat
call cd %CURRENT_DIR%
call %CONDA_PATH%
call conda activate ldm
call python scripts/txt2img.py --prompt "a cute himalayan cat" --ckpt checkpoints/v2-1_512-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference.yaml --H 512 --W 512 --n_iter 4 --n_samples 1 --device cuda
pause
ファイル名:stablediffusion.bat (ファイル名は適当で構いません)
エンコード:Shift-JIS
バッチファイルを起動する時は管理者権限で実行する必要があります。
SEED値をランダムに発生させたい
以下SEED値をランダムに発生させる場合の処理です。
@echo off
rem -- Stable Diffusionのフォルダを指定する ---
set CURRENT_DIR=C:\stablediffusion-main\stablediffusion-main
rem -- Anaconda Promptの実行ファイルパスを指定する --
set CONDA_PATH=C:\ProgramData\Anaconda3\Scripts\activate.bat
call cd %CURRENT_DIR%
call %CONDA_PATH%
call conda activate ldm
call python scripts/txt2img.py --prompt "a cute himalayan cat" --ckpt checkpoints/v2-1_512-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference.yaml --H 512 --W 512 --n_iter 4 --n_samples 1 --device cuda --seed %random%
pause
ファイル名:stablediffusion.bat (ファイル名は適当で構いません)
エンコード:Shift-JIS
プロンプトを外部ファイルに出して制御したい
@echo off
rem -- Stable Diffusionのフォルダを指定する ---
set CURRENT_DIR=C:\stablediffusion-main\stablediffusion-main
rem -- Anaconda Promptの実行ファイルパスを指定する --
set CONDA_PATH=C:\ProgramData\Anaconda3\Scripts\activate.bat
rem -- プロンプト用ファイルパスを指定する --
set PROMPT_PATH=C:\Work\promptfile.txt
call cd %CURRENT_DIR%
call %CONDA_PATH%
call conda activate ldm
call python scripts/txt2img.py --ckpt checkpoints/v2-1_512-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference.yaml --H 512 --W 512 --n_iter 4 --n_samples 1 --device cuda --seed %random% --from-file %PROMPT_PATH%
pause
ファイル名:stablediffusion.bat (ファイル名は適当で構いません)
エンコード:Shift-JIS
a cute himalayan cat
a cute gray himalayan cat
ファイル名:promptfile.txt (ファイル名は適当で構いません)
エンコード:UTF-8
出力先を変更したい
@echo off
rem -- Stable Diffusionのフォルダを指定する ---
set CURRENT_DIR=C:\stablediffusion-main\stablediffusion-main
rem -- Anaconda Promptの実行ファイルパスを指定する --
set CONDA_PATH=C:\ProgramData\Anaconda3\Scripts\activate.bat
rem -- プロンプト用ファイルパスを指定する(任意で作成) --
set PROMPT_PATH=C:\Work\promptfile.txt
rem -- ファイルの出力先を指定する --
set OUTDIR=C:\result
call cd %CURRENT_DIR%
call %CONDA_PATH%
call conda activate ldm
call python scripts/txt2img.py --ckpt checkpoints/v2-1_512-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference.yaml --H 512 --W 512 --n_iter 4 --n_samples 1 --device cuda --seed %random% --from-file %PROMPT_PATH% --outdir %OUTDIR%
pause
ファイル名:stablediffusion.bat (ファイル名は適当で構いません)
エンコード:Shift-JIS
ファイルの出力先:C:\result
a cute himalayan cat
a cute gray himalayan cat
ファイル名:promptfile.txt (ファイル名は適当で構いません)
エンコード:UTF-8
管理者権限で実行したい
バッチファイルの管理者権限で実行(ショートカット)
毎度右クリック→管理者として実行は面倒くさい。
そういう場合は以下の手順で管理者権限で実行できるようにします。
ショートカット作成 → プロパティ → ショートカット → 詳細設定 → 管理者として実行
バッチファイルに管理者権限で実行(コマンド)
ショートカットをつくるのがイヤとかそういう事情もあるかと思います。知らんけど。
そういう場合は以下のコードを埋め込みます。
@echo off
whoami /priv | find "SeDebugPrivilege" > nul
if %errorlevel% neq 0 (
@powershell start-process %~0 -verb runas
exit
)
rem -- Stable Diffusionのフォルダを指定する ---
set CURRENT_DIR=C:\stablediffusion-main\stablediffusion-main
rem -- Anaconda Promptの実行ファイルパスを指定する --
set CONDA_PATH=C:\ProgramData\Anaconda3\Scripts\activate.bat
call cd %CURRENT_DIR%
call %CONDA_PATH%
call conda activate ldm
call python scripts/txt2img.py --prompt "a cute himalayan cat" --ckpt checkpoints/v2-1_512-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference.yaml --H 512 --W 512 --n_iter 4 --n_samples 1 --device cuda
pause
ファイル名:stablediffusion.bat (ファイル名は適当で構いません)
エンコード:Shift-JIS
確認してくれるようになります。
まとめ
毎度手打ちは面倒なのでバッチファイルで実行する方法を記述しました。
あらかじめたくさんコマンドを用意して放置したい場合などにも使えます。
ご参考まで。
おわり
コメントを残す