拡散モデルの実装を理解するために、こちらのノートブックがとても分かりやすかったので紹介する。
diffusion-models-class/unit1 at main · huggingface/diffusion-models-class · GitHub
拡散モデル(DDPM)を、以下のように段階的に実装して確認できるようになっている。
- 画像に一様ランダムのノイズを加える
- UNetでノイズを加えた画像から元画像を予測する
- ランダム画像から段階的にUNetでノイズを除くことで鮮明な画像を生成する
- UNetをDiffusersのUNetに置き換えることでより鮮明な画像が生成できることを確認する
- ノイズを一様ランダムではなくガウス分布に変更し、あるタイムステップでのノイズを算出する
- 元画像ではなくノイズを予測するようにする
元のノートブックにGoogle翻訳を追加したノートブック
説明を読みながらセルを順番に実行していくことで、実装の概要が理解できた。
論文へのリンクもあって、より深く調べる際にも参考になる。