dskjal
広告
広告

NovelAI Diffusion V3 の改善点

カテゴリ:deeplearning

v-Prediction Parameterization

SDXL では ε Prediction が使われている。これはノイズ画像からノイズ部分を予測させる方法だ。この方法は SNR=0(純粋なノイズ画像)の状況では機能しない。

v-Prediction はノイズとデノイズ後の画像との差分(つまり速度)を予測させる。式にすると v = sqrt(αt)ϵ − sqrt(1 − σt)x。ただし ε はノイズ。この方法では SNR に依存せずに正しく予測が機能する。

後述する Zero Terminal SNR を実装するために、v-Prediction が採用されている。Zero Terminal SNR では純粋なノイズ画像になるまで学習させるが、ε Prediction では純粋なノイズ画像ではうまく学習できない。

v-Prediction は数値の安定性の改善、高解像度でのカラーシフトの除去、サンプルの収束速度の改善という利点もある。

v-Prediction は Google の IMAGEN で採用されていることで有名。v-Prediction の原論文は Progressive Distillation for Fast Sampling of Diffusion Models

ちなみに Stable Diffusion 3 の論文 では以下の4つの手法を比較した結果、RF loss を採用した。

v-Prediction と RF loss は 10 ステップで高いスコアーを得ている。<br/>RF loss はすべてのステップで v-Prediction より高いスコアーを得ている。<br/>出典:Scaling Rectified Flow Transformers for High-Resolution Image Synthesis. Patrick Esser et al. Figure 3

v-Prediction と RF loss は 10 ステップで高いスコアーを得ている。
RF loss はすべてのステップで v-Prediction より高いスコアーを得ている。
出典:Scaling Rectified Flow Transformers for High-Resolution Image Synthesis. Patrick Esser et al. Figure 3

Zero Terminal SNR

SDXL は欠陥のあるノイズスケジューラーで訓練されており、常に中間的な明るさのサンプルを生成するようになっている。

通常、拡散モデルはノイズのない画像から徐々にノイズを付与して訓練する。しかし SDXL のノイズスケジューラーは最大までノイズを付与しても純粋なノイズにならない。これはモデルに、"ノイズの中に常に何らかのシグナルが残っている" という誤った情報を学習させてしまう。

「completely black」 というプロンプトで生成した画像。純粋なノイズになるまで学習させたもの(ZTSNR)は正しく画像が生成されている。素の SDXL(no ZTSNR)は、中間的な明るさの純粋なノイズをヒントに画像を生成するため、生成画像の明るさも中間的なものになり、プロンプトも無視される<br/>出典:Improvements to SDXL in NovelAI Diffusion V3. Juan Ossa et al. Figure 2

「completely black」 というプロンプトで生成した画像。純粋なノイズになるまで学習させたもの(ZTSNR)は正しく画像が生成されている。素の SDXL(no ZTSNR)は、中間的な明るさの純粋なノイズをヒントに画像を生成するため、生成画像の明るさも中間的なものになり、プロンプトも無視される
出典:Improvements to SDXL in NovelAI Diffusion V3. Juan Ossa et al. Figure 2

素の SDXL(no ZTSNR)では画像の平均明るさを調整するために、プロンプトを無視して背景や髪、服を明るくしたり暗くしたりする<br/>出典:Improvements to SDXL in NovelAI Diffusion V3. Juan Ossa et al. Figure 3

素の SDXL(no ZTSNR)では画像の平均明るさを調整するために、プロンプトを無視して背景や髪、服を明るくしたり暗くしたりする
出典:Improvements to SDXL in NovelAI Diffusion V3. Juan Ossa et al. Figure 3

一般的な拡散モデルのスケジューラーの問題は Common Diffusion Noise Schedules and Sample Steps are Flawed で指摘されている。

SDXL-Turbo#3.5Fix the Schedule では t = T の時に純粋なノイズになるような例外処理を入れることで、この問題に対処している。

解像度に依存しないノイズスケジューラ―を利用することで高解像度での生成品質を改善

SDXL は高解像度で σmax が小さすぎる問題がある。σmax は画像生成時の初期ノイズの量と学習時のノイズ量との最大値を制御する。解像度を増やし、かつ SNR を維持するには、より多くのノイズが必要になる。

左:低解像度版の画像にノイズを 97% 付与<br/>右:高解像度版の画像にノイズを 97% 付与して解像度をそろえたもの<br/>高解像度の画像は同じ量のノイズを付与しても画像に多くの低周波数の情報が残っている

左:低解像度版の画像にノイズを 97% 付与
右:高解像度版の画像にノイズを 97% 付与して解像度をそろえたもの
高解像度の画像は同じ量のノイズを付与しても画像に多くの低周波数の情報が残っている

分かりやすい例は高解像度での人物の分裂だ。SD 1.x や SDXL では解像度を増やすと顔や体のパーツが増殖していた。これは σmax が小さすぎることが原因の一つだ。

高解像度での σ<sub>max</sub> の違い<br/>出典:Improvements to SDXL in NovelAI Diffusion V3. Juan Ossa et al. Figure 6

高解像度での σmax の違い
出典:Improvements to SDXL in NovelAI Diffusion V3. Juan Ossa et al. Figure 6

経験則では、ピクセル数を4倍(縦横2倍)にして、SNR を維持するには、σmax を2倍にする(ピクセル数2倍なら σmax は 1.414 倍)。これは上限値なので σmax を2倍以上にしても生成画像の品質は改善しない。

高解像度での追加のノイズ付与の必要性は Simple diffusion: End-to-end diffusion for high resolution images で指摘されている。

Stable Diffusion 3 の論文のセクション 5.3.2 Resolution-dependent shifting of timestep schedulesでは σmax を変更するのではなく、タイムステップを変更することでノイズ量を制御している。

外部リンク

Improvements to SDXL in NovelAI Diffusion V3

Scaling Rectified Flow Transformers for High-Resolution Image Synthesis

SDXL-Lightning: Progressive Adversarial Diffusion Distillation


広告
広告

カテゴリ