見出し画像

【実践!ControlNet Tile画像合成】素材画像とパラメータ設定の検証【StableDiffusion】


1.自然言語による生成の弱点?

現状、StableDiffusionでの画像生成においては多くの人により様々なmodel(checkpoint)、拡張機能、そしてPromptが作成・公開され、画像としてはどんなものでも生成できてしまうかのような環境になってきました。

しかしそんな環境の中でも、自分がイメージしたもの、作りたいものを再現できるかどうかはまた別の話です。

生成内容の指示の中心となるのがpromptです。
このpromptは、日常使っている言葉(自然言語)を使用できる点が現在の生成AIの特徴であり、普及の最大の要因となっています。

しかし裏を返せば「言葉で表現できる範囲でしか指定できない」ということでもあります。
これは、画像生成において言えば「抽象的なイメージの再現が困難」ということにつながります。

ここを解決する手段の一つとしてControlNetの各種機能が使えます。
今回は、その中のTileによる画像合成をご紹介します。

2.ControlNet Tileでできる画像合成

ControlNetのTile機能は、別の拡張機能「TileDiffusion」と合わせて画像の高解像度化として説明されることがあります。

しかしこの機能は、画像の高解像度化だけでなく、別画像と合成するような形での生成を実行することが可能です。

以下のみしもさんの記事で、テキストやQRコードとの合成例が紹介されています。

この別画像との合成による生成方法は、私がここ3~4か月くらいはほぼずっと検証・実行している方法であり、通常のテキストによるPromptとは別の「画像Prompt」(※)ともいうべきものだこれはと考えています。

というのも、この方法によって自然言語のpromptでは指定しきれない、
抽象的な形状や色調のイメージを生成結果に反映(指定)することができる
からです。

 ※ControlNetの「IP-Adapter」画像からpromptのとなる要素・概念を
  抽出するような機能を持っていますが、抽象的な(言語Promptでは
  表現できない)画像の色味や形を反映はうまくいきません。
  また形のみであれば、canyやline、depthなど他のControlNetの機能でも
  反映が可能です。

今回の記事では、特定の素材画像をベースとした実践例と、ControlNet上での各設定による変化・影響を紹介していきます。

3.生成例

今回の検証は、以下の投稿に使用した画像と同様の生成方法を用います。
こちらは、AI Girls Collection 2ndとして開催される予定の紅白AI合戦の宣伝イメージ用で作成した画像です。


他にも、同様の方法で作成した画像をいくつか紹介します。
(後述の検証条件とは若干異なる設定での生成のものも含まれます)


4.合成の素材画像

今回、素材画像として使用するのはこちらです。
上の例もこちらを使用しています。

 ※こちらの画像はAI生成において改変(色や形の加筆・修正など)を
  含め、素材画像として(公序良俗に反しない限りで)使っていただいて
  構いません。
  本記事の内容の再現など、お試しいただけたらと思います。

素材画像の作成は、ibisPaintというアプリを使用しています。
私の場合は、iPadでペンを使って作成しています。


5.生成の基本設定(今回の前提条件)

この後の検証における基本的な設定部分は以下の通りです。
なお、3項で載せた生成例はLoraを一部使っていますが、今回の検証ではLora使用なしで行います。


  • Stable Diffusion:v1.6.0

  • Model:chilled_remix_v2(以下にリンクあり)

  • Sampling method:DPM++ 3M SDE Exponential

  • Smpling steps:36

  • Width*Hight:512*768(Upscale前)

  • Hires fix:あり、Upscaler:R-ESRGAN 4x+

  • Hires steps:0、Denoising strength:0.54、Upscale by:2

  • CFG Dcale:7


また、promptは以下のような構成としています。

(品質系),
(1girl, 23years old, she raise both hands high, she stand on one leg, she raise one foot high),
(medium hair with bangs:1.2),
(((red and white)) hair, wearing (red and white) long dress skirt:1.2),
(inside of antique palace, detailed background, cinematic light from front:1.2)

2行目のポーズに関するところは、私が別記事(後記)で紹介している、とりあえずの生成用に個人的に使い勝手が良いと感じているものです。

