Llamafile で気軽に Stable Diffusion するの続きです。 sdfile-0.8.4 のコマンドオプションを調べると control-net オプションがあります。 今回はこれを使ってみました。
前回 Stable Diffusion で生成したセザンヌ風のコーヒーカップ画像を線画(line art)に変換しました。 左の画像が入力画像で、右が変換後の出力です。
#!/bin/bash
m=v1-5-pruned-emaonly.safetensors
cm=control_v11p_sd15_lineart_fp16.safetensors
inputimg=a-coffee-cup-cezanne.png
prompt="a cup of coffee, simple line art"
outfile=a-coffee-cup.png
steps=50
./sdfile-0.8.14 \
--mode txt2img \
--model $m \
--control-net $cm \
--control-image $inputimg \
--prompt "$prompt" \
--output $outfile \
--steps $steps
肝心のコントロールネット用モデル control_v11p_sd15_lineart_fp16.safetensors は、こちら https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main からダウンロードしました。
このモデルの説明はこちらを参照:
https://github.com/Mikubill/sd-webui-controlnet/wiki/Model-download Stable Diffusion 1.5/2.0 用のControlNetモデルは LARGE/MEDIUM/SMALL がありますが、ここでは MEDIUM を使っています。
sdfile には...
以上の5つを少なくとも入力として与える必要があります。
今度は先ほどコントロールネットで線画にした画像を元に、そこにプロンプトを追加して新たな画像を生成してみます。
#!/bin/bash
m=v1-5-pruned-emaonly.safetensors
cm=control_v11p_sd15_scribble_fp16.safetensors
inputimg=a-coffee-cup-cezanne_line-art.png
prompt="A cup of coffee, plain background, by pencil drawing."
outfile=a-coffee-cup.png
steps=50
./sdfile-0.8.14 \
--mode txt2img \
--model $m \
--control-net $cm \
--control-image $inputimg \
--output $outfile \
--prompt "$prompt" \
--steps $steps
今回新たに必要になった ControlNet のモデル: control_v11p_sd15_scribble_fp16.safetensors は、先ほど同様にこちら https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main からダウンロードしました。
生成された画像:
このように ControlNet の Line art と Scribble を組み合わせて使うことで、ある画像をベースにそこに描かれている内容は維持しつつ何かを変更した画像を作り出すことができる。
この最後の画像に出現した鉛筆を消したければ inpaint のモデル ( control_v11p_sd15_inpaint_fp16.safetensors ) を使えばできるんだろうな、たぶん。
一方で、 このようにとても便利な sdfile ですが、そのうちに 画像生成AI機能搭載のiOS 18.2/iPadOS 18.2/macOS 15.2 がリリースされるので、 それが出てしまうと、sdfile の便利さがもはや時代遅れになってしまうのかもしれない。
Liked some of this entry? Buy me a coffee, please.