U-Net や Diffusion Transformer はどのようにして可変解像度に対応しているのか
カテゴリ:deeplearning
U-Net
U-Net は Stable Diffusion 1.5 や XL で使われている。
U-Net は以下の要素から構成されているが、いずれも解像度に依存しないので、U-Net も可変解像度に対応している。
- 畳み込み層(Conv2d) はカーネルサイズ・ストライドに応じて入力解像度を変換するが、入力サイズ自体に依存しない
- 正則化・活性化関数(例:LayerNorm, SiLU) もチャンネル単位で動作し、空間サイズは関知しない
- ダウンサンプリング・アップサンプリング層は空間サイズを一定の倍率で変換することで、任意サイズの入力に対応
Diffusion Transformer
Diffusion Transformer は Stable Diffusion 3 などで使われている。
トランスフォーマーは画像を複数の パッチ(トークン) に分割し、それを順序性のないシーケンスとして扱う設計だ。入力解像度が変化すると変換後のトークン数が変化する。エンコード時に各パッチは埋め込みベクトルへ変換され、長さ(すなわちパッチ総数)がモデルに入力される。
Diffusion Transformer の本体であるトランスフォーマーブロックはトークン数に依存せずに動作する。
変換後のトークンは1次元のため、元の座標位置を特定するために位置エンコーディング(RoPE など)が必要になる。