元の画像の形状や構図を維持してアップスケールする (ControlNet Tile / Tiled Diffusion を利用)

ControlNet Tile, Tiled Diffusion を利用して、元の画像の形状や構図を維持してアップスケールする手順を紹介します。

概要

こちらの記事ではアップスケールにより画像の解像度を高める手順を紹介しました。 アップスケールの利用により、画像のサイズを大きくでき、細かい描画を追加できます。 一方で、こちらの記事で紹介しているとおり、アップスケールにより、元の画像から、画像の構図が変わってしまったり、 衣類や小物、パーツのデザインが変わってしまう現象が発生します。

構図や小物の形状の変化が許容できる場合は問題ありませんが、許容できない場合もあります。 この記事では、ControlNet Tile と Tiled Diffusion を利用して、元の画像の形状や構図をできるだけ維持して、 アップスケールする手順を紹介します。
ワンポイント
生成時のパラメーターが利用できる場合はこちらの記事の 方法でより、オリジナルの画像に近い状態でアップスケーリングできます。
メモ
ControlNetを利用せずに、Tiled Diffusionのみで、形状を変化させずにアップスケールする手順もあります。 詳しくはこちらの記事を参照してください。

手順: SDXL 利用

事前準備

ControlNet のインストール

CotrolNet 1.1 をインストールします。手順はこちらの記事を参照してください。

ControlNet Tile モデルのインストール

ControlNet Tileのモデルをインストールします。今回モデルは、"xinsir_controlnet-union-promax-sdxl-1.0 [9460e4db]" を利用します。 モデルのダウンロードはこちらの記事を参照して下さい。

元画像 (入力画像)

今回入力画像として、こちらの画像を用意します。解像度が低いため、顔の表情がつぶれ気味です。
今回の入力画像はStable Diffusion 1.5 で生成した画像ですが、生成時のパラメーターは使用しませんので、 手書きのCGやイラスト画像でもアップスケーリングできます。

アップスケーリング

Stable Diffusion WebUIにアクセスします。上部の[img2img]のタブをクリックします。下図の画面に切り替わります。


img2imgの入力画像のフィールドに用意した入力画像を設定します。


ページを下にスクロールし、ControlNetの枠をクリックして開きます。下図の画面が表示されます。




[Control Type]のエリアの[Tile]のラジオボタンをクリックしてチェックをつけます。


[Preprocessor]のコンボボックスに"tile_resample"を選択します。[Model]のコンボボックスに"xinsir_controlnet-union-promax-sdxl-1.0 [9460e4db]"を選択します。


ControlNetパネル上部の[Enable]チェックボックスをクリックしてチェックをつけます。[Pixel Perfect]のチェックボックスもクリックしてチェックをつけます。


ページ上部に戻り、画像の特徴を表すプロンプトを入力します。今回は以下のプロンプトを入力します。
また、モデルはAnimagine XL v3.0を利用します。
Prompt
Prompt: 1girl, standing, full body, blue jacket, white long skirt, Illustration, white background, masterpiece
Negative prompt: worst quality, low quality


出力画像のサイズを設定します。[Resize by]のタブをクリックして選択し、[Scale]の値を"2"に設定します。入力画像の2倍のサイズで画像を生成します。



画像を生成します。


生成画像は下図です。結果が元の画像からあまり変化せず、やや粗い印象です。


ControlNet の Weightの値を下げます。[Contorl Weight]の値を0.5に下げます。


画像生成を実行します。下図の画像が生成されます。


さらに、[Ending Contorl Step]の値を下げると、元の画像から変化が大きくなります。


アップスケール結果の比較

ControlNetのウェイトを下げるほど元画像からの変化が大きくなり、モデルの影響が強まります。
元画像
元画像

Weight:1.0
Weight:1.0

Weight:0.5
Weight:0.5

Weight:0.5 EndingStep:0.5
Weight:0.5 EndingStep:0.5

手順: Stable Diffusion 1.5利用

事前準備

ControlNet のインストール

CotrolNet 1.1 をインストールします。手順はこちらの記事を参照してください。

Tiled Diffusion のインストール

Tiled Diffusionをインストールします。手順はこちらの記事を参照して下さい。

元画像 (入力画像)

