イラストも写真も美しく!アップスケールを徹底解説!【Stable Diffusion】

この記事では、
Stable Diffusionで使えるアップスケールについて分かりやすく解説します。

  • アップスケールってどんなものがあるの?
  • どのアップスケールを使えばいいのか分からない
  • アップスケールによって何が違うのか分からない

そんな悩みをお持ちのあなたに向けて、この記事をお届けします。

【結論】「Tile + Hires.fix」と「Ultimate SD Upscale」がオススメ

txt2imgであれば「Hires.fix」と「ControlNetのTile」を併用して使うのがおすすめです。

ControlNetのTileを使うことで元の画像を崩さずに、
Hires.fixで描き込みを増やしながらアップスケールできます。

Hires.fixでアップスケールするときに、
画像への描き込みが増えますが、元の画像が変わることがあります。
それを防ぐために、ControlNetのTileを使います。

Hires.fixとControlNetのTileについては、
この記事の「具体的なアップスケール方法」のところで説明していますので読んでみてくださいね!

Tile + Hires.fix のアップスケールのやり方

  1. txt2imgのページを開く
  2. Hires.fixを設定する
  3. ControlNetでTileを設定する
  4. 画像を生成する

Hires.fixの設定

ControlNet Tileの設定

アップスケールとは?

アップスケールとは、画像や動画の解像度を大きくすることです。

小さな画像をそのまま大きくすると、画像がボヤけてしまいますが、
アップスケールを使うと、キレイなまま拡大することができます!
また、アップスケールによっては、元の画像の描き込みを増やすこともできます。

アップスケールの用語

ノイズ除去強度(Denoising Strength)

ノイズ除去強度とは、
ノイズ除去する時に「元画像をどれだけ変化させるか」を決める数値のことです。

数値が小さいほど、元画像に近い画像が生成されて、
数値が大きいほど、元画像とは遠い画像が生成されます。

数値が「0」に近いほど再現性は高くなりますが、画像がボケやすくなり、
数値が「1」に近いほど品質は上がりますが、画像が崩れやすくなります。

適正な値はアップスケーラーによって異なりますが、
「0.5」を基準にして少しずつ変えていくといいですよ!

アップスケーラー(Upscaler)

アップスケーラーとは、画像をアップスケールするモデルのことです。

アップスケーラーのモデルは種類がたくさんあります。
「顔特化」「写真特化」「アニメ特化」などなど。

アップスケーラーは、デフォルトで搭載されているものもありますが、
OpenModelDB」からダウンロードすることもできます。

おすすめのアップスケーラー

個人的におすすめのアップスケーラーを紹介します。

  • R-ESRGAN 4x+
  • R-ESRGAN 4x+ Anime6B

どちらも、画像生成では定番のアップスケーラーです。
デフォルトで搭載されているので、インストールの手間もありません。

「4x UltraSharp」も素晴らしいアップスケーラーですが、
商用利用ができないため、外させていただきました。

アップスケーラーのライセンス

アップスケーラーには、ライセンスが存在します。
利用する際には、必ずライセンスを確認しましょう。

4x UltraSharp」の場合は「CC BY-NC-SA 4.0」がライセンスです。

アルファベットの2文字が、規定事項を示しています。
末尾の数字がバージョンを示しています。

例えば、「CC-BY-NC-SA-4.0」の場合

  • 著作者のクレジットを表示する義務がある
  • 営利目的での使用はできない
  • このアップスケーラーを元に新しいアップスケーラーを作った場合は、元のライセンスを継承しなければならない

具体的なアップスケールの方法

Hires.fix

Hires.fix(高解像度補助)とは、
画像の破綻を回避しながら、高解像度の画像が生成できる機能のことです。

txt2imgのタブで画像生成をする際に、
アップスケーラーに出力画像を渡して、
より大きなサイズにimg2imgしてもらう機能です。

設定が簡単なので、初心者に優しいアップスケール方法です。
また、アップスケールをする際に、画像への描き込みが増えます。

Hires.fixの設定

1. Hires.fix にチェックを入れる
2. Upscalerを選ぶ
3. Hires steps を設定する

「Hires steps」とは、Hires.fixをどのぐらいのステップをかけるか決める設定です。

「Hires steps」を「0」にすると「Sampling steps」の数値と同じ回数だけ高解像度の処理が行われます。
ですが、生成結果の高精細化はある程度で飽和します。
そのため、「Sampling steps」と同じ数は必要ないことが多いです。

