LatentUpscale

(comfyanonymous/ComfyUI)
latent/Upscale Latent
latent 表現の画像を拡大する (サイズ指定版)

latent 画像を指定した幅と高さになるように拡大/縮小します。 LatentUpscale という名前ですが、縮小も可能です。 幅と高さの指定は対応する pixel 画像の大きさで行うので注意が必要です。 それぞれ 8 の倍数で指定します。 拡大率指定版の LatentUpscaleBy もあります。

pixel に比べて荒い latent 画素 (解像度 1/8) に対する処理になるので、結果の品質は良くありません。 また、latent に埋め込まれた位置関係の情報が狂うことになるため、アーティファクトが盛大に乗ります。 後処理として KSampler で "ノイズ" 除去を行うことが定石です。

upscale_method

具体的な拡大/縮小法を指定します。

拡大時:

  • nearest-exact: 単純に、一番近い元画像の latent 画素をそのままコピーする。 元のドットがそのまま残り、ジャギーの目立つ画像になる。
  • bilinear: 元画像で近い latent 画素 4点を選び、距離に応じた平均を取る。 具体的には、上の 2点で線形補間、下の 2点で線形補間、最後にそれらの間で線形補間する。 ボケた画像になる。 異方性のアーティファクトが目立つことがある。
  • bicubic: bilinear と同じ手順だが、こちらは線形補間ではなく 3次スプライン補間を使う。 ボケた画像になる。
  • area: nearest-exact と同じ。
  • bislerp: bilinear と同じ手順だが、こちらは線形補間 (lerp) ではなく slerp (球面線形補間) を使う。 ボケた画像になる。

縮小時:

  • nearest-exact: 単純に、一番近い元画像の latent 画素をそのままコピーする。 モアレ模様が発生したり、ポツポツと不自然な点が残ったりすることがある。
  • bilinear: 縮小にも関わらず拡大時と同じ動作をする。 結果として、モアレ模様が発生したり、ポツポツと不自然な点が残ったりすることがある。
  • bicubic: 縮小にも関わらず拡大時と同じ動作をする。 結果として、モアレ模様が発生したり、ポツポツと不自然な点が残ったりすることがある。
  • area: adaptive average pooling を使って縮小を行う。 具体的には、元画像の latent 画素を縮小画像の latent 画素に対応させて平均を取る。 元画像側オーバーラップを 1以下となるように調整して、無用なボケを防ぐ。 モアレ模様などの問題が発生しにくい。
  • bislerp: nearest-exact と同じ。
crop

切り抜きを行うかどうかを指定します。

拡大時:

  • disabled: 元画像をそのまま指定サイズに拡大します。 元画像と指定サイズとでアスペクト比が違う場合、伸ばされたような画像になります。
  • center: 元画像の中心から、指定サイズのアスペクト比となる最大の矩形領域を切り抜いて、指定サイズに拡大します。 元画像と指定サイズとでアスペクト比が違う場合、元画像の上下または左右が失われます。

縮小時:

  • disabled: 元画像をそのまま指定サイズに縮小します。 元画像と指定サイズとでアスペクト比が違う場合、つぶれたような画像になります。
  • center: 元画像の中心から、指定サイズの矩形領域を切り抜きます。

関連

使用例

2 段の Hires. Fix (→高解像度の画像を出したい (Hires. Fix の基本形)):