元の画像の形状や構図を維持してアップスケールする (ControlNet Tile + 生成時プロンプト、パラメーターを利用) - Stable Diffusion

ControlNet Tile + 生成時プロンプト、パラメーターを利用して、元の画像の形状や構図を維持してアップスケールする手順を紹介します。

概要

以下の記事では、txt2imgでHires.fixを利用してアップスケールする方法、img2imgでTiled Diffusionを利用してアップスケールする方法を紹介しました。

紹介した方法で生成画像のアップスケールができ、細部まで描画された画像や鮮明感高めた画像を生成できます。 しかし、画像を分割して細部を描画するため、全体の構図が崩れたり、画像の整合性が崩れてしまう場合があります。
この記事ではControlNet Tileと画像生成時のプロンプト、パラメーターを利用して、入力画像の構図、形状を維持した状態でアップスケール画像を生成する手順を紹介します。

SDXLの場合

事前準備

ControlNet のインストール

CotrolNet 1.1 をインストールします。手順はこちらの記事を参照してください。
また、ControlNetのモデルに controlnet-union-sdxl-1.0 の diffusion_pytorch_model_promax.safetensors をインストールします。 モデルはこちらの記事を参照してください。

画像の生成

Stable Diffusionで画像を生成します。今回は以下のプロンプトで生成します。
Prompt
Prompt: 1girl, girl at rooftop, zoom in girl BREAK fantasy, future large city, many building, wide view, from above, official art, masterpiece, best best quality
Negative prompt: worst quality, low quality, text, watermerk

下図の画像を生成しました。


なおHires.fixを有効にした場合は、下図の結果となります。細部は描画できていますが、建物の形状が崩れてしまったり、道路がつぶれてしまったりしています。

txt2imgを利用

txt2imgの画面を表示します。


下にスクロールします。ControlNetの枠を展開します。[ここに画像をドロップ -または- クリックしてアップロード]の枠に生成した 画像と同じ画像を設定します。


ControlNetの入力画像を設定しました。


ControlNetを設定します。[Enable]のチェックボックスをクリックしてチェックをつけます。


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


[Preprocessor]のドロップダウンリストボックスに "tile_resample"が設定されていることを確認します。 [Model]のドロップダウンリストボックスをクリックします。モデルから[xinsir_controlnet-union-promax-sdxl-1.0](モデルハッシュ[9460e4db])を選択します。


[Poxel Perfect]のチェックボックスをクリックしてチェックをつけます。[Allow Preview]のチェックボックスをクリックしてチェックをつけます。 Preprocessorのリストボックスの右側の[Run preprocessor]ボタンをクリックして、プリプロセッサの処理を実行しエラーが発生しないことを確認します。


ページの上部に戻り画像のサイズを設定します。元の画像の2倍の解像度にします。今回元の画像は1,024x768ですので、2倍の2,048x1,536を設定します。 設定後[Generate]ボタンをクリックし画像の生成を実行します。


下図の画像が生成できました。


ControlNetのWeightを変更した場合の結果も確認します。[Control Weight]を1.5に変更して実行します。


下図の画像が生成できました。

比較

それぞれの画像の比較が下図です。
アップスケールされた画像でも、Hires.fixの場合のように形状が大きく変化したり、建物の形状がつぶれたり、背景の道路がつぶれてしまう結果にはならないです。
一方で、描画密度はそれほど上がらず、単純にアップスケールした状態に近い結果となりました。
元画像
元画像

アップスケール(Weight 1.0)
アップスケール(Weight 1.0)

アップスケール(Weight 1.5)
アップスケール(Weight 1.5)

手順:SDXL img2imgを利用

txt2imgを利用して画像を生成します。


右側のエリアの生成された画像のサムネイルの下部のツールバーの[Send image and generation paramters to img2img tab.]のボタンをクリックします。


img2imgのタブに切り替わります。入力画像に生成した画像が設定された状態になります。プロンプトやシード値も生成した画像の内容が設定されます。


ページを下にスクロールし[ControlNet]のパネルをクリックして開きます。


[Enable]のチェックボックスをクリックしてチェックをつけます。[Pixel Perfect]のチェックボックスもクリックしてチェックをつけます。 [Control Type]のエリアの[Tile]のラジオボタンをクリックしてチェックをつけます。チェック後に[Preprocessor]のリストボックスを"tile_resample" を設定します。 [Model]のリストボックスは、[xinsir_controlnet-union-promax-sdxl-1.0](モデルハッシュ[9460e4db])を選択します。


