GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models
GLIDE(Guided Language to Image Diffusion for Generation and Editing)
時間:22/03
機構:OpenAI
TL;DR
本文研究使用Diffusion Model做影像生成過程,如何更好地加入conditional資訊。主要嘗試兩種方法: CLIP-guidance, Classifier-free guidance,並且證明了後者效果更佳。文字是後續DALLE2的重要baseline。
Method
Classifier-free guidance
不同於classifier guidance直接將text資訊c加入noise prediction每一步進行引導,classifier-free方法直接將c作為先驗輸入模型。另外,部分text/label資訊替換為空,以防止diffusion生成影像過程過度依賴於text/label資訊。s表示替換的比例(比如,s=1時就完全不替換,s=0.5時表示替換一半為空序列,文中超引數是替換了20%為空序列)
這個做法現在看好像很簡單,不過之前給diffusion加condition不太容易,參考本文對比的ADM方法,使用classifier guidance需要在每一步使用分類器進行類別引導,非常麻煩參考。
CLIP guidance
個人理解:diffusion model的reverse process每一步擴散都是在一個正態分佈的mean附近取樣,而CLIP guidance在這個mean附近增加一個擾動,該擾動與 f(x)和g(c)點積的梯度 有關。
直觀的motivation:一些利用CLIP將文字特徵融合到diffusion model中的方法,通常是對diffusion model reverse process過程中加過噪聲的影像進行特徵抽取,而CLIP在訓練過程見到的卻是清晰無噪的影像樣本,這導致reserse process時影像與文字的特徵並不是同分布,所以這類方法同常比較依賴資料增強來彌補這種分佈差異。而本文reverse process過程加入CLIP guidance之後,不僅增加了text的condition,還增加了noise image的condition先驗,緩解了該問題。上述這麼處理也只能讓diffusion model訓練過程aware CLIP的image與text encoder。所以,後面作者提到又重新訓練CLIP,讓CLIP重新學習noise image的分佈,稱之為noise CLIP。
網路
整體網路結構參考OpenAI 21年一篇文章ADM,根據作者描述,使用兩階段的Diffusion model,第一階段擴散生成64x64解析度的影像,第二階段是一個64 -> 256的上取樣擴散模型。text資訊使用了classifier-free方法進行編碼訓練,這樣模型在輸入空condition情況下也能正常工作。多模態資訊融合使用上CLIP guidance方法(也叫noise CLIP)。
Experiment
![](https://img2024.cnblogs.com/blog/1067530/202403/1067530-20240318231144898-288521397.png 600x600)
總結與發散
類似於stable diffusion(同期工作,SD是21年12月放出),特別是加condition的方式,不過還沒有像stable diffusion那樣直接在latent space擴散,而是使用低解析度DM,再使用提升解析度DM。另外,noise CLIP的做法聽起來比較make sense。
相關連結
ADM
如何評價OpenAI的工作GLIDE? - CVHub的回答 - 知乎
https://www.zhihu.com/question/507688429/answer/2829764157