【実験】らくがきをAIでなんとかする【ControlNet】

2024年9月7日

この記事の内容

らくがきをControlNetに突っ込んで、いい感じにできるだろうか?という実験の結果です。

共通設定

プロンプト:入力画像から「Interrogate DeepBooru」で取得したものを修正して使用
ネガティブプロンプト:(worst quality, bad quality:2.0),girl,female
Steps: 20
Sampler: DPM++ 2M SDE Karras
CFG scale: 7
Model: Counterfeit-V3.0_fp16
Denoising strength: 0.5
Clip skip: 2

入力画像

懸念点1:
プリクラとかsnowみたいな感じにデコレーションされているイメージで描きました。こういうプロンプトがあるか分からない(知らない)ので、プロンプトなしで耳とヒゲが維持されるのが目標です。

懸念点2:
右の子の服は海軍式学ランなんですけど、これもプロンプトをどうしていいかわからず指定してないです。(スタンドカラーのジャケット、くらいしか思い浮かばない…)(しかも面倒で入れてない)

懸念点3:
2人いるからプロンプトがうまく効かないかも?LatentCouple(複数人を描くための拡張機能)を使わずにいけるか?

i2i

まず単純にi2iしてみました。

  • 耳:✕ 本物になっている。
  • ヒゲ:✕ ボディペイントになっている。
  • 髪型:○ 分け目や色はだいたい合っている。
  • 配色:○ だいたい合っている。入力画像通り。
  • 左の子のツリ目:△ 2人を見比べると若干ツリ目かな?
  • 右の子の服:✕ 変わりがち。

scribble

「入力画像」をi2iとControlNetに入れました。
preprocessorr: scribble_pidinet
model: control_v11p_sd15_scribble
ControlNet関連のその他数値はデフォルトです。

  • 耳:✕ 本物になっている。
  • ヒゲ:✕ ボディペイントになっている。
  • 髪型:○ 分け目や色はだいたい合っている。
  • 配色:○ だいたい合っている。入力画像通り。
  • 左の子のツリ目:△ 2人を見比べると若干ツリ目かな?
  • 右の子の服:✕ 変わりがち。

i2iのみの場合とあまり変わらないけど、顔はこっちのほうが少し似ています。眉の位置が維持されてるからかな。

softedge

「入力画像」をi2iとControlNetに入れました。
preprocessorr: softedge_pidinet
model: control_v11p_sd15_softedge_fp16
ControlNet関連のその他数値はデフォルトです。

  • 耳:○ 本物になってない!
  • ヒゲ:△ カラフルだけどヒゲに見える?一部崩れがちかも。
  • 髪型:◎ かなり入力画像の通り。
  • 配色:△ 左の子のブレザーとネクタイの色が維持されなくなってしまった。右の子も赤がたくさん入る。
  • 左の子のツリ目:○ ちょっと入力画像に近づいた。
  • 右の子の服:△ シャツ化はしなくなったけど、うまく塗れてない感。

眉と目の間隔がかなり維持されるようになったので、入力画像に近いと感じるようになってきました。髪型もscrribleはAIの絵柄でしたが、softedgeは入力画像の絵柄で生成されています。

canny

「入力画像」をi2iとControlNetに入れました。
preprocessorr: canny
model: control_v11p_sd15_canny
ControlNet関連のその他数値はデフォルトです。

  • 耳:○ 本物になってない!
  • ヒゲ:○ カラフルだけどヒゲに見える。softedgeのような崩れがない。
  • 髪型:◎ かなり入力画像の通り。
  • 配色:△ 左の子の服の色が維持されなくなってしまった。
  • 左の子のツリ目:○ 誰が見てもツリ目!
  • 右の子の服:△ シャツ化はしなくなったけど、うまく塗れてない感。 

自分の絵柄で上手に描いてくれた!っていう感じがしますが、塗り方がぼやぼやして怪しい。(特に首から下)左の子のシャツとブレザーの境目がギザギザしてしまってるのも気になる。

lineart

「入力画像」をi2iとControlNetに入れました。
preprocessorr: lineart_standard (from white bg & black line)
model: control_v11p_sd15s2_lineart_anime
ControlNet関連のその他数値はデフォルトです

  • 耳:○ 本物になってない!
  • ヒゲ:○ カラフルだけどヒゲに見える。崩れもほぼなし。
  • 髪型:◎ かなり入力画像の通り。
  • 配色:○ 左の子のネクタイも赤い色がほぼ復活。
  • 左の子のツリ目:○ 誰が見てもツリ目!
  • 右の子の服:○ ラフだけどシワを塗ってくれるようになった。

上手いかどうかは置いといて鼻のペイントを生成したのはlineartだけ

まとめ

  • プリクラとかsnowみたいな感じにデコレーションしたければプロンプトを探したほうがいいかも。
  • それか別で作って後から合成したほうがいいかも。
  • それでもlineartならまあまあ何とかしてくれる。
  • 絵柄を維持したいならlineartしか勝たん

ControlNetのweightstarting/endingcontrol modeあたりは少しいじってみたんだけど、ControlNetに関してはほぼデフォルトでいいのかなと思いました。入力画像と希望する出力画像によるので、何とも言えないけど。デフォルトになる数字はデフォルトになるだけのことはある、という風に感じました。

Denoising strength上げた方がきれいだけど、上げると分からない部分を自由に描いてくるから、例えば今回だと右の子の服のラインがすごく赤くなる。プロンプトで(左の子用に)赤いネクタイを指定してるのが、侵食して効いてくるんだと思います。

おまけ

i2i、i2i+ControlNetと同じプロンプトを使ってt2iで生成したものです。2boys指定なのに3人いるほうが多い。

これはt2i+ControlNet(canny)です。やっぱりi2iで画像を入れないと配色がバラバラになる。色が決まってないなら、これはこれで楽しいですね。