yoheikikuta / paper-reading

Notes about papers I read (in Japanese)
156 stars 4 forks source link

[2112.10741] GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models #63

Open yoheikikuta opened 2 years ago

yoheikikuta commented 2 years ago

論文リンク

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

yoheikikuta commented 2 years ago

以前 diffusion model の勉強をしようと思って論文を読んだ https://github.com/yoheikikuta/paper-reading/issues/62 が、もともとやりたかったのはこの論文を見て diffusion model 知らないから勉強してみるか〜ということだった。

この論文自体ではそこまでアルゴリズムとかモデルの話はない。 結果が特に凄そうなので、実際どんなもんなのか論文の結果を見て感心しようというゆるふわ回。

yoheikikuta commented 2 years ago

論文のモチベーションはタイトルの通りで、テキストを入力してそれにマッチする photorealistic を画像生成を diffusion model で実現したい(できる)というものである。

この手のタスクで衝撃を受けたのが DALL·E だったが、その DALL·E よりも良い結果(人間が選んだときにより評価が高い)が出ているということで興味を持った。

ちなみに DALL·E の中でも使っている CLIP をこの論文でも使うので、それは事前知識として知っておいた方がよい。 以前論文読みをした際のメモは https://github.com/yoheikikuta/paper-reading/issues/57

yoheikikuta commented 2 years ago

その他に事前知識として必要なのは、diffusion model で画像生成する際に、class conditional な画像生成をするための手法として提案されている以下の論文:

さすがにこれだけだと何を言ってるかは分からん。 自分はこれらの論文をちゃんと読めてはいなく流し読みしただけだが、この論文でも少し説明されているので、それを追って理解したつもりになるということで満足しておくことにする。

yoheikikuta commented 2 years ago

上で導入したものの数式的な理解と、この論文で追加で定義している 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 を学習しないといけないというのも同じだ(これはだいぶ高コストだな〜)。

yoheikikuta commented 2 years ago

学習の際の詳細はスキップしてしまって、結果だけを眺めてみる。 いくつか面白い実験をしている。 そして論文を読んだときはてっきり CLIP guidance が一番良いのかと思いきや、classifier-free guidance の結果が一番良いという結果になっている(abstract には書いてあるけど。)。

全部を載せるのは大変なので、以下の結果だけ載せる。

yoheikikuta commented 2 years ago

classifier-free でテキストを conditional にして画像生成をした結果

すごい。すごくてビビる。 DALL·E も衝撃的だったが、まだどこか画像としてちょっと違和感がある(人が描いたっていっても信じれるかもしれないけど、うまくはないな、みたいな感じ)ものがあったが、これはなんというかそういう違和感が全然ないものが多い。

yoheikikuta commented 2 years ago

上と同様の枠組みだが、image inpainting をした結果

image inpating は欠損した画像を修正するというタスク。 これは左の画像の緑部分を削除(noise にする)して、あとはそれとテキスト情報を元に画像生成をすることで、欠損した部分をテキスト情報に合わせて修正するというものである。 仕組み自体はまあできるだろという話なのだが、つなぎ目とかも結構自然で、lighting とかもばっちりでこれもすごいな〜と唸った。

yoheikikuta commented 2 years ago

これも上と同様の枠組みだが、iterative に複雑な画像を生成した結果

inpainting と同様の方法だが、それを iterative にやって画像をどんどん変化させていく様子。 これもそれぞれの処理で割と自然に画像を修正していって、面白い。diffusion model は速度的には厳しいけど、こういう感じで interactive に変化させられるものができると応用は色々ありそうで面白いなと思う。

yoheikikuta commented 2 years ago

DALL·E との比較

最後に DALL·E との比較。 DALL·E で CLIP reranking をしたものよりも良い結果に見える。DALL·E はテクスチャがなんかのっぺりしたしがちだけど、GLIDE は photorealistic だなって感じがする。すごい。

論文では CLIP reranking は処理としても重いしっても言ってるけど、diffusion model はそもそも繰り返しの処理をして重いのでそこはまあ言いっこなしですよねとは思う。

yoheikikuta commented 2 years ago

ということで結果がすごいのであまり内容自体には触れてないゆるふわ回ではあったが、一通りは眺めた。 こんだけ 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