[2112.10741] GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models [paper-reading]
yoheikikuta opened this issue · 10 comments
論文リンク
https://arxiv.org/abs/2112.10741
公開日(yyyy/mm/dd)
2021/12/20
概要
diffusion model で画像生成をするというのが流行っているが、生成したい画像をテキストで表現してそれに適う photorealistic な画像生成に成功しましたという論文。
同様のタスクでは同じく OpenAI が出した DALL·E の結果が衝撃的だったが、この GLIDE の結果は DALL·E よりも明確に良いもので、自分たちで塗り替えたということこになる。
classifire-free guidance という枠組み(これ自体は過去論文で提案されている)を使い、テキストからの画像生成を実現している。
いくつか実験をしているが、生成されている画像は photorealistic と言っても過言ではないような画像も生成できていて、結果はかなり驚きのレベルで良いものだった。
公式実装(小さいモデルだけしか公開されてない): https://github.com/openai/glide-text2im
以前 diffusion model の勉強をしようと思って論文を読んだ #62 が、もともとやりたかったのはこの論文を見て diffusion model 知らないから勉強してみるか〜ということだった。
この論文自体ではそこまでアルゴリズムとかモデルの話はない。
結果が特に凄そうなので、実際どんなもんなのか論文の結果を見て感心しようというゆるふわ回。
論文のモチベーションはタイトルの通りで、テキストを入力してそれにマッチする photorealistic を画像生成を diffusion model で実現したい(できる)というものである。
この手のタスクで衝撃を受けたのが DALL·E だったが、その DALL·E よりも良い結果(人間が選んだときにより評価が高い)が出ているということで興味を持った。
ちなみに DALL·E の中でも使っている CLIP をこの論文でも使うので、それは事前知識として知っておいた方がよい。
以前論文読みをした際のメモは #57
その他に事前知識として必要なのは、diffusion model で画像生成する際に、class conditional な画像生成をするための手法として提案されている以下の論文:
- classifier guidance
- https://arxiv.org/abs/2105.05233
- これは 画像 → ラベル をする classifier を別途準備して、diffusion model の reverse process の学習をする(これは y given の conditional な状況になる)ときに平均 μ の部分に classifier の予測の勾配も入れることで class conditional な生成を可能にする
- diffusion model では noise 画像を noise 除去するという形で画像生成をするため、ここで準備する classifier は noise が乗ってる画像で予測できる能力が必要。つまり既存の pre-trained model は使えず独自で学習する必要がある
- classifier-free guidance
- https://neurips.cc/Conferences/2021/ScheduleMultitrack?event=33972#:~:text=Classifier%20guidance%20is%20a%20recently,other%20types%20of%20generative%20models
- 上記の問題を解決するために考案された classifier-free の方法
- これは同じモデルアーキテクチャで conditional ε_θ (z_λ, c) と unconditional ε_θ (z_λ, c=0) を学習して、sampling のときにこれらの差の情報をコントロールして使うことで label のある方向に guide しつつ多様性も確保するようにしている
さすがにこれだけだと何を言ってるかは分からん。
自分はこれらの論文をちゃんと読めてはいなく流し読みしただけだが、この論文でも少し説明されているので、それを追って理解したつもりになるということで満足しておくことにする。
上で導入したものの数式的な理解と、この論文で追加で定義している CLIP guidance を見てみる。
guided diffusion
diffusion model とは別の、noise あり $ x → y $ (label) を予測するモデル $ p_\phi $ を使って、平均 $ μ $ を以下のように定める。
これは二項目が特徴的で、classifier $ p_\phi (y|x_t) $ の勾配情報を使っている。
これにより、ノイズを除去していって画像を生成していくときに、あるクラス $ y $ と予測される確率が高くなるような方向へ誘導しているということが分かる。ただし、この classifier はノイズあり $ x_t $ で予測をする必要があるので、それ用に学習しないといけないというものになっている。
一項目が $ y $ で条件づけられてるのはちょっとよく分かってない。
元論文では diffusion model の方は完全に unconditional で使っていて、ラベル情報を付与する classifier とは完全に分離して取り扱っているので。とはいえ diffusion model も embedding とかを通して class conditonal に学習することはできるので、まあそういうケースも考慮して書いてるのかもしれない。
classifeir-free guidance
ぶっちゃけこれちゃんと理解してないので今の理解を書いておく。もっと詳しくなったら適宜修正したい(しなそう)。
これは diffusion model だけで完結するもので、conditional と unconditional を両方学習してその情報を使うというものである。
conditional で学習するというのは、学習段階では入力画像と label を準備することができるので、label の embedding をモデルに足し込むことを意味している。
unconditional で学習するというのはつまり普通の diffusion process の学習なのだが、同じモデルでそれを表現するためにラベル情報を使わない(embedding の結果として 0 vector になる)ものも陽に取り扱っていることを意味している。
これで学習するノイズの表式を上記の式にように定義する。
$ s $ の parameter の調整によって、class $ y $ の方にもっと誘導したり、誘導を弱めて画像の多様性を高めたりするというものになっている。
ここで使っているのは embedding vector なので、ラベルじゃなくてテキスト(例えば画像のキャプション)を使うこともできるというのがポイントになる。まさにこの論文でやりたいことだ。
CLIP guidance
CLIP は画像とテキスト両方のエンコーダー $ f(x), g(c) $ があるので、今回やりたいことにおあつらえ向きである。
画像とテキストの特徴量は別の空間でなく同じ空間に map して処理する(つまり画像とテキストの特徴量は密接に結びついてる)ので、$ f(x) g(c) $ の積を使っていることに注意。
あとは基本的に guided diffusion とやっていることは同様で、noise あり画像に対して CLIP を学習しないといけないというのも同じだ(これはだいぶ高コストだな〜)。
学習の際の詳細はスキップしてしまって、結果だけを眺めてみる。
いくつか面白い実験をしている。
そして論文を読んだときはてっきり CLIP guidance が一番良いのかと思いきや、classifier-free guidance の結果が一番良いという結果になっている(abstract には書いてあるけど。)。
全部を載せるのは大変なので、以下の結果だけ載せる。
- classifier-free でテキストを conditional にして画像生成をした結果
- 上と同様の枠組みだが、image inpainting をした結果
- これも上と同様の枠組みだが、iterative に複雑な画像を生成した結果
- DALL·E との比較
ということで結果がすごいのであまり内容自体には触れてないゆるふわ回ではあったが、一通りは眺めた。
こんだけ photorealistic な画像生成ができるとは思ってなかったので、驚いた。
公式実装も公開されているが、以下とのことで小さいモデルのみが公開されてるのは残念感はある。
To safeguard against these use cases while aiding future research, we release a smaller diffusion model and a noised CLIP model trained on filtered datasets