上部に戻り、出力画像サイズを変更します。[Resize by]のタブをクリックし[Resize to]のタブから変更します。 [Scale]の値を"2"に設定し、2倍のサイズで出力します。


[Generate]ボタンをクリックして画像を生成します。


下図の画像が生成できました。


Tiled Diffusionを有効にした場合の生成結果も試します。[Tiled Diffusion]のパネルを開き、[Tiled Diffusion]のチェックボックスをクリックしてチェックをつけます。 [Method]を"MultiDiffusion"に設定し、[Latent tile width][Latent tile height]をそれぞれ"128"に設定します。 [Latent tile overlap]を"64"に設定します。[Scale Factor]の値は"2"に設定し、2倍のサイズにします。
[Resize by]の[Scale]の値は"1"に戻します。


[Generate]ボタンをクリックして画像を生成します。下図の画像が生成できました。


Tiles Diffusionをオフにして、ControlNetのPreprocessorを"tile_colorfix+sharp"を設定します。 [Ending Control Step]の値を"0.5"、[Valiation]の値を"16"、[Sharpness]の値を"0.7"に設定します。 また、Resize by のScaleを設定し、Denoising strength を 0.9に設定して画像生成します。


[Generate]ボタンをクリックして画像を生成します。下図の画像が生成できました。

比較

それぞれの画像の比較が下図です。
元画像
元画像

CN Tile
CN Tile

元画像
元画像

tile_colorfix+sharp
tile_colorfix+sharp

補足
さらに、描画密度を上げる場合はimg2imgのモデルをリアリスティック系のモデルに変更する方法があります。ただし元の画像からカラーリングや形状の変化が出てしまいます。 詳しくはこちらの記事を参照してください。


Stable Diffusion 1.5 の場合

事前準備

ControlNet のインストール

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

画像の生成

Stable Diffusionで画像を生成します。今回は以下のプロンプト、パラメーターで生成します。
Prompt
1 girl, extreme beautiful girl, blue jacket, white long skirt, (white background), standing, full body, character settings
Negative prompt
worst quality, low quality,
パラメーター
Sampling method:Euler a, Seed: 2086633563, width:512, Height:768

今回、こちらの画像を生成しました。Width=512, Height=768のサイズで出力しています。

1 girl, extreme beautiful girl, blue jacket, white long skirt, (white background), standing, full body, character settings
Negative prompt: worst quality, low quality,
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 2086633563, Size: 512x768, Model hash: db6cd0a62d, Model: Counterfeit-V3.0, Version: v1.3.1

サンプリングメソッドが Euler aを選択していることもあり、顔の表情はつぶれ気味です。

アップスケール手順

画像を生成した状態です。


下にスクロールし、ControlNetの枠を展開します。[ここに画像をドロップ -または- クリックしてアップロード]の枠に生成した 画像と同じ画像を設定します。


ControlNetに画像を設定しました。


[Preprocessor]のドロップダウンリストボックスをクリックします。リストから[tile_resample]を選択します。 同様の手順で[Model]のドロップダウンリストボックスで[control_v11p_sd15_tile]を選択します。


[Enable]のチェックボックスにチェックをつけます。


画面上部に戻ります。プロンプトの設定は生成時のままとします。Sampling methodは細部を描画しやすいメソッドに変更します。 今回は、[DPM++ 2M Karras]を選択しています。通常はサンプリングメソッドを変更すると、構図やパーツの形状が変化しますが、 ContorlNetのTileで形状に制約がついているため、サンプリングメソッドを変更しても形状は変化しません。


アップスケールしたいサイズのWidth, Heightを設定します。今回は元のサイズの2倍 Width=1,024 Hiehgt=1,536 を指定しています。
通常は出力の画像サイズが変化すると、絵柄が変化しますが、サンプリングメソッドと同様に、 ControlNetのTileで形状が制約されているため、出力サイズが変化しても、形状は変化しない状態になります。
[Generate]ボタンをクリックして、画像を生成します。


出力結果は下図になります。若干、色味の変化がありますが、構図やパーツの形状は変化が無い状態でアップスケールできています。

比較

画像のサイズが2倍になり、細かい部分の描画も追加されています。顔の表情の鮮明感も上がっています。
青色の色味の変化があります。
メモ
ControlNet Tileの処理で色味が変化しないようにする方法もあります。 詳しくはこちらの記事を参照してください。
元画像
元画像

アップスケール画像
アップスケール画像

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