また4行目で、髪色と服の色に赤・白の指定しています。
特に髪についてはtileからだけでは反映しづらい部分なので、具体的な生成結果のイメージがある場合には指定を入れた方が良いと思います。

一方で服の模様や背景などは比較的反映しやすいので、今回の例では指定をしていません。

また、ControlNetの基本設定は以下の通りです。


  • ControlNet:Tile/Blur

  • PixcelPerfect:on

  • Preprocessor:tile_resample

 ※他、6項の調整項目以外は初期設定どおり


生成時には、プロンプト等を設定した上でControlNetの機能をEnableにして素材画像をセットし、上記設定も行って生成していくことになります。

6.比較検証条件

主に設定を変更するのは、以下の2点です。


Control Weight:0.05~1.6の範囲で調整(0.05刻み)
Starting Control Steps:0.1~0.5の範囲で調整(0.02刻み)
 ※以下、それぞれ「Weight」「Start」と略記します。


Weightはその値が高いほど、Startは低いほど素材画像の影響が強くなります。
(Startは、生成のStepのどの段階からControlNetを効かせるかの値のため)

この2項目を変えながら、x/y plotで比較作成していきます。

7.比較検証

以下、実際の比較画像を載せていきます。
数が多いので、Weightを0.4ごと、Startを0.1ごとに区分しています。
適宜、各画像をクリックして拡大しながら見てもらうと良いかと思います。

(1ー1)Weight:0.05~0.4、Start:0.1~0.18

Weightが低いので、Startが低くてもあまり素材画像の影響がみられない画像が多いです。Weight0.3くらいから若干背景を中心に影響が見えてきます。

Startは低いがWeightも低いので影響は限定的

(1-2)Weight:0.45~0.8、Start:0.1~0.18

このStartの値だと、Weightが0.55あたりから過剰な効きになっている画像が多いですね。背景が特に顕著です。
左下のあたりはまだ自然な範囲のものが残ってます。

途中から影響が強くなりすぎてくる

(1-3)Weight:0.85~1.2、Start:0.1~0.18

ここまでくると、ほぼ素材画像に浸食されてます。
素材画像が相当完成形に近い画像でない場合は、避けた方が良さそうです。

ほとんど素材画像に食われる


(2-1)Weight:0.05~0.4、Start:0.2~0.28

Startを0.1高くしました。Weightはまた低い値に戻しています。
つまり先ほど掲載した(1-1)よりも、効きづらい設定です。
そのため、素材画像の影響は小さい結果となっています。

Startを0.2からに変更

(2-2)Weight:0.45~0.8、Start:0.2~0.28

先ほどの(1-2)では既に多くの画像が破綻状態でしたが、バランスよく混ざった画像も出てきました。汎用性・実用性の高い設定のようです。
髪の毛が2色になるにはある程度Weightが高い値になっていかないと難しいようですね。

いい感じに混ざってく

(2-3)Weight:0.85~1.2、Start:0.2~0.28

ここまでくると、また露骨な効きになってきますね。
使える設定がかなり限られてくるラインです。

バランスが崩れる境目

(2-4)Weight:1.25~1.6、Start:0.2~0.28

ここまでくると、(1-3)と同様に素材画像の浸食がかなり強いです。
Start0.28の場合はかろうじてprompt側の効きがみられます。
それでもやはり、素材画像を相当活かしたい場合でないと使うのは難しそうです。

バランスの悪い画像の割合が高い


(3-1)Weight:0.05~0.4、Start:0.3~0.38

Startをさらに0.1高くしました。
ほとんど素材画像の影響は見られません。

Startを0.3からに変更。素材画像の影響がかなり少ない

(3-2)Weight:0.45~0.8、Start:0.3~0.38

徐々に効きが明確になってきます。
赤みの色合いも大分変ってくるので、イメージしたものを再現するには(本検証の刻み幅以上に)微調整が必要なことが感じられます。

好みが人により分かれそうなライン

(3-3)Weight:0.85~1.2、Start:0.3~0.38

ここだと赤の色合いがわかりやすく比較できますね。
Weightのよりも、Startのによる影響が大きそうです。
まず背景の赤がややくすんできて、遅れて人物・服装の赤がくすみ始める感じになっています。

