DeepSeek新作Janus:解耦視覺(jué)編碼,引領(lǐng)多模態(tài)理解與生成統(tǒng)一新范式
- 論文: https://arxiv.org/pdf/2410.13848
- 項(xiàng)目主頁(yè):https://github.com/deepseek-ai/Janus
- 模型下載:https://huggingface.co/deepseek-ai/Janus-1.3B
- 在線 Demo:https://huggingface.co/spaces/deepseek-ai/Janus-1.3B
1. 太長(zhǎng)不看版
我們提出了 Janus,一種基于自回歸的多模態(tài)理解與生成統(tǒng)一模型。Janus 的核心思想是對(duì)理解和生成任務(wù)的視覺(jué)編碼進(jìn)行解耦,在提升了模型的靈活性的同時(shí),有效緩解了使用單一視覺(jué)編碼導(dǎo)致的沖突和性能瓶頸。實(shí)驗(yàn)表明,Janus 超越了此前的統(tǒng)一模型的效果,并取得了和純理解 / 純生成模型比肩或更好的性能。我們通過(guò)詳細(xì)嚴(yán)格的對(duì)比實(shí)驗(yàn)證實(shí)了解耦的好處,并分析了理解生成統(tǒng)一訓(xùn)練相較于分開(kāi)訓(xùn)練帶來(lái)的影響。
在羅馬神話中,Janus (雅努斯) 是象征著矛盾和過(guò)渡的雙面守護(hù)神。我們將模型命名為 Janus,形象地表示我們的模型可以像 Janus 一樣,用不同的眼睛看向視覺(jué)數(shù)據(jù),分別編碼特征,然后用同一個(gè)身體 (Transformer) 去處理這些輸入信號(hào)。此外,得益于解耦的設(shè)計(jì),Janus 極易擴(kuò)展,研究者們可以將理解和生成領(lǐng)域最新的編碼技術(shù)直接應(yīng)用在 Janus 之上。我們希望我們提出的框架能和雅努斯一樣,象征著多模態(tài)統(tǒng)一模型的舊范式到新范式的過(guò)渡。
2. 背景和動(dòng)機(jī)
2.1 相關(guān)工作
多模態(tài)理解大模型和視覺(jué)生成模型都取得了飛速的發(fā)展。最近,也有一些工作嘗試將這兩者進(jìn)行統(tǒng)一,構(gòu)造更強(qiáng)大的通用模型。將理解和生成進(jìn)行統(tǒng)一具有重大意義。從模型部署角度來(lái)說(shuō),統(tǒng)一之后能避免分開(kāi)部署多個(gè)模型,減少了模型的冗余性。且社區(qū)對(duì) LLM 的推理做了很細(xì)致的優(yōu)化,如果能統(tǒng)一到一個(gè) LLM 中,會(huì)很方便;從結(jié)果來(lái)說(shuō),理解和生成統(tǒng)一可以提高視覺(jué)生成的指令跟隨能力,甚至解鎖一些涌現(xiàn)能力,例如多語(yǔ)言視覺(jué)生成,或隨著 LLM 的 scale up 獲得更強(qiáng)的能力。
有一些先驅(qū)工作 (EMU, Seed) 嘗試將預(yù)訓(xùn)練好的 Diffusion Model 接在多模態(tài)理解模型后面。這些方法中,多模態(tài)理解模型輸出 Diffusion Model 的條件,然后依賴(lài) Diffusion Model 做圖像生成。但是,這樣的設(shè)計(jì)中,LLM 本身并不具備直接出圖的能力,出圖的性能也往往被外接的 Diffusion Model 所限制。后來(lái)的一些工作 (Chameleon, Vila-U, Show-O 等) 則提出直接讓 LLM 處理多模態(tài)理解和生成任務(wù),真正做到了統(tǒng)一。但是,這些方法通常將視覺(jué)編碼器也進(jìn)行了合并,即:用一個(gè)視覺(jué)編碼器同時(shí)負(fù)責(zé)理解與生成任務(wù)。
2.2 目前方法存在的問(wèn)題
由于多模態(tài)理解和生成任務(wù)所需的信息不完全一致,視覺(jué)編碼器的合并可能導(dǎo)致一些問(wèn)題。(1) 多模態(tài)理解任務(wù)通常需要的是對(duì)圖像或視頻等視覺(jué)輸入的高層語(yǔ)義理解,因此需要視覺(jué)編碼器能夠從低級(jí)像素信息逐漸轉(zhuǎn)換為具有更高層語(yǔ)義的信息。(2) 對(duì)視覺(jué)生成任務(wù)來(lái)說(shuō),視覺(jué)編碼器需要傳遞細(xì)粒度的視覺(jué)信息,通常需要保留更多的細(xì)節(jié)信息,例如紋理、顏色等。將這兩個(gè)任務(wù)的視覺(jué)編碼壓縮到同一個(gè)表征空間中,會(huì)帶來(lái)一些沖突和妥協(xié)。由于專(zhuān)門(mén)為多模態(tài)理解設(shè)計(jì)的編碼器很多并不能直接來(lái)做視覺(jué)生成,現(xiàn)有的方案在挑選編碼器時(shí),往往優(yōu)先考慮圖像生成任務(wù) (如 使用 VQ Tokenizer 作為編碼器),導(dǎo)致目前的統(tǒng)一模型生成能力還不錯(cuò),但是多模態(tài)理解能力和當(dāng)前最先進(jìn)的方法差異較大。
3. 方法
3.1 模型結(jié)構(gòu)
為了解決單一視覺(jué)編碼器帶來(lái)的性能瓶頸,我們提出了對(duì)視覺(jué)編碼進(jìn)行解耦。具體來(lái)說(shuō),我們使用兩個(gè)獨(dú)立的視覺(jué)編碼器分別負(fù)責(zé)多模態(tài)理解和生成任務(wù),然后用一個(gè)統(tǒng)一的 Transformer 結(jié)構(gòu)去處理不同的輸入信息。
為了簡(jiǎn)化整個(gè)模型,我們?cè)谶x取視覺(jué)編碼器的時(shí)候沒(méi)有進(jìn)行復(fù)雜的設(shè)計(jì)。對(duì)多模態(tài)理解任務(wù)來(lái)說(shuō),我們使用 SigLIP-Large-Patch16-384 去編碼特征。對(duì)視覺(jué)生成任務(wù)來(lái)說(shuō),我們使用 LlamaGen 中訓(xùn)練的標(biāo)準(zhǔn) VQ Tokenizer 去編碼。編碼后的信息會(huì)分別經(jīng)過(guò)一個(gè) adaptor,然后送入 LLM 中。整個(gè)模型是使用 Next-Token-Prediction 的方式進(jìn)行訓(xùn)練的,采用 causal attention mask,和 LLM 的訓(xùn)練方式一致。
3.2 訓(xùn)練流程
Janus 的訓(xùn)練分為三個(gè)階段。(每一階段使用的數(shù)據(jù)詳情請(qǐng)參考 paper。整體上會(huì)控制 多模態(tài)理解 + 純文本理解:視覺(jué)生成 = 1:1)
- 在第一階段,我們使用 Image Caption 數(shù)據(jù)和 ImageNet 文生圖數(shù)據(jù),對(duì) understanding adaptor, generation adaptor, image head 這三個(gè)隨機(jī)初始化的模塊進(jìn)行訓(xùn)練,起到 warm up 的效果。
- 在第二階段,我們額外打開(kāi) LLM 和 text head,然后使用大量純文本、圖生文和文生圖的數(shù)據(jù)進(jìn)行聯(lián)合預(yù)訓(xùn)練。對(duì)于文生圖數(shù)據(jù),我們會(huì)讓 ImageNet 這部分?jǐn)?shù)據(jù)出現(xiàn)在其他場(chǎng)景的文生圖數(shù)據(jù)之前,先學(xué)習(xí)像素依賴(lài)關(guān)系,然后學(xué)習(xí)場(chǎng)景生成 (參照 Pixart 中的設(shè)定)。
- 在第三階段,我們額外打開(kāi) understanding encoder,使用指令跟隨數(shù)據(jù)進(jìn)行訓(xùn)練。
3.3 推理流程
我們使用 Next-Token-Prediction 的方式進(jìn)行推理,所以可以使用針對(duì) LLM 進(jìn)行的優(yōu)化,例如 KV Cache, vLLM 等加速推理。對(duì)視覺(jué)生成任務(wù),遵循之前的方法,我們還額外使用了 classifier-free guidance (cfg) 機(jī)制,即每個(gè) token 的 logit 由以下公式得出:
其中, 是無(wú)條件生成得到的 logit,s 是 cfg 權(quán)重,默認(rèn)為 5。相應(yīng)的,為了讓 cfg 能順利進(jìn)行,我們?cè)谟?xùn)練時(shí)會(huì)隨機(jī)將 10% 的文生圖數(shù)據(jù)置換為無(wú)條件生圖。
3.4 可能的擴(kuò)展
Janus 的設(shè)計(jì)非常靈活,易于擴(kuò)展。
- 多模態(tài)理解方面,(1) 可以使用比 SigLIP 更強(qiáng)的 encoder,例如 EVA-CLIP 或 InternViT 6B,而不用擔(dān)心這些 encoder 是否能來(lái)做生成。(2) 可以引入當(dāng)前多模態(tài)理解領(lǐng)域先進(jìn)的動(dòng)態(tài)分辨率技術(shù) (將圖像切成多個(gè)子塊,提供更好的細(xì)粒度理解能力) 和 pixel shuffle 壓縮技術(shù)。
- 視覺(jué)生成方面,(1) 可以將當(dāng)前的 VQ Tokenizer 替換成更好的 tokenizer,例如 MoVQGan 以及最近剛出的 HART (一種結(jié)合連續(xù)和離散的優(yōu)點(diǎn)的 tokenizer)。(2) 可以為圖像生成部分設(shè)計(jì)其他優(yōu)化目標(biāo),如 diffusion loss。也可以將圖像生成部分的 attention mask 改成雙向的,這也被證實(shí)了比單向 mask 有更好的生成效果。
- 對(duì)更多模態(tài)的支持。Janus 的核心思想是解耦,對(duì)不同的輸入使用不同的編碼方式,然后用統(tǒng)一的 transformer 進(jìn)行處理。這一方案的可行性,意味著 Janus 有可能接入更多的模態(tài),如視頻、3D 點(diǎn)云、EEG 信號(hào)等。這使得 Janus 有可能成為下一代多模態(tài)通用模型的有力候選。
4. 實(shí)驗(yàn)
4.1 實(shí)現(xiàn)細(xì)節(jié)
我們使用 DeepSeek-LLM (1.3B, pretrain 模型,未經(jīng)過(guò)指令微調(diào)) 作為 LLM 的初始化。在理解和生成任務(wù)中,圖像分辨率均為 384 * 384。我們用 DeepSeek 自研的 HAI-LLM 框架進(jìn)行開(kāi)發(fā),整個(gè)訓(xùn)練流程需要在 16 臺(tái) 8 Nvidia A100 (40GB) GPU 機(jī)器上跑 7 天時(shí)間。具體細(xì)節(jié)請(qǐng)參考論文。
4.2 和 state-of-the-arts 的比較
- 多模態(tài)理解 (Table 2)。Janus-1.3B 超越了之前同規(guī)模的統(tǒng)一模型。在一些 benchmark (POPE, MMBench, SEED Bench, MM-Vet) 上,Janus-1.3B 甚至超越了 LLaVA-v1.5-7B 的結(jié)果。這證實(shí)了視覺(jué)編碼解耦對(duì)多模態(tài)理解性能帶來(lái)了顯著的提升。
- 視覺(jué)生成 (Table 3 和 Table 4)。Janus-1.3B 在圖像質(zhì)量評(píng)價(jià) (MSCOCO-30K 和 MJHQ-30K) 和圖像生成指令跟隨能力 benchmark GenEval 上都取得了很不錯(cuò)的結(jié)果,超越了之前同規(guī)模的統(tǒng)一模型,和一些專(zhuān)用圖像生成模型,如 SDXL。
4.3 消融實(shí)驗(yàn)
我們?cè)O(shè)計(jì)了嚴(yán)格的消融實(shí)驗(yàn),一方面對(duì) Janus 的視覺(jué)編碼解耦這一觀點(diǎn)進(jìn)行驗(yàn)證,另一方面,研究聯(lián)合訓(xùn)練對(duì)單任務(wù)訓(xùn)練的性能影響。
Baseline 介紹
我們首先按照 Chameleon 的設(shè)計(jì),使用一個(gè) VQ Tokenizer 去同時(shí)為理解和生成任務(wù)編碼 (Exp-A)。這個(gè) VQ Tokenizer 和 Janus 中視覺(jué)生成部分的編碼器是同一個(gè)。考慮到這個(gè)編碼器語(yǔ)義很弱,所以我們額外構(gòu)造了一個(gè)更強(qiáng)的 baseline, Semantic Tokenizer (Exp-B)。
簡(jiǎn)單來(lái)說(shuō),這個(gè) Semantic Tokenzier 基于原先的 VQ Tokenizer 構(gòu)造,額外加了一個(gè) semantic decoder,預(yù)測(cè) SigLIP 產(chǎn)生的語(yǔ)義特征,具體細(xì)節(jié)請(qǐng)見(jiàn)論文的補(bǔ)充材料。通過(guò)這樣的方式,一方面可以通過(guò) semantic decoder,產(chǎn)生語(yǔ)義更強(qiáng)的圖像特征;另一方面,可以使得 Semantic Tokenizer 編碼出的圖像 ID 具有更好的語(yǔ)義,局部連續(xù)性更強(qiáng)。請(qǐng)注意:為了方法的簡(jiǎn)單性。Semantic Tokenizer 僅在對(duì)比實(shí)驗(yàn)中使用,而沒(méi)有在 Janus 中用。如果用了,Janus 應(yīng)該會(huì)在視覺(jué)生成方面表現(xiàn)更好。
視覺(jué)編碼解耦的影響
(1) 比較 Exp-A 和 Exp-D,我們發(fā)現(xiàn) Exp-A 的圖像生成效果還不錯(cuò),COCO-FID 有 8.72,和 Janus (8.53) 類(lèi)似。但是 Exp-A 的多模態(tài)理解性能明顯拉胯。
(2) 當(dāng)換上語(yǔ)義更強(qiáng)的 tokenizer (Exp-B),我們發(fā)現(xiàn)多模態(tài)理解能力有了明顯的提升,但和 Janus 相比還有一定距離。視覺(jué)生成方面,Exp-B (7.11) 比 Janus (8.53) 更好。我們猜測(cè)原因可能有兩點(diǎn)。首先,Semantic Tokenizer 編碼出的圖像 ID 語(yǔ)義更強(qiáng),作為 LLM 的預(yù)測(cè)目標(biāo)更合理。其次,Semantic Tokenizer 的參數(shù)量顯著高于 VQ Tokenizer。這也說(shuō)明了 Janus 在視覺(jué)生成方面巨大的提升空間。
(3) 那么,使用同一個(gè) Encoder,對(duì)理解的影響到底有多大呢?通過(guò)比較 Exp-B 和 Exp-C,我們發(fā)現(xiàn)僅使用 Semantic Tokenizer 做多模態(tài)理解,明顯高于 Exp-B 中的結(jié)果。舉例來(lái)說(shuō),MMBench 從 52.7 提高到 62.1。這說(shuō)明使用單一視覺(jué)編碼器確實(shí)在理解和生成任務(wù)上導(dǎo)致了沖突,犧牲了多模態(tài)理解的性能。
(4) 最后,我們探討一下聯(lián)合訓(xùn)練對(duì)單一任務(wù)的影響,見(jiàn) Exp-D, Exp-E, Exp-F。這里為了公平,我們對(duì)迭代步數(shù)做了嚴(yán)格的控制。例如,讓聯(lián)合訓(xùn)練的模型和純理解模型見(jiàn)過(guò)的多模態(tài)理解數(shù)據(jù)一樣多。(其實(shí)這樣對(duì)聯(lián)合模型不太公平,因?yàn)槁?lián)合模型的數(shù)據(jù)里,多模態(tài)理解的數(shù)據(jù)濃度相對(duì)更低)。最后發(fā)現(xiàn)聯(lián)合訓(xùn)練可以在基本保持多模態(tài)理解的能力下,有效地加入視覺(jué)生成能力。
4.4 可視化
文生圖可視化
如 Figure 4 所示,我們的模型相比于 SDXL, LlamaGen 有著更好的指令跟隨能力,能對(duì)用戶的 prompt 做出更精準(zhǔn)的反饋。
涌現(xiàn)能力:多語(yǔ)言文生圖
如 Figure 8 所示,我們還意外地發(fā)現(xiàn),及時(shí)訓(xùn)練數(shù)據(jù)中只有英文文生圖數(shù)據(jù),但最后的模型涌現(xiàn)出了多語(yǔ)言文生圖能力,如中文、法語(yǔ)、日語(yǔ)、甚至使用 emoji ?? 都可以。我們認(rèn)為這里的涌現(xiàn)能力來(lái)自于 LLM 預(yù)訓(xùn)練模型。
多模態(tài)理解可視化
請(qǐng)見(jiàn)以下兩張圖,相比于以前的大一統(tǒng)模型,我們的模型更聰明,能讀懂 meme 圖像。同時(shí)還能處理 latex 公式轉(zhuǎn)換、圖轉(zhuǎn)代碼等任務(wù)。
5. 總結(jié)
Janus 是一個(gè)基于自回歸的統(tǒng)一多模態(tài)理解與生成框架,具有簡(jiǎn)單性、高效性和高度靈活性。通過(guò)解耦視覺(jué)編碼,我們突破了當(dāng)前多模態(tài)統(tǒng)一模型中的性能瓶頸,拉進(jìn)了大一統(tǒng)模型和專(zhuān)用模型在專(zhuān)項(xiàng)任務(wù)上的性能差距,解鎖了多模態(tài)統(tǒng)一模型的新范式。