【ControlNet】【canny2image】【Anything-V4】エッジ検出の違いで生成画像はどう変わるか?

はじめに

前回ControlNetのcanny2imageにおけるCanny法によるエッジ検出の設定について書きました。
touch-sp.hatenablog.com
実際に結果がどう変わるかをAnything-V4を使って検証しました。

テーマは「手」をきれいに出力することです。

元画像


元画像はぱくたそから使わせて頂きました。
こちらの画像です。

結果

生成画像のサイズは768x768です。

一番右の画像は生成画像から手の部分を切り取って拡大したものです。

threshold1=25

threshold1=25 threshold2=25


threshold1=25 threshold2=50


threshold1=25 threshold2=100


threshold1=25 threshold2=150


threshold1=25 threshold2=200


threshold1=25 threshold2=250


threshold1=50

threshold1=50 threshold2=50


threshold1=50 threshold2=100


threshold1=50 threshold2=150


threshold1=50 threshold2=200


threshold1=50 threshold2=250


threshold1=100

threshold1=100 threshold2=100


threshold1=100 threshold2=150


threshold1=100 threshold2=200 (こちらがデフォルトです)


threshold1=100 threshold2=250


threshold1=150

threshold1=150 threshold2=150


threshold1=150 threshold2=200


threshold1=150 threshold2=250


threshold1=200

threshold1=200 threshold2=200


threshold1=200 threshold2=250


threshold1=250

threshold1=250 threshold2=250


感想

適切な値は元画像によって異なると思います。

今回の場合はデフォルトのままだと全然ダメでした。

ControlNetのcanny2imageでは手がきれいに描画されるようにpromptをいろいろいじるよりもエッジ検出にこだわった方が簡単ですしうまくいくと思います。

今回やったこと

こちらのスクリプトを使用しました。→「canny2image.py

python canny2image.py ^
  --model model\anything-v4.0 ^
  --vae vae\anime2_vae ^
  --prompt prompt.txt ^
  --image sample.jpg

注意点

こちらのモデルを「controlnet」フォルダ内にダウンロード済みです。

Anything-v4.0を「model」フォルダ内にダウンロード済みです。

Anything-v4.0用のVAEを「vae」ファルダ内に作成済みです。
(作成方法はこちらを参照して下さい。)

関連記事

touch-sp.hatenablog.com