就在剛剛,號稱是「開源版 Midjourney」的 Stable Diffusion XL 0.9 的技術報告,新鮮出爐。
「加強版」Stable Diffusion 最新技術報告出爐了!
報告地址:
https://github.com/Stability-AI/generative-models/blob/main/assets/sdxl_report.pdf
在 4 月開啟公測后,Stable Diffusion XL 受到不少人的青睞,號稱「開源版的 Midjourney」。
在畫手、寫字等細節(jié)上,SDXL 能夠全局把控,最重要的是不用超長 prompt 就可實現(xiàn)。
不僅如此,比起需要氪金的 Midjourney,SDXL 0.9 可以免費體驗!
有趣的是,研究團隊在最后的附錄中,竟然感謝了「ChatGPT 提供的寫作幫助」。
「小勝」Midjourney
那么,與 Midjourney 相比,SDXL 究竟有多能打?
報告中,研究人員從每個類別中隨機選擇了 5 個提示,并針對每個提示使用 Midjourney(v5.1,種子設定為 2)和 SDXL 生成了四張 1024×1024 的圖像。
然后將這些圖像提交給 AWS GroundTruth 任務組,該任務組根據(jù)遵循提示進行投票。
總體而言,在遵循提示方面,SDXL 略優(yōu)于 Midjourney。
對比涵蓋了 PartiPrompts(P2)基準測試中的所有「類別」和「挑戰(zhàn)」。
值得注意的是,SDXL 在 54.9% 的情況下優(yōu)于 Midjourney V5.1。
初步測試表明,最近發(fā)布的 Midjourney V5.2 在理解提示方面反而有所降低。不過,生成多個提示的繁瑣過程妨礙了進行更廣泛測試的速度。
P2 基準中的每個提示都按照類別和挑戰(zhàn)進行了組織,每個類別和挑戰(zhàn)都專注于生成過程的不同難點。
如下展示了 P2 基準中每個類別(圖 10)和挑戰(zhàn)(圖 11)的比較結果。
在 6 個類別中的 4 個,SDXL 表現(xiàn)優(yōu)于 Midjourney,在 10 個挑戰(zhàn)中的 7 個,兩個模型之間沒有顯著差異,或者 SDXL 表現(xiàn)優(yōu)于 Midjourney。
大家也可以來猜猜看,下面這組圖中,哪些是 SDXL 生成的,哪些是 Midjourney 生成的。
(答案會在下文中揭曉)
SDXL:開源最強文生圖
去年,號稱最強文生圖模型 Stable Diffusion 開源,點燃了全球生成式 AI 的火把。
比起 OpenAI 的 DALL-E,Stable Diffusion 讓人們能夠在消費級顯卡上實現(xiàn)文生圖效果。
Stable Diffusion 是一種潛在的文本到圖像的擴散模型(DM) ,應用非常廣泛。
近來基于功能磁共振成像 fMRI 重建大腦圖像的研究,以及音樂生成的研究都是基于 DM 展開的。
而這個爆火工具背后的初創(chuàng)公司 Stability AI,在今年 4 月再次推出,Stable Diffusion 改進版本 ——SDXL。
根據(jù)用戶研究,SDXL 的性能始終超過 Stable Diffusion 以前所有的版本,比如 SD 1.5 、SD2.1。
報告中,研究人員提出了導致這種性能提升的設計選擇,包括:
1)與以前的 Stable Diffusion 模型相比,UNet 主干架構增加了 3 倍;
2)兩種簡單而有效的附加調節(jié)技術,不需要任何形式的額外監(jiān)督;
3)一個單獨的基于擴散的細化模型,該模型對 SDXL 產生的潛在信號采用去噪處理 ,以提高樣本的視覺質量。
改善 Stable Diffusion
研究人員對 Stable Diffusion 架構進行了改進。這些都是模塊化的,可以單獨使用,或一起使用來擴展任何模型。
報告稱,盡管以下策略是作為潛在擴散模型的擴展開展的 ,但其中大多數(shù)也適用于像素空間的對應物。
當前,DM 已被證明是圖像合成的強大生成模型,卷積 UNet 架構成為基于擴散的圖像合成的主導架構。
隨著 DM 發(fā)展,底層架構也在不斷演進:從增加自注意力和改進升級層,到文本圖像合成的交叉注意力,再到純粹基于 Transformer 架構。
在 Stable Diffusion 不斷改進中,研究人員也在遵循這一趨勢,將大部分 Transformer 計算轉移到 UNet 中較低級的特征中。
特別是,與原來的 SD 架構相比,研究人員在 UNet 中使用了不同的 Transformer 塊異構分布。
為了提高效率,并在最高特征級別中省略了 Transformer 塊,在較低級別中使用 2 個和 10 個塊,還在 UNet 中完全刪除了最低級別(8 倍下采樣),如下圖所示。
研究人員選擇了一個更強大的預訓練文本編碼器,用于文本調節(jié)。
具體來說,將 OpenCLIP ViT-bigG 與 CLIP ViT-L 結合使用,這里沿著通道軸連接倒數(shù)第二個文本編碼器輸出。
除了使用交叉注意層來約束模型的文本輸入之外,研究人員還遵循 ,并且 OpenCLIP 模型的混合嵌入文本上附加約束模型。
由此,這些因素導致了 UNet 中的模型參數(shù)大小為 2.6B,文本編碼器總參數(shù)為 817M。
微調
潛在擴散模型(LDM)最大的缺點是,由于它是兩階段架構,訓練一個模型需要最小的圖像大小。
解決這個問題主要有 2 個方法,要么丟棄低于某個最小分辨率的訓練圖像,(SD 1.4/1.5 丟棄所有低于 512 像素的圖像)要么選擇超小的高級圖像。
然而,第一種方法會導致可能導致大量的訓練數(shù)據(jù)被丟棄,圖像性能會損失。研究人員為 SDXL 預先訓練數(shù)據(jù)集做了一個可視化效果。
對于特殊的數(shù)據(jù)選擇,丟棄低于 256×256 像素預訓練分辨率的所有樣本,將導致 39% 數(shù)據(jù)丟失。
而第二種方法,通常會帶來升級的偽影,這些偽影可能會泄露到最終的模型輸出中,導致樣本模糊。
對此,研究人員建議將 UNet 模型以原始分辨率為條件。這在訓練期間非常容易獲得。
特別是,提供了原始圖像的高度和寬度作為模型
的附加條件。
每個組件都使用傅里葉特征編碼獨立嵌入,并連接成一個向量,研究團隊通過添加到時間步長嵌入中來反饋到模型中。
在推斷時,用戶可以通過這種尺寸調節(jié)來設置圖像所需的直觀分辨率。顯然 ,模型已經學會將條件
與分辨率相關的圖像特性。
如圖,研究人員顯示了從 SDXL 中用相同的隨機種子抽取 4 個樣本,并改變大小調節(jié)。當調節(jié)較大的圖像尺寸時,圖像質量明顯提高。
如下是 SDXL 的輸出,與 SD 以前版本的比較。對于每個 prompt,研究人員在 DDIM 采樣器和 cfg-scale 8.0 的 50 步的 3 個隨機樣本。
在先前的 SD 模型中,合成的圖象可能會被不正確地裁剪,比如左邊例子中 SD 1.5 和 SD 2.1 生成的貓頭。
而從以下這些對比中不難看出,SDXL 基本上已經把這個問題給解決了。
能夠實現(xiàn)如此顯著的改善,是因為研究人員提出了一種簡單而有效的條件化方法:
在數(shù)據(jù)加載過程中,統(tǒng)一采樣裁剪坐標
和
(分別指定從左上角沿高度和寬度軸裁剪的像素數(shù)量的整數(shù)),并通過傅里葉特征嵌入將它們作為條件化參數(shù)輸入模型,類似于上述尺寸條件化方法。
然后使用連接嵌入
作為附加條件參數(shù)。
在此,研究團隊特別強調,這并不是唯一適用于 LDMs 的技術,裁剪和尺寸調節(jié)可以很容易地結合起來。
在這種情況下,沿著通道維度連接嵌入的特征,然后將其添加到嵌入 UNet 的時間步長中。
如圖,通過調優(yōu)
,可以成功地模擬推理過程中的裁剪量。
全面訓練
受到以上技術啟發(fā),研究人員還對模型進行微調,以同時處理多個縱橫比:將數(shù)據(jù)分割成不同縱橫比的桶形,在這里盡可能保持像素計數(shù)接近 1024×1024,相應地以 64 的倍數(shù)改變高度和寬度。
改進的自編碼器
雖然大部分的語義構成是由 LDM 完成的,但研究人員可以通過改進自編碼器來改善生成圖像中的局部、高頻細節(jié)。
為此,研究人員以更大的批處理規(guī)模(256 vs 9)來訓練用于原始 SD 相同的自編碼器結構,并以指數(shù)移動平均數(shù)來跟蹤權重。
由此產生的自編碼器在所有評估的重建指標中,都優(yōu)于原始模型。
SDXL 誕生了
研究人員在一個多階段的過程來訓練最終的模型 SDXL。SDXL 使用了自編碼器,和 1000 步的離散時間擴散計劃。
首先,在一個內部數(shù)據(jù)集上預訓練一個基礎模型,其高度和寬度分布顯示為 60 萬個優(yōu)化步驟,分辨率為 256 × 256,批大小為 2048,使用如上所述的尺寸和裁剪調節(jié)。
然后,研究人員繼續(xù)對 512×512 的圖像進行訓練,再進行 20 萬個優(yōu)化步驟,最后利用全面訓練,結合 0.05 的偏移噪聲水平,在約 1024×1024 像素區(qū)域不同縱橫比訓練模型。
在細化階段上,研究人員發(fā)現(xiàn)得到的模型有時會產生局部質量低的樣本,如下圖所示。
為了提高樣本質量,他們在相同的潛在空間中訓練了一個獨立的 LDM,專門處理高質量、高分辨率的數(shù)據(jù),并采用 SDEdit 在基本模型樣本上引入去噪處理。
在推理過程中,研究人員使用相同的文本輸入,從基本 SDXL 渲染潛在信息,并使用細化模型在潛在空間中直接擴散和去噪。
值得一提的是,這一步能夠提高背景和人臉的樣本質量,并且可選。
局限性
雖然 SDXL 在性能上已經有了不小的提升,但模型依然存在著明顯的局限性。
首先,SDXL 還是不能很好地處理比如人手這類的復雜結構。
研究人員推測,產生這種問題的原因是,由于不同圖像中人手以及其他結構復雜的物體,存在著很大的差異性,因此模型很難提取出真實的 3D 形狀。
其次,SDXL 生成的圖像還遠不及照片那樣逼真。
在一些微妙的細節(jié)上,比如弱光效果或紋理變化,AI 生成的圖像可能會出現(xiàn)缺失或表現(xiàn)得不夠準確。
此外,當圖像中包含有多個物體或主體時,模型可能會出現(xiàn)所謂的「概念溢出」現(xiàn)象。這個問題表現(xiàn)為,不同視覺元素的意外合并或重疊。
例如,下圖中的橙色太陽鏡,就是因為「橙色毛衣」出現(xiàn)了概念溢出。
而在圖 8 中,本應該戴著「藍色帽子」和「紅色手套」的企鵝,在生成的圖像中卻是戴著「藍色手套」和「紅色帽子」。
與此同時,一直困擾著文生圖模型的「文字生成」部分,依然是個大問題。
如圖 8 所示,模型生成的文本有時可能包含隨機字符,或者與給定的提示并不一致。
未來的工作
對此,研究人員表示,對于模型的進一步改進,主要會集中在以下幾個方面:
?單階段生成
目前,團隊使用的是一個額外的細化(refinement)模型以兩階段的方式,來生成 SDXL 的最佳樣本。這樣就需要將兩個龐大的模型加載到內存中,從而降低了可訪問性和采樣速度。
?文本合成
規(guī)模和更大的文本編碼器(OpenCLIP ViT-bigG)有助于改善文本渲染能力,而引入字節(jié)級 tokenizer 或將模型擴展到更大規(guī)模,可能會進一步提高文本合成的質量。
?架構
在探索階段,團隊嘗試了基于 Transformer 的架構,如 UViT 和 DiT,但沒有顯著改善。然而,團隊仍然認為,通過更仔細的超參數(shù)研究,最終能夠實現(xiàn)更大的基于 Transformer 的架構的擴展。
?蒸餾
雖然原始的 Stable Diffusion 模型已經得到了顯著的改進,但代價是增加了推斷的成本(包括顯存和采樣速度)。因此,未來的工作將集中于減少推斷所需的計算量,并提高采樣速度上。比如通過引導蒸餾、知識蒸餾和漸進蒸餾等方法。
目前,最新報告還只在 GitHub 上可以查看。Stability AI 的 CEO 稱,馬上會上傳到 arxiv 上。
參考資料:
https://twitter.com/emostaque/status/1676315243478220800?s=46&t=iBppoR0Tk6jtBDcof0HHgg
https://github.com/Stability-AI/generative-models/blob/main/assets/sdxl_report.pdf
本文來自微信公眾號:新智元 (ID:AI_era)
廣告聲明:文內含有的對外跳轉鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結果僅供參考,IT之家所有文章均包含本聲明。