少し扱いが難しいライン

(3-4)Weight:1.25~1.6、Start:0.3~0.38

このWeightになると、やはり素材画像の影響の露骨さが目立ちます。
それでも(1-3)や(2-4)の一部と異なり、prompt側の形状は保っているので、活用の仕方はありそうです。

崩れはしないものの、素材画像の影響がかなり強い


(4-1)Weight:0.05~0.4、Start:0.4~0.5

さらにStartを0.1高くしました。
このStartでこのWeightだと、ほとんど素材画像の影響は見られません。

Startを0.4~に変更。素材画像の影響がほとんど感じられない

(4-2)Weight:0.45~0.8、Start:0.4~0.5

このWeightでもあまり影響はでませんね。

やや赤みが強くなるが、素材画像の影響はまだ小さい

(4-3)Weight:0.85~1.2、Start:0.4~0.5

ここまでWeightを高くするとようやく影響が出てきます。
しかし若干画像全体にメリハリがなくなる印象なので、使い方には少し注意が必要ですね。

ようやく影響がみられるが、背景とのバランスが難しい

(4-4)Weight:1.25~1.6、Start:0.4~0.5

ここまでWeightを上げてもpromptによる形状がしっかり残っています。
promptによる概形の生成は、0.4までで大体できているということかもしれません。
素材画像によっては使える範囲といえると思います。

素材画像やPrompt次第では使いようがありそう


8.その他の調整

今回の検証ではWeigtとStartのみ調整・比較を行いましたが、基本的な生成とControlNet(tile_resample)の設定としては他に
・CFG Scale
・End Steps
・Control Mode
というあたりの設定は生成結果に影響します。
またそもそも、promptの見直しでも当然大きく変わります。

その他にも、最近私が行っていることとしてはさらに、
複数の素材画像を多重使用する
・ControlNetのその他の機能(TypeやPreProcessor)を併用する
CDTunerという拡張機能を併用する(以下にリンクあり)

など、さらなる掛け合わせの沼にはまっています。
(その影響でなかなかプロンプト側の工夫に時間をかけられない…)


9.素材画像の扱い

素材画像は、個人的には本来はあまり公開しない方が良いかなと思っています。
というのも、素材画像がわかっていると、生成画像の見方も変わってしまう感覚があるからです(上記の比較検証の図を見てもらうと、なんとなくわかるかと思います)。

生成された画像はそれ単独で見ていただく方が、純粋に楽しめるかなと思うので、基本的には私は公開しない方向でやっていこうかなと思います。
今回や過去記事では、検証と実施方法の展開という観点で公開しました)。

だからと言って、他の方が同様の生成を行って、その素材画像を公開することには何も文句もないし、問題もないと思っています
そこは生成者の見せ方に依るところなので、うまく選択してもらえれば良いかと思います。

10.おわりに

いかがだったでしょうか。こだわり始めるとだいぶ沼になることが感じていただけたのではないかと思います。

素材画像の内容や、完成させたいイメージによって適切な設定は変わってきますので、調整時の参考にしてもらえたらと思います。

そもそも、素材画像は一から自由に作れるので、イメージするもの次第でいくらでも工夫の余地がありそうです。

また明日(本記事公開日翌日)、AI Girls CollectionCOLOR EXHIBITIONとして、GREENをテーマとした投稿が以下で行われます。
私も参加させていただいておりますので、ぜひご覧ください!
私が生成したものは、本記事のTile合成を応用した画像となっています。


<皆様へのお願い!>
ほぼ趣味で(※)やっているとはいえ、生成環境の維持費用(私の場合は主にColab利用料)が馬鹿にできなくなってきました。
(※仕事でも生成AI関連に関わるので、その勉強も兼ねて始めました)
もし今回の作品や記事を気に入っていただけましたら、本ページ下部の
「気に入ったらサポート」からご支援をお願いいたします!


記事内容やX(Twitter)等での投稿画像を気に入っていただけましたら、よろしければサポートお願いします! いただいたサポートは生成環境の維持費に使わせていただきます!