画像生成AIの「拡散モデル」
ノイズを消していったら画像が出てくる、って説明されても意味が分からん
【疑問】拡散モデルって、ノイズから画像を作るってどういうことなん?【AI】
>>1
基本の形は Ho、Jain、Abbeel の DDPM(Denoising Diffusion Probabilistic Models、2020年)
2つの向きの処理を考える
前向き:画像に少しずつノイズを足して、最後は完全なノイズにする
逆向き:ノイズから1段ずつノイズを取り除いて、画像に戻す。学習するのはこっち
>>2
前向きはどのくらいずつノイズを足すん
>>3
論文では1000段に分けて、段ごとのノイズの大きさ を0.0001から0.02まで直線的に増やしてる
1段ごとの式は
は標準正規分布(平均0、分散1)のノイズ
>>4
便利なのは、何段目でも元画像から一発で出せること
を を1段目から 段目まで掛けたものとすると
元画像の割合が 、ノイズの割合が
>>5
数字で
>>6
論文の設定で計算すると
:
:
:
259段目あたりで がほぼ0.5、つまり元画像とノイズが半々
>>7
1つの画素でやってみて
>>8
画素の値は から1に直してある。元の画素が0.8、引いたノイズが0.5、 の段なら
1000段目になると元画像の係数は約0.006で、ほぼノイズだけ
>>9
で、逆向きは何を学習するん
>>10
ニューラルネットに「この に混ざってるノイズ はどれか」を当てさせる
損失(当て外れの大きさ)は
がネットワークの予想。本物のノイズとの差の2乗を小さくする
>>11
画像そのものを当てさせるんやなくて、ノイズを当てさせるんか
>>12
そう。論文では、画像を当てさせる方式は初期の実験で質が悪かった、と書いてる
ノイズを当てる方式と、この単純な損失の組み合わせで一番いい画像が出た
>>13
生成するときは?
>>14
完全なノイズから始めて、予想したノイズを少しずつ引く、を1000段くり返す
1段ずつ、少しランダムなノイズも足し直しながら進める
>>15
1000回もネットワークを動かすん?一発で消せばええやん
>>16
論文の DDPM は1000段そのまま
1段のノイズを小さくしてるのは、逆向きの1段を正規分布で近似できるようにするため。一気に大きく戻そうとすると、その近似が成り立たん
段数を減らして速くする工夫は、後の研究のテーマになってる
性能はどうやったん
>>18
CIFAR10(32×32ピクセルの小さい画像のデータ)で、FID(生成画像と本物の画像の特徴の分布のずれ、小さいほどいい)が3.17
Inception スコア(大きいほどいい)は9.46
>>19
いや、FIDが小さいなら画像として完璧ってことやろ
>>20
FIDは特徴の分布の近さを測ってるだけで、1枚1枚の正しさは見てない
論文も、対数尤度(データをどれだけうまく説明できるかの指標)は他の方式に負けてる、と書いてる。見た目の質と別の指標の良し悪しは一致せん
管理人のひとこと
- 拡散モデル(DDPM、Ho ら、2020年)は、画像に1000段かけてノイズを足す前向きと、ノイズを1段ずつ取り除く逆向きを考え、逆向きを学習する。
- 何段目でも で一発で作れる。論文の設定( は0.0001→0.02)では259段目あたりで元画像とノイズが半々、1000段目でほぼノイズ。
- 学習はネットワークに混ざったノイズ を当てさせ、 を小さくする。生成はノイズから1000段かけて戻す。
- CIFAR10 で FID 3.17、Inception スコア9.46。ただし対数尤度では他の方式に負けており、指標によって評価は変わる。