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 の便利さがもはや時代遅れになってしまうのかもしれない。