LoginSignup
0
0

denoise diffusion 概要覚書

Posted at

https://towardsdatascience.com/understanding-the-denoising-diffusion-probabilistic-model-the-socratic-way-445c1bdc5756
https://towardsdatascience.com/understanding-diffusion-probabilistic-models-dpms-1940329d6048?gi=8cd1333625ac

cvpr2023のimagicの勉強の前に、
stable diffusionでおなじみ
生成モデルについて勉強するぜ。

画像xをいちから復元したいぜ。
正解の画像xが実は未知のパラメータ・潜在変数θに
従って生成されてる仮定すると、
画像xを復元する機構の仕組みのコンセプトは、
この適切なθをできるだけ模倣して、
正解画像xに近づけるように精度を上げることだぜ。

いやそもそも未知のパラメータθってなんなん?
θとは、画像の特徴が詰まってる空間。
オートエンコーダーの頃はθの構造が
さっぱりわからなかったけど、
エンコーダにθの分布をガウス分布に仮定して与えてやることで、
θの分布がわかるようになったぜ。
馬の画像を復元したいなら、θの分布はこの辺、
鳥の画像の分布はこの辺という感じで利用できるようになったぜ

ということでDDPM。
その前に画像における確率密度関数は何か整理するぜ。
例えば10x10の花の画像がどれくらいの確率分布で花になるか考える。
ピクセルの数は100ピクセル。ピクセルが任意に自由に色を取ると考えたとき、
ピクセル一つ一つが好き勝手色を変えたら、
画像全体が花になる確率はとんでもなく低いことが直感的にわかるぜ。
画像が花が映った時、ピクセル一つ一つがちょうど花になるように色を出力する確率を
ピクセルそれぞれに求めてやる。全ピクセルの確率を統括したものが確率密度関数だぜ。

DDPMはノイズを付与したあとにノイズを除去する機構を
学習で鍛え上げることで、自在に画像を出せるよう学習するぜ。

ということでまずは、ノイズを付与するフェーズ。
元画像x0は確率密度関数q(x)に従うものとするぜ。
q(x0)の意味するところは、元画像の確率密度を表したものになるぜ。
さて、X1X2…Xtを段階的に付与したノイズ画像とすれば、
前回のノイズ画像に対する新たなノイズ画像の分布q(Xt|Xt-1)は、
前回のノイズ画像の平均に基づき定義されるぜ。

今のがノイズをたすフェーズ。
我々が最終的に学習したいのは、ノイズから画像を生成する部分だぜ。
上述の通り、未知のパラメータをコントロールするために、
この時の確率密度関数をなんとか定式化したいぜ。
この時の定式は、なんかいろんな前提をみたせば、
ノイズ除去の時の確率密度pθ(x)も、
q(Xt|Xt-1)と同様にガウス分布にしたがうらしいぜ。
この式は、平均μθ、分散σθという未知のパラメータでガウス分布が構成されるぜ。

この未知のパラメータはどうやって学習するんだぜ??
学習するときは、何かしら目標の値ができるだけ
最大化するなり最小化するなりさせながら、パラメータを更新させつつ学習をするんだぜ。
今回でいえば、
ノイズを除去する時の確率密度pθ(x)が、
Xt.Xt-1…X1とノイズを除去していき、最終的に得る元画像の
確率分布pθ(x0)と、
元画像の確率密度q(x0)。これが同じになるはずだぜ。
pθ(x0)とq(x0)のKLを最小化、あるいは
q(x0)下でのpθ(x0)の対数尤度を最小化するぜ。
最小化するパラメータ平均μθ、分散σθを見つけることが必要になるぜ

ここからの式の整理はTwitterに書けるレベルじゃないぜ。
https://towardsdatascience.com/understanding-diffusion-probabilistic-models-dpms-1940329d6048?gi=8cd1333625ac
ここがわかりやすかったぜ。
最初、パラメータを平均μθ、分散σθとして定式化するわけだが、
最終的な損失関数の導出にあたり、
分散を固定化して、パラメータを平均μθのみにしたが、
Xtは元画像X0にノイズεを足したもので表される式

Xt=AX0+Bε(略)の式を導入することで、
最終的にはX0に追加されたノイズεを学習するように修正されるぜ。

最後に流れを説明するぜ。
まず学習フェーズ。元画像に対してノイズεをたすぜ。
そしてノイズ足された画像に対して機構を読み込ませて、
新たなノイズε'を推定。εとε'の誤差より最適化して、
更新されたεで最初のフェーズにもどるぜ

学習が終わればいよいよ生成。
ノイズをぶっこむぜ。1…Tステップにしたがって、
ノイズを除去する処理を行うぜ。
具体的には、今現在のノイズを推定して、Xt=AX0+Bε(略)の式を
X0に変えた式より、元画像を推定。
1回目のループ時点で元画像推定できるんだけど、
数回のループじゃ精度悪いので、
1…Tステップ全てでノイズ除去するぜ。
そのために、次のフェーズに渡すためのXt-1を
計算するぜ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0