はじめに
Stable Diffusionのimg2imgで絵力(えぢから)を身につけた気分になりたい。
虎と狐のなんとやらだ。
ファイルの編集
img2img
img2img.py
@@ -40,7 +43,8 @@ def load_model_from_config(config, ckpt, verbose=False):
print("unexpected keys:")
print(u)
- model.cuda()
+ # model.cuda()
+ model.to("mps")
model.eval()
return model
@@ -200,13 +208,29 @@ def main():
model = load_model_from_config(config, f"{opt.ckpt}")
- device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
+ # device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
+ device = torch.device("mps") if torch.backends.mps.is_available() else torch.device("cpu")
model = model.to(device)
pytorch
python3.10/site-packages/torch/nn/functional.py
@@ -2503,7 +2503,7 @@
- return torch.layer_norm(input, normalized_shape, weight, bias, eps, torch.backends.cudnn.enabled)
+ return torch.layer_norm(input.contiguous(), normalized_shape, weight, bias, eps, torch.backends.cudnn.enabled)
結果
7回(世代)繰り返した。
1枚あたり生成時間は20分くらい。
入力
プロンプト
PYTORCH_ENABLE_MPS_FALLBACK=1 python scripts/my_img2img.py --prompt "A gray cat looking at me is standing in front of a tree with green leaves on light green grass under the blue sky" --init-img INIT_IMG_PATH --strength 0.6 --n_samples 1
素晴らしい灰色の猫と木の絵
出力画像
赤枠がそれぞれの世代で選んだもの。それを次の世代の入力にした。
ときどき、生成に失敗するのか黒い画像が生成された。
まとめ
えらいフォトリアルな絵になった。
タッチの指定をプロンプトに入れたほうが良かったかもしれない。