今回入力画像として、こちらの画像を用意します。解像度が低いため、顔の表情がつぶれ気味です。
今回の入力画像はStable Diffusion で生成した画像ですが、生成時のパラメーターは使用しませんので、 手書きのCGやイラスト画像でもアップスケーリングできます。

アップスケーリング

Stable Diffusion Web UIにWebブラウザでアクセスします。上部の[img2img]のタブをクリックします。 下図の画面に切り替わります。


入力画像のフィールドに用意した入力画像を設定します。


ページを下にスクロールし、ControlNetの枠をクリックして開きます。下図の画面が表示されます。


ControlNetの入力画像に用意した入力画像を設定します。img2imgの入力に設定した画像と同じ画像を設定します。
以下の設定をします。
  • [Enable]のチェックボックスをつけます。
  • Preprocessorは[tile_resample]を選択します。
  • Modelは[control_v11p_sd15s2_lineart_anime]を選択します。


[Run preprocessor]ボタンをクリックして、プロプロセッサ適用後のイメージを確認します。


画像の出力パラメーターを設定します。[Sampling method]は"DDIM"を選択します。画像の出力サイズは、 入力した画像と同じサイズに設定します。アップスケールしますが、画像出力のサイズはオリジナルの画像のサイズのままでよいです。


[Tiled Diffusion]の枠をクリックして枠を展開します。下図の画面が表示されます。


以下の設定をします。
  • [Enable Tiled Diffusion]のチェックボックスをクリックしてチェックをつけます。
  • [Upscaler]は"R-ESRGAN 4x+ Anime6B"を選択します。


プロンプトには何も入力せず、[Generate]ボタンをクリックして実行します。
アップスケールされた画像が出力されます。


アップスケールされた画像を確認します。小物やポーズがほぼオリジナルから変化していないことが確認できます。



Steps: 20, Sampler: DDIM, CFG scale: 7, Seed: 4289915323, Size: 1024x1536, Model hash: db6cd0a62d, Model: Counterfeit-V3.0, Denoising strength: 0.75, Tiled Diffusion upscaler: R-ESRGAN 4x+ Anime6B, Tiled Diffusion scale factor: 2, Tiled Diffusion: "{'Method': 'MultiDiffusion', 'Tile tile width': 96, 'Tile tile height': 96, 'Tile Overlap': 48, 'Tile batch size': 4, 'Upscaler': 'R-ESRGAN 4x+ Anime6B', 'Upscale factor': 2, 'Keep input size': True}", ControlNet: "preprocessor: tile_resample, model: control_v11f1e_sd15_tile [a371b31b], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 1, 64)"

比較

アップスケールにより、若干彩度が落ちています。ペインティングの色が増えており、汚れ感が出てていますが、ほぼ元画像と同じ構図、形状です。
元画像
元画像
Tiled Diffusion アップスケール
Tiled Diffusion アップスケール

出力結果をより鮮明にしたい

出力結果のアップスケールされた画像ですが、もっと鮮明に出力したい場合があります。
プロンプトを設定すると、出力結果を鮮明にできる場合があります。

Prompt
masterpiece, best quality, ultra-detailed,
Negative prompt
worst quality, low quality



出力結果は以下になります。

masterpiece, best quality, ultra-detailed,
Negative prompt: worst quality, low quality
Steps: 20, Sampler: DDIM, CFG scale: 7, Seed: 2245711015, Size: 1024x1536, Model hash: db6cd0a62d, Model: Counterfeit-V3.0, Denoising strength: 0.75, Tiled Diffusion upscaler: R-ESRGAN 4x+ Anime6B, Tiled Diffusion scale factor: 2, Tiled Diffusion: "{'Method': 'MultiDiffusion', 'Tile tile width': 96, 'Tile tile height': 96, 'Tile Overlap': 48, 'Tile batch size': 4, 'Upscaler': 'R-ESRGAN 4x+ Anime6B', 'Upscale factor': 2, 'Keep input size': True}", ControlNet: "preprocessor: tile_resample, model: control_v11f1e_sd15_tile [a371b31b], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 1, 64)"

比較すると、プロンプトありのほうが若干ですが、鮮明感があります。
Tiled Diffusion アップスケール (プロンプトなし)
Tiled Diffusion アップスケール (プロンプトなし)
Tiled Diffusion アップスケール (プロンプトあり)
Tiled Diffusion アップスケール (プロンプトあり)

著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2023-06-01
iPentec all rights reserverd.