結果があまり変わらないのに、生成時間が増えてしまいますので、
僕の場合は、「Sampling steps」が「30」なら、「Hires steps」を「15」にしています。
アップスケールに時間がかかっても品質を上げたい方は「0」でも大丈夫です。

4. Denoising strength を設定する

「Denoising strength」とは、ノイズ除去強度のことです。
ノイズ除去強度とは、ノイズ除去する時に「元画像をどれだけ変化させるか」を決める数値のことです

数値が「0」に近いほど、再現性は高くなりますが、画像がボケやすくなり、
数値が「1」に近いほど、品質は上がりますが、画像が崩れやすくなります。

最初は「0.5」にして、少しずつ調整していくと良いですよ。

5. Upscale by を設定する

「Upscale by」とは、アップスケールするサイズのことです。

数値を「2」にすると、元画像を2倍のサイズにアップスケールすることになります。
例えば、元画像が「1024 × 1024」だった場合、「Upscale by」の数値を「2」にすると、「2048×2048」の大きさにアップスケールすることになります。

数値を大きくすると、パソコンに負荷がかかり、生成時間が長くなります。
パソコンが重くなったり、メモリのエラーが起きたりしますので、
最初は小さな数値から始めると良いと思います。

6. Hires CFG Scale を設定する

「CFG Scale」とは、 プロンプトに対して、どれだけ忠実な画像を生成するかを指定する数値のことです。

数値が「0」に近いほど、創造的な画像を生成します。
数値が「1」に近いほど、プロンプトに忠実な画像を生成します。

最初は「7」にして、少しずつ調整していくと良いですよ!
txt2imgの「CFG Scale」と、Hires.fixの「Hires CFG Scale」は、同じ数値にしていれば大丈夫です。

Extras

Extrasは、画像を高解像度にする機能のことです。

「拡大」と「縮小」のみを行うので、
アップスケールする際に描き込みは増えません。

Extrasは、Stable Diffusionにデフォルトで搭載されていて、
「img2img」でアップスケールすることができます。

Extras の使い方

  1. Stable Diffusion WebUIを起動する
  2. Extrasのタブをクリックする
  3. 画像を入れる
  4. Upscaleでアップスケーラーを選ぶ
  5. Scaleでアップスケールのサイズを選ぶ

Multi Diffusion

Multi Diffusionのインストール方法

1. GitHub のページから URL をコピーする
  1. GitHub」のページにアクセスする
  2. 「Code」のボタンをクリックする
  3. HTTPSのタブのURLをコピーする
2. Stable Diffusion WebUI に URL をペーストする
  1. Stable Diffusion WebUIを開く
  2. 「Extensions」のタブをクリックする
  3. 「Install from URL」のタブをクリックする
  4. 「URL for extension’s git repository」にURLを貼り付ける
  5. 「Install」のボタンをクリックする
  6. Stable Diffusion WebUIを再起動する

Ultimate SD Upscale

Ultimate SD Upscaleとは、
Stable Diffusionで生成した画像を高解像度にする拡張機能です。

Ultimate SD Upscale のインストール方法

1. GitHub のページから URL をコピーする
  1. GitHub」のページにアクセスする
  2. 「Code」のボタンをクリックする
  3. HTTPSのタブのURLをコピーする
2. Stable Diffusion WebUI に URL をペーストする
  1. Stable Diffusion WebUIを開く
  2. 「Extensions」のタブをクリックする
  3. 「Install from URL」のタブをクリックする
  4. 「URL for extension’s git repository」にURLを貼り付ける
  5. 「Install」のボタンをクリックする
  6. Stable Diffusion WebUIを再起動する

Ultimate SD Upscale の設定

1. Target size type を設定する

「Target size type」では、アップスケールするサイズを設定することができます。
画像のサイズは、最大で16倍まで拡大が可能です。

From img2img settingsimg2imgで設定したサイズにする
Custom size「Width」と「Height」を設定する
Scale from image size「Scale」を設定する

2. Upscaler を選ぶ

「Upscaler」では、アップスケールの方法を設定することができます。

3. Type を選ぶ

「Type」では、「Liner」と「Chess」の項目があります。
画像生成の結果が少し変わります。

4. 「Tile width」と「Tile height」を設定する

「Tile width」と「Tile height」では、高解像度処理させるサイズの設定ができます。

