![](https://ikuriblog.com/wp-content/uploads/2023/09/バッチ機能-1024x576.jpg)
Stable Diffusion Web UIには、フォルダ内にある画像を一括で処理できるバッチ機能があります。
これを使うと低画質の画像を、一括で高画質化処理することが可能です。
今回はimg2imgのバッチ機能を使って、画像を一括で高画質化する方法をご紹介します。
img2imgのバッチ機能とは?
Stable Diffusion Web UIのimg2imgタブにあるバッチ機能のことです。指定したフォルダ内の画像を順番に処理できます。
ControlNetやExtraタブにもバッチ機能はありますが、こちらは画像に保存されたプロンプトやパラメータを取得できません。
img2imgのバッチ機能だと、画像から情報を取得できるので、画像生成時と同じ設定で高画質化処理ができます。
プロンプト・パラーメータの情報を保存している画像のみ有効です。
PCスペックに不安がある方や、事前に高画質化する画像を選びたいという方には便利かと思います。
img2imgバッチ機能の使い方
Stable Diffusion Web UIのimg2imgタブを開いて、さらにbatchタブを選択しておいてください。
![](https://ikuriblog.com/wp-content/uploads/2023/09/image-81.png)
全体の流れは以下の通りです。
- Input・Outpuフォルダの指定
- PNG infoで取得するパラメータの設定
- その他パラメータの設定
Input・Outputフォルダの指定
まず処理したい画像を1つのフォルダにまとめて、そのフォルダのパスを「Input directory」に入力します。
処理した画像の出力先を指定する場合は「Output directory」に入力します。
今回わかりやすいようにCドライブ直下に「i2ibatch」「i2ibatch output」というフォルダを作成しました。
![](https://ikuriblog.com/wp-content/uploads/2023/09/image-80.png)
i2ibatchをInput directory、i2ibatch outputをOutput directoryに指定します。
![](https://ikuriblog.com/wp-content/uploads/2023/09/image-82.png)
これでi2ibatch内の画像が処理されて、i2ibatch outputに保存されます。
なお、後述するSD upscaleを使う場合は、settingで指定しているimg2imgと同じフォルダに出力されるため、Output directoryは指定しなくても問題ありません。
PNG infoで取得するパラメータの設定
PNG infoでは、画像からどのパラメータを取得するかを選択できます。
まず「Append png info to prompts(png 情報をプロンプトに追加する)」にチェックを入れて、取得したいパラーメータにチェックを入れてください。
PNG info directoryは何も入力しなくて大丈夫です。(空でInput directoryのフォルダが指定されます)
とりあえず生成時と同じにしたい場合は全てにチェックを入れておけば問題ありません。
![](https://ikuriblog.com/wp-content/uploads/2024/02/image-88-1024x302.png)
その他パラメータの設定
上記のPNG infoで設定していないパラーメータを設定します。
PNG infoで取得したパラーメータをUI側で設定しても、画像の方が優先されるので注意してください。
全部チェックを入れている場合、主に設定するのは4つだけです。
- Resize mode
- Resize to・Resize by
- Denoising strength
- Upscaler
Resize mode
![](https://ikuriblog.com/wp-content/uploads/2023/09/image-84-1024x120.png)
Resize modeは画像をリサイズしたときの処理を指定できます。
Just resize | 指定した横縦幅に合わせて全体が収まるようにリサイズ |
Crop and resize | 一部カットしてリサイズ |
Resize and fill | リサイズしてできた余白は塗りつぶす |
Just resize (latent upscale) | latent upscaleを使用してJust resize |
単純に倍率を指定してアップスケールする場合はJust resizeで問題ありません。
最後にアップスケーラーも選べるので、最初のJust resizeで大丈夫です。
もしアスペクト比やサイズを変える場合は、Crop and resize・Resize and fillなど余白の処理を選択してください。
Resize to・Resize by
こちらはリサイズ、またはスケールする値を指定できます。
Resize toでは、横幅・縦幅の指定が可能です。
Resize byでは、元の画像サイズから何倍スケールするかを指定できます。
今回は512*512の画像を1024*1024に処理するので、Resize byを2にします。
![](https://ikuriblog.com/wp-content/uploads/2023/09/image-87-1024x208.png)
Denoising strength
Denoising strengthはノイズ除去強度です。
値が強いと画像は綺麗に仕上がりますが、描写が崩れてしまう可能性があります。
値が低いと元画像の描写を維持した状態で、そこそこ綺麗に処理できます。
元画像を維持しつつ、なるべく綺麗にしたいということであれば、体感0.55~0.6辺りがおすすめです。
Upscaler
高画質化するときのアップスケーラーを選択します。
ScriptからSD upscaleを選んでください。
![](https://ikuriblog.com/wp-content/uploads/2023/09/image-88.png)
Tile overlapとScale Factorを設定します。
・Tile overlap
Tile overlapは分割して高画質化したときの境界部分を調整できるものです。
次に設定するScale FactorとResize byが同じ値なら触る必要はありません。
Scale FactorとResize byの値を変えて、左はTile overlapを0、右が256で処理したものです。
0は境界線がくっきり出ていますが、256では目立たなくなっているのがわかると思います。
![](https://ikuriblog.com/wp-content/uploads/2023/09/00022-BracingEvoMix_v1.jpg)
![](https://ikuriblog.com/wp-content/uploads/2023/09/00023-BracingEvoMix_v1.jpg)
・Scale Factor
Resize byと同じくスケールする倍率を指定できます。
ここの値がResize byと違う値だと分割で高画質化が行われます。
単純に指定した倍率にアップスケールするならResize byと同じ値にしてください。
・Upscalerの種類
高画質化に使用するUpscalerを選択します。
![](https://ikuriblog.com/wp-content/uploads/2023/09/image-89-1024x163.png)
これでGenerateを押せばフォルダ内の画像が順番に処理され、一括で高画質化が可能です。
上が処理前、下が処理後の画像ですが、元画像のプロンプトやパラメータを維持した状態で高画質化処理できているのがわかると思います。
![](https://ikuriblog.com/wp-content/uploads/2024/02/00203-34246177-1-1024x512.jpg)
実際にプロンプトを見ると、PNG infoで設定したものは元画像のままで、アップスケーラーやDenoising strengthのみ反映されています。
![](https://ikuriblog.com/wp-content/uploads/2024/02/image-86-7-1024x505.jpg)
もしアップスケーラーをもう少し細かく調整したいという場合は、「Ultimate SD Upscale」などを使ってみてください。
ControlNetの併用も可能
ControlNetを使うとTileを使って質感を変えることができます。
・インストール方法はこちら
インストールしたらそのままControlNetのEnableにチェックを入れて、tileを選択して生成するだけです。
上はtileを使わず高画質化したもの、下がtileを使用したもので、若干結果が変わっているのがわかると思います。
![](https://ikuriblog.com/wp-content/uploads/2024/02/00001-34246177-1-1024x512.jpg)
また、モデルを変えてパラメータを変えれば三次元画像を二次元化することもできます。
モデルを変えて一括処理する場合は、PNG infoのModel hashは外しておいてください。
![](https://ikuriblog.com/wp-content/uploads/2024/02/image-86-1024x325.png)
Control Weightを0.5くらいに下げて生成すると、二次元化できます。
![](https://ikuriblog.com/wp-content/uploads/2024/02/image-89.png)
![](https://ikuriblog.com/wp-content/uploads/2024/02/00005-34246177-1024x256.jpg)
ControlNetを使うと高画質化以外の処理も一括で行えるので、ぜひ試してみてください。
img2imgのバッチ機能のデメリット
一括処理は便利ですが、hires.fixで高画質処理したものと若干結果が異なります。
以下は左がhires.fix、右がimg2imgのバッチ機能で処理したものです。
![](https://ikuriblog.com/wp-content/uploads/2024/02/00202-34246177.jpg)
![](https://ikuriblog.com/wp-content/uploads/2024/02/00001-34246177-2.jpg)
若干ではありますが、背景の木、Tシャツのシワ、質感などに違いがあります。
好みもあると思いますが、個人的にhires.fixの方が綺麗に仕上がる印象です。
いろいろいじれば調整可能かと思いますが、クオリティを重視したい方はimg2imgのバッチ機能だと微妙かもしれません。
img2imgのバッチ機能で画像を一括高画質化する方法まとめ
今回はimg2imgのバッチ機能で、画像を一括高解像化する方法をご紹介しました。
- img2imgのバッチ機能は画像情報を維持できる
- 手間は増える
- ControlNet使うと高画質化以外もできる
- hires.fix使用時と若干結果が異なる
低画質状態で構図やポーズをガチャして、厳選した画像のみ高画質化したいという目的でimg2imgのバッチ機能を使ってみました。
一応ポーズ集とかまとめておけば、ControlNetで一括生成とかもできるので、やり方次第でいろいろ使えるかと思います。
興味ある方はぜひ使ってみてください。