DiT (Diffusion Transformer)

Last-modified: 2025-12-21 (日) 21:10:18

DiT (Diffusion Transformer)とは

SD3、FLUX.1Qwen-Imageで採用されている画像生成モデル。
SD1.5やSDXLではU-Net拡散モデル(UNet Diffusion Model)が使われていた。

(t2iでは)ランダムノイズを元に画像を生成するというコンセプトはU-Net拡散モデルと同じ。
各ステップでの入力である、仕掛かり画像の認識の仕方とプロンプト解釈がU-Netと異なる。LLMで成功したTransformerアーキテクチャが採用されている。

U-Netとの違いは、各ステップでの処理途中の画像について、
U-Net拡散モデルは虫の目と鳥の目とを階層的に使い分けて細部の構造と大域的な構造を各層ごとに処理するが*1
DiTでは画像全体をいきなりバラバラなパッチに切り分けてトークン化し、プロンプトも同列にトークン化、そしてトークン間の関係性を直接分析する……らしい。

U-Netはもともと画像の構図を分析して各部位にキャプションを付けるセグメンテーションに強くて、
Transformerは自然言語の処理で成功したモデルだということを考慮すれば分かりやすい……かもしれない。


またDiTモデルは逆拡散過程についても、従来の潜在拡散モデルでなくFlow Matching系のアルゴリズムを採用していることが多い。

論文

DiTの長所

  • 参入障壁が低い。Transformerは汎用性が高く、プロンプト条件付け等を自然に組み込める上、LLMで培われた高速化技術や学習ノウハウが転用できる。
    • U-Net拡散モデルほどには職人技が必要とされない。
    • 最近の画像生成AIでMMDiTが選ばれているのは、新しくて性能がいいからというだけでなく、U-Net拡散モデルは設計が難しく今さら採用するメリットが薄いという点も大きい。
  • プロンプト追従性が高くなりやすい。
    U-Net(CNN)は多重下請け構造で、距離的に離れた部位の整合性を取るのは苦手。複数人を描き分けたりするのも苦手で服装が混ざったりする。
    DiTは仕掛品の画像全体を一度にトークン化し、画像トークン(制作部門)とプロンプトトークン(営業部門)がワンチームで処理を行う。
    • ただし、プロンプト追従性については拡散モデル特有の問題もかなり大きい。その点はFlow Matchingの採用により改善されている。
    • 推奨解像度と異なるサイズの画像を生成させても、理論的にはU-Netより破綻しにくい傾向があるとされる。
    • ただし、複数個体の描き分け(Multi-Subject Generation)は画像生成の難問とされており、DiTでも完全に解決したわけではない。
    • もともとオリジナルのU-Netは画像の解析だけを行っていたのでプロンプト条件付けを行う機構はなく、U-Net拡散モデルではTransfomerアーキテクチャーからAttension機構だけを借用して条件付けに使っていた。初期のSDの頃のPCスペックでは画像生成モデル全体をTransformer化するのはあまり現実的ではなかった。
  • 拡張性もU-Netより高いとされる。
    U-Netはあくまで画像が主役のアーキテクチャだが、DiTはLLMから来ていることからも分かるように、トークン化さえできれば多様なデータを統一的に扱うことができる。

DiTの短所

  • DiTそのものはオブジェクトの拡大縮小に強いわけではない。あくまで構図の認識がU-Net拡散モデルより巧みというだけで、各オブジェクトをどのくらいの大きさで描けるかは学習データによる。
  • 素材感や質感、塗りといったごく細部の描写については、虫の目専門部隊を持つU-Net拡散モデルほど強くない、らしい。
    ただし細部の描写については、現在主流の画像生成AIは実寸で出力しているわけではなく前後にVAEによるエンコード/デコードを挟むのでVAEによる影響も大きい。
  • また学習コストが高い。LLMと同様、柔軟で抽象的な概念を学習するために多様な教師画像が必要で計算コストも大きい。

*1 階層マージのページを見ると分かりやすい……かもしれない。虫の目つまり浅層を中心にマージすることで塗りだけ別のモデルっぽくできるのはこのため。