「1024×1024」の元画像で、「Tile width:512」「Tile height:512」に設定した場合は、
「1024×1024」の画像を4分割にして高解像処理をしていることになります。
分割で高解像度の処理をさせることで、画像生成の時間が速くなります。

例えば、「1024×1024」の元画像を2倍の「2048×2048」にアップスケールしたい場合は、
「Tile width:1024」「Tile height:1024」に設定して、4分割にさせて高解像度処理させると良い結果になりやすいです。

5. Mask blur を設定する

「Mask blur」とは、分割で処理した場所の境界線の部分をぼかす設定です。
数値を「8」以上にすると自然な境界線になります。
基本的には、初期値のままで大丈夫です。

6. Padding を設定する

「Padding」とは、余白部分の設定です。
基本的には、初期値のままで大丈夫です。

7. Seams fix を選ぶ

「Seams fix」では、細かい設定をすることができます。
微調整をしたい場合に利用すると良いと思います。
基本的には「none」のままでも大丈夫です。

ControlNet Tile

ControlNetのTileとは、
元の画像をタイルのように分割して、それぞれのタイルをアップスケールすることです。

ControlNetのTileを使うことで、
元画像を崩さずにアップスケールすることができます。

今回は、「xinsir」さんが作成された、SDXLで使えるControlNetのTileのモデルを紹介します。

Tile のダウンロード方法

  1. Hugging Faceにアクセスする
  2. 「File and versions」をクリックする
  3. 「diffusion_pytorch_model.safetensors」をダウンロードする
  4. ダウンロードしたファイルを保存する

1. Hugging Faceにアクセスする

以下のサイトからファイルのダウンロードができます。

2. 「File and versions」をクリックする

3. 「diffusion_pytorch_model.safetensors」をダウンロードする

「diffusion_pytorch_model.safetensors」ファイルの右側のマークをクリックして、
ファイルをダウンロードします。

4. ダウンロードしたファイルを保存する

ダウンロードしたファイルを、
「stable-diffusion-webui」→「extensions」→「sd-webui-controlnet」→「models」に保存します。

ファイル名を変えて分かりやすくしても良いですよ!

Tile の設定

1. Enable にチェックを入れる

2. Pixel Perfect にチェックを入れる

3. Control Type から Tile を選ぶ

4. Preprocessor を選ぶ

  • tile_resample
    元画像のイメージは保ちながら、描き込みを増やし、アップスケールする。
    ただし、元画像よりも色彩が薄くなってしまう。
  • tile_colorfix
    元画像の色彩を固定しながら、アップスケールする。
  • tile_colorfix+sharp
    アップスケールした時に、色彩を崩さずにシャープにしてくれる。
    「tile resample」と「tilecolorfix」の良いとこどりをした感じ。
    ただし、パキッとした雰囲気になる。
  • blur_gaussian
    画像にぼかしを適用する。

5. ControlNetのModel を選ぶ

「Model」では、ダウンロードした「Tile」のモデルを選びます。
モデルが表示されない場合は、右側の青色のマークをクリックすると良いですよ!

6. Control Weightを設定する

「Control Weight」とは、ControlNetの重みを調整することです。

7. 「Starting Control Step」と「Ending Control Step」を設定する

「Starting Control Step」とは、「どこから干渉を始めるか」ということです。
「Ending Control Step」とは、「どこで干渉をやめるか」ということです。

最初の数値は「Start:0.0」「End:1.0」から始めると良いですよ!

8. Control Mode を設定する

「Control Mode」とは、プロンプトとControlNetのどちらを重要にするかを設定する項目です。

Balancedバランスをとる
My prompt is more importantプロンプトの方を重要にする
ControlNet is more importantコントロールネットの方を重要にする

9. Resize Mode を設定する

Just Resize入力画像のアスペクト比を無視して、
そのまま画像生成をする。
Crop and Resize入力画像のアスペクト比を維持したまま、
出力画像の余計な部分を切り取る。
Resize and Fill入力画像のアスペクト比を維持したまま、
出力画像の余白の部分を新しく描く。

まとめ

いかがでしたでしょうか。
アップスケールは、高解像度の画像を生成するために欠かせないプロセスです。

ControlNetのTileとHires.fixを使うことで、
ディテールを保持しながら拡大することが可能になります。

アップスケールを活用することで、
よりクリエイティブで美しい作品を生み出せることができますよ!

この記事があなたのお役に立てたなら幸いです。
今後も有益な情報をお届けしますので、
ぜひ、楽しみにしてくださいね!

コメント

タイトルとURLをコピーしました