カラーラフからクリンナップされたイラストを生成する - Stable Diffusion
カラーラフからクリンナップされたイラストを生成する手順の検証をします。
概要
こちらの記事では、ラフ画像からペン入れをしたクリンナップ画像を生成する手順の検証をしました。
この記事では、ラフに色がついたカラーのラフ画像から、ラフのイメージとカラーを反映したクリンナップされたイラスト画像を生成できないかを検証します。
今回は以下の複数の方法を利用します。
- txt2img
- ContorlNet CN-anytest_v3-25000_fp16 を利用
- ContorlNet CN-anytest_v3-50000_fp16 を利用
- ContorlNet CN-anytest_v4-marged を利用
- ContorlNet dart_v2_sft_img_BlurCN_fp16 を利用
- ControlNet_tori29_blur-fp16 を利用
- rough-coatingV1 を利用
- img2img
- ContorlNet CN-anytest_v3-25000_fp16 を利用
- ContorlNet CN-anytest_v3-50000_fp16 を利用
- ContorlNet CN-anytest_v4-marged を利用
- ContorlNet dart_v2_sft_img_BlurCN_fp16 を利用
- ControlNet_tori29_blur-fp16 を利用
- rough-coatingV1 を利用
準備
ラフ画像を準備します。ラフ画像に着色した画像を作成します。下図の画像を用意しました。
続いてラフ画像の題材を表現するプロンプトを作成します。以下のプロンプトとしました。
モデルはAnimagine XL v3.1 を利用します。
Prompt and Settings
Prompt: 1girl, boyish, profile, from side, long thick hoodie, holding a white cup, sitting, masterpiece, white background
Negative Prompt: worst quality, low quality
Sampling method:Euler a, Schedule type:Automatic, Sampling steps: 40
準備したラフ画像を利用しない状態(ControlNetを利用しない状態)で、プロンプトのみで生成した場合の出力結果です。
画像にプロンプトに記述したモチーフは反映されていますが、全体の形状は生成結果ごとにまちまちです。
手順:txt2img
txt2imgのタブを選択し、ControlNetの入力画像に着色したラフ画像を設定します。
Preprocessorは"None"を選択します。Modelを設定します。
Scriptを"X/Y/Z Plot"に設定し、[X type]を"[ControlNet] Weight"に設定し、[X values]を"1.0,0.75,0.66,0.5,0.33,0.25"に設定します。
[Y type]を"Seed"に設定し、[Y values]を"100000,200000,300000,400000,500000,600000"に設定します。
ContorlNet CN-anytest_v3-25000_fp16
ControlNetのモデルに CN-anytest_v3-25000_fp16 を設定した場合の結果が下図です。
ポーズはWeightが0.66以上であれば元のポーズと似たポーズが得られます。0.5を下回ると、ポーズの変化が大きくなります。
また、カラーリングはほとんど反映されない状況です。色に関する指定をプロンプトに含める必要がありそうです。
ContorlNet CN-anytest_v3-50000_fp16
ControlNetのモデルに CN-anytest_v3-50000_fp16 を設定した場合の結果が下図です。
ポーズはWeightが0.66以上であれば元のポーズと似たポーズが得られます。0.5を下回ると、ポーズの変化が大きくなります。
カラーリングはほとんど反映されない状況です。色に関する指定をプロンプトに含める必要がありそうです。
ContorlNet CN-anytest_v3-25000_fp16より、ラフの形状の反映が強い傾向があります。
ContorlNet CN-anytest_v4-marged
ControlNetのモデルに CN-anytest_v4-marged を設定した場合の結果が下図です。
ポーズはWeightが0.66以上であれば元のポーズと似たポーズが得られます。0.5を下回ると、ポーズの変化が大きくなります。
カラーリングはほとんど反映されない状況です。色に関する指定をプロンプトに含める必要がありそうです。
ContorlNet dart_v2_sft_img_BlurCN_fp16
ControlNetのモデルに dart_v2_sft_img_BlurCN_fp16 を設定した場合の結果が下図です。
ポーズはWeightが0.5以上であれば元のラフと同様のポーズが得られます。0.5を下回ると、ポーズ自体が変化してしまいます。
また、カラーリングはSeedの値によって変化があり、元の入力画像のカラーは反映されにくい結果です。
元のラフの形状を生かす生成結果にするには、Weight0.66から0.5程度の範囲を利用するのが良さそうです。強い補正を求める場合は0.33程度で生成数を増やして
選別する方法でも良さそうです。
ControlNet_tori29_blur-fp16
ControlNetのモデルに ControlNet_tori29_blur-fp16 を設定した場合の結果が下図です。
Weightが0.66以上では特徴的な模様が出力されます。
ControlNetの効果がピーキーな印象があるため、0.5以下の値を細かく調べます。"0.5, 0.45, 0.4, 0.33, 0.3, 0.25, 0.2, 0.1, 0.05" の値で調べます。
結果は下図です。Seedの値によっては入力画像が反映されにくいものもあります。0.3を下回ると、入力画像はほとんど反映されない結果となりました。
ちょっとしたWeightの違いで結果に大きな違いが出るため、ピーキーなContorlNetモデルの印象です。
rough-coatingV1
ControlNetのモデルに ControlNetXL-rough-coatingV1 を設定した場合の結果が下図です。
元のラフの線が残る画像が生成されます。Weight 0.5程度でもラフ感が残ります。Weight 0.33程度まで下げると、
線が整理されますが、元の構図と違う画像が生成される場合もあります。また、入力画像のカラーは反映されにくい傾向です。
ControlNetのEnding Control Stepを0.75に設定した場合の結果です。
ControlNetのEnding Control Stepを0.75に設定した場合の結果です。Weight 0.5程度で線が整理された結果になります。
ControlNetのEnding Control Stepを0.75に設定した場合の結果です。Weight 1.0程度でも線が整理された結果になりますが元の形状から変化する部分も目立ちます。
手順:img2img
txt2imgのタブを選択し、ControlNetの入力画像に着色したラフ画像を設定します。
Preprocessorは"None"を選択します。Modelを設定します。
ContorlNet CN-anytest_v3-25000_fp16
ControlNetのモデルに CN-anytest_v3-25000_fp16 を設定した場合の結果が下図です。
Denoising strength が0.75の場合の結果です。
Weightが0.5以上では線が荒れ気味なため、クリンナップされた結果を生成するには0.33以下が良さそうです。
カラーは比較的反映されますが、髪の毛は色の振れ幅が大きいです。
Denoising strength が0.9の場合の結果です。
Weightが0.66以上では線が荒れ気味なため、クリンナップされた結果を生成するには0.5以下が良さそうです。
カラーは比較的反映されますが、髪の毛は色の振れ幅が大きいです。Denoising strength 0.75より強く補正される印象があります。
ContorlNet CN-anytest_v3-50000_fp16
ControlNetのモデルに CN-anytest_v3-50000_fp16 を設定した場合の結果が下図です。
Denoising strength が0.75の場合の結果です。
Weightが0.5以上では線が荒れ気味なため、クリンナップされた結果を生成するには0.33以下が良さそうです。
カラーは比較的反映されますが、髪の毛は色の振れ幅が大きいです。CN-anytest_v3-25000_fp16との違いはそれほど大きくないです。
Denoising strength が0.9の場合の結果です。
Weightが0.5以上では線が荒れ気味なため、クリンナップされた結果を生成するには0.33以下が良さそうです。
カラーは比較的反映されますが、髪の毛は色の振れ幅が大きいです。CN-anytest_v3-25000_fp16との違いはそれほど大きくないです。
ContorlNet CN-anytest_v4-marged
ControlNetのモデルに ContorlNet CN-anytest_v4-marged を設定した場合の結果が下図です。
Denoising strength が0.75の場合の結果です。
Weightが0.66以上では線が荒れ気味なため、クリンナップされた結果を生成するには0.5以下が良さそうです。
カラーは比較的反映されますが、髪の毛は色の振れ幅が大きいです。CN-anytest_v3 より強くクリンナップされる印象です。
Denoising strength が0.75の場合の結果です。
Weightが0.75以上では線が荒れ気味なため、クリンナップされた結果を生成するには0.66以下が良さそうです。
カラーは比較的反映されますが、髪の毛は色の振れ幅が大きいです。CN-anytest_v3 より強くクリンナップされる印象です。
ContorlNet dart_v2_sft_img_BlurCN_fp16
ControlNetのモデルに dart_v2_sft_img_BlurCN_fp16 を設定した場合の結果が下図です。
Denoising strength が0.75の場合の結果です。
Weightが0.5以上では線が荒れ気味なため、クリンナップされた結果を生成するには0.33以下が良さそうです。
カラーは比較的反映されますが、髪の毛は色の振れ幅が大きいです。
Denoising strength が0.9の場合の結果です。
Weightが0.66以上では線が荒れ気味なため、クリンナップされた結果を生成するには0.5以下が良さそうです。
カラーは比較的反映されますが、髪の毛は色の振れ幅が大きいです。Denoising strength 0.75より強く補正される印象があります。
ControlNet_tori29_blur-fp16
ControlNetのモデルに ControlNet_tori29_blur-fp16 を設定した場合の結果が下図です。
Denoising strength が0.75の場合の結果です。
Weightが0.66以上では特徴的な模様が出力されます。かなりフラット感の強い画像が生成される傾向です。
Denoising strength が0.75の場合の結果です。
Weightが0.66以上では特徴的な模様が出力されます。
ControlNetの効果がピーキーな印象があるため、0.5以下の値を細かく調べます。"0.5, 0.45, 0.4, 0.33, 0.3, 0.25, 0.2, 0.1, 0.05" の値で調べます。
Denoising strength が0.75の場合の結果です。やや輪郭線が太く出力されます。Weightが0.2以下になると輪郭線が細くなります。
Weightが低くなると、輪郭の大まかな形状は入力画像通りですが、ポーズが入力画像と異なるケースも見られます。
Denoising strength が0.9の場合の結果です。やや輪郭線が太く出力されます。Weightが0.2以下になると輪郭線が細くなります。
Weightが低くなると、輪郭の大まかな形状は入力画像通りですが、ポーズが入力画像と異なるケースが多くなります。
(カップを持つ手が入力画像では左手ですが、生成結果では右手になり逆になります。)
rough-coatingV1
ControlNetのモデルに rough-coatingV1 を設定した場合の結果が下図です。
Denoising strength が0.75の場合の結果です。
ラフ感が残る画像生成結果になります。カラーは元の画像のカラーを反映しますが、髪の毛の色は元のカラーからの振れ幅が大きい印象です。
ControlNetのEnding Control Stepを0.75に設定した場合の結果です。
ControlNetのEnding Control Stepを0.5に設定した場合の結果です。Weightが0.33以下になると線が整理される結果になります。
ControlNetのEnding Control Stepを0.25に設定した場合の結果です。Weightが0.33以下になると線が整理される結果になります。
Denoising strength が0.9の場合の結果です。輪郭線の色の変化が大きい印象です。ラフ感が残る画像生成結果になります。
ControlNetのEnding Control Stepを0.75に設定した場合の結果です。Weightが0.33以下になると線が整理される結果になります。
ControlNetのEnding Control Stepを0.5に設定した場合の結果です。
ControlNetのEnding Control Stepを0.25に設定した場合の結果です。全体的に線が整理される結果になります。
WeightやEnding Control Stepが低い値でも入力画像の形状を反映しているため、
ControlNetの適用を弱くしたほうが強く補正され、クリンナップされた画像が出力できる傾向になります。
追加の検証:mistoline
mistolineでの結果も検証します。Preprecessorは"Softedge_anyline"を利用します。
Denoising strength が0.75の場合の結果です。形状はContorlNetの入力画像とほぼ変わらず、Weightが下がるとモデルのペイントが強く反映される結果になりました。
カラーはControlNet部分はエッジの線のみになってしまうため反映されず、img2imgの入力カラーが反映される状態となります。髪の毛の色の振れ幅が大きいです。
Denoising strength が0.9の場合の結果です。形状はContorlNetの入力画像とほぼ変わらず、Weightが下がるとモデルのペイントが強く反映される結果になりました。
評価・所感
色付きのラフ画から、クリンナップされたイラストが生成できるかを検証しました。
ControlNetのdart_v2_sft_img_BlurCN_fp16, CN-anytest_v3, CN-anytest_v4 いずれのモデルを利用した場合でも、ラフ画像のポーズや構図を維持したクリンナップされた
イラストを生成できました。使用するモデルやContorlNetのWeightの値により、元の画像からの形状の変化や色の変化の違いがあるため、
求める生成画像の結果に合わせてもデルやパラメータの調整をする必要がありそうです。
大きな傾向としては、モデルの持つペインティングスタイルを生かして着色するのであれば、txt2imgを利用し、色をプロンプトで指定する方式が良さそうです。
一方、元のラフ画像の塗りのテイストやカラーをより強く反映したい場合は、img2imgを利用して画像生成する方式が良さそうです。
きれいにクリンナップされた画像を生成する場合には、もう少し線を整理した状態のラフ画像を入力したほうが生成結果の品質を上げられそうです。
また、色の振れ幅が大きくなる結果になったため、色を一致させたい場合は
IP-Adapterなど別の機能と組み合わせて画像生成を実行する必要がありそうです。
加えてプロンプトに色指定のワードを加える必要もありそうです。
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。