dskjal
広告
広告

ComfyUI の ModelSamplingAuraFlow とは何か

カテゴリ:deeplearning

ModelSamplingAuraFlow は高解像度画像を生成する際に、ノイズが不足しないようにするノード。

中身は ModelSamplingSD3 ノードと同じ。詳細は SD3 論文の p. 10 Resolution-dependent shifting of timestep schedules を参照。

ノイズを増量することで画像にディティールを追加する使い方もできる。

論文の \(\sqrt{\frac{m}{n}}\) が shift で、3.0 と 6.0 が人間の評価が高かった。

shift 量の計算

shift 量はベース解像度との比で計算する。SD3 は 1,024px だが Qwen Image は 1,328。

Qwen で 2,048 の画像を生成する場合、n = ベースピクセル数、m = 生成ピクセル数なので sqrt(2048^2/1328^2) ≒ 1.54。ベース shift 量が3の場合、3 * 1.54 = 4.62 が shift 量になる。

ソース

class ModelSamplingAuraFlow(ModelSamplingSD3) はベースの ModelSamplingSD3 の patch を呼び出しているだけ。

ModelSamplingSD3 の patch の中身は comfy.model_sampling.ModelSamplingDiscreteFlow。

class ModelSamplingDiscreteFlow(torch.nn.Module) で shift が関係しているのは def sigma と def percent_to_sigma で、どちらも shift を time_snr_shift の alpha に入力している。

time_snr_shift の中身は以下のようになっている。

def time_snr_shift(alpha, t):
    if alpha == 1.0:
        return t
    return alpha * t / (1 + (alpha - 1) * t)
alpha (shift) = 3 の時のタイムステップ t

alpha (shift) = 3 の時のタイムステップ t


広告
広告

カテゴリ