首次不依賴生成模型,一句話讓AI修圖!
2022 年是人工智能生成內(nèi)容(AI Generated Content,AIGC)爆發(fā)的一年,其中一個熱門方向就是通過文字描述(text prompt)來對圖片進(jìn)行編輯。已有方法通常需要依賴在大規(guī)模數(shù)據(jù)集上訓(xùn)練的生成模型,不僅數(shù)據(jù)采集和訓(xùn)練成本高昂,且會導(dǎo)致模型尺寸較大。這些因素給技術(shù)落地于實(shí)際開發(fā)和應(yīng)用帶來了較高的門檻,限制了 AIGC 的發(fā)展和創(chuàng)造力發(fā)揮。
針對以上痛點(diǎn),網(wǎng)易互娛 AI Lab 與上海交通大學(xué)合作進(jìn)行了研究,創(chuàng)新性地提出一套基于可微矢量渲染器的解決方案——CLIPVG,首次實(shí)現(xiàn)了在不依賴于任何生成模型的情況下,進(jìn)行文字引導(dǎo)的圖像編輯。該方案巧妙地利用矢量元素的特性對優(yōu)化過程進(jìn)行約束,因此不僅能夠避免海量數(shù)據(jù)需求和高昂的訓(xùn)練開銷,在生成效果上也達(dá)到了最優(yōu)的水準(zhǔn)。其對應(yīng)的論文《CLIPVG: Text-Guided Image Manipulation Using Differentiable Vector Graphics》已被 AAAI 2023 收錄。
- 論文地址:https://arxiv.org/abs/2212.02122
- 開源代碼:https://github.com/NetEase-GameAI/clipvg
部分效果如下(按次序分別為人臉編輯、車型修改、建筑生成、改色、花紋修改、字體修改)。
在生成效果方面,CLIPVG 相比業(yè)界已知的其他方案,將語義準(zhǔn)確度提高了 15.9%,生成質(zhì)量提高了 23.6%,即能夠自動編輯并輸出更貼合語義和無錯誤的圖像。在框架靈活性方面,由于 CLIPVG 可自動將像素圖像轉(zhuǎn)變?yōu)槭噶繄D形,它相比其他基于像素圖像的研究框架可更加靈活地對圖片顏色、形狀、子區(qū)域等進(jìn)行獨(dú)立編輯。在應(yīng)用場景方面,由于 CLIPVG 完全不依賴生成模型,因此可適用于更廣泛的場景,如人像風(fēng)格化、卡通圖編輯、字體設(shè)計(jì)和自動上色等等,它甚至能夠?qū)崿F(xiàn)多文本條件下對一張圖的不同部分實(shí)現(xiàn)同時編輯。
思路和技術(shù)背景
從整體流程的角度,CLIPVG 首先提出了一種多輪矢量化方法,可魯棒地將像素圖轉(zhuǎn)換到矢量域,并適應(yīng)后續(xù)的圖像編輯需求。然后定義了一種 ROI CLIP loss 作為損失函數(shù),以支持對每個感興趣區(qū)域 (ROI) 使用不同文字進(jìn)行引導(dǎo)。整個優(yōu)化過程通過可微矢量渲染器對矢量參數(shù) (如色塊顏色,控制點(diǎn)等) 進(jìn)行梯度計(jì)算。
CLIPVG 融合了兩個領(lǐng)域的技術(shù),一是像素域的文字引導(dǎo)圖像編輯,二是矢量圖像的生成。接下來會依次介紹相關(guān)的技術(shù)背景。
文字引導(dǎo)圖像翻譯
要讓 AI 在圖像編輯時”聽懂”文字引導(dǎo),典型方法是利用對比圖文預(yù)訓(xùn)練(Contrastive Language-Image Pre-Training,CLIP)模型。CLIP 模型可以將文字和圖像編碼到可比較的隱空間中,并給出”圖像是否符合文字描述”的跨模態(tài)相似度信息,從而建立起文字和圖像之間的語義聯(lián)系。然后,事實(shí)上僅僅使用 CLIP 模型很難直接對于圖像編輯進(jìn)行有效引導(dǎo),這是因?yàn)?CLIP 主要關(guān)注于圖像的高層語義信息,而對于像素級別的細(xì)節(jié)缺乏約束,導(dǎo)致優(yōu)化過程很容易陷入到局部最優(yōu)(local minimum)或者對抗性的解決方案(adversarial solutions)。
現(xiàn)有的常見方法是將 CLIP 和一個基于 GAN 或 Diffusion 的像素域生成模型相結(jié)合,例如 StyleCLIP (Patashnik et al, 2021),StyleGAN-NADA (Gal et al, 2022),Disco Diffusion (alembics 2022),DiffusionCLIP (Kim, Kwon, and Ye 2022),DALL·E 2 (Ramesh et al, 2022) 等等。這些方案利用生成模型來對圖像細(xì)節(jié)進(jìn)行約束,從而彌補(bǔ)了單獨(dú)使用 CLIP 的缺陷。但同時,這些生成模型嚴(yán)重依賴于訓(xùn)練數(shù)據(jù)和計(jì)算資源,并且會讓圖像編輯的有效范圍受到訓(xùn)練集圖片的限制。受限于生成模型的能力,StyleCLIP,StyleGAN-NADA,DiffusionCLIP 等方法都只能將單個模型限制在某個特定的領(lǐng)域,比如人臉圖片。Disco Diffusion、DALL·E 2 等方法雖然能編輯任意圖片,但需要海量的數(shù)據(jù)和計(jì)算資源來訓(xùn)練其對應(yīng)的生成模型。
目前也有極少數(shù)不依賴于生成模型的方案,例如 CLIPstyler (Kwon and Ye 2022)。CLIPstyler 在優(yōu)化時會將待編輯圖像分為隨機(jī)小塊(random patch),并在每個 patch 上利用 CLIP 引導(dǎo)加強(qiáng)對于圖像細(xì)節(jié)的約束。問題是此時每個 patch 都會單獨(dú)反映輸入文字所定義的語義,導(dǎo)致該方案只能進(jìn)行風(fēng)格遷移(style transfer),而無法對圖像進(jìn)行整體的高層語義編輯。
不同于以上的像素域方法,網(wǎng)易互娛 AI Lab 提出的 CLIPVG 方案通過矢量圖形的特性來對圖像細(xì)節(jié)進(jìn)行約束,以取代生成模型。CLIPVG 可以支持任意輸入圖片,并能夠進(jìn)行泛用型的圖像編輯。其輸出為標(biāo)準(zhǔn)的 svg 格式矢量圖形,不受分辨率的限制。
矢量圖像生成
一些現(xiàn)有工作考慮了文字引導(dǎo)的矢量圖形生成,例如 CLIPdraw (Frans, Soros, and Witkowski 2021),StyleCLIPdraw (Schaldenbrand, Liu, and Oh 2022)等。典型的做法是將 CLIP 和一個可微矢量渲染器相結(jié)合,并從隨機(jī)初始化的矢量圖形開始逐漸逼近文字所表示的語義。其中用到的可微矢量渲染器為 Diffvg (Li et al. 2020),能夠?qū)⑹噶繄D形通過可微渲染柵格化為像素圖。CLIPVG 同樣使用了 Diffvg 來建立矢量圖到像素圖之間的聯(lián)系,不同于已有方法的是 CLIPVG 關(guān)注如何對已有圖像進(jìn)行編輯,而非直接生成。
由于已有圖像中的絕大多數(shù)都是像素圖,需要先進(jìn)行矢量化才能夠利用矢量圖形特性進(jìn)行編輯?,F(xiàn)有的矢量化方法包括 Adobe Image Trace (AIT), LIVE (Ma et al. 2022)等,但是這些方法都沒有考慮后續(xù)的編輯需求。CLIPVG 在已有方法的基礎(chǔ)上引入了多輪矢量化的增強(qiáng)手段,以針對性提高圖像編輯時的魯棒性。
技術(shù)實(shí)現(xiàn)
CLIPVG 的總體流程如下圖所示。首先會對輸入的像素圖進(jìn)行不同精度的多輪矢量化 (Multi-round Vectorization),其中第 i 輪得到的矢量元素集合記為Θi。各輪得到的結(jié)果會被疊加到一起整體作為優(yōu)化對象,并通過可微矢量渲染 (Differentiable Rasterization) 轉(zhuǎn)換回到像素域。輸出圖片的起始狀態(tài)是輸入圖片的矢量化重建,然后按照文字描述的方向進(jìn)行迭代優(yōu)化。優(yōu)化過程會根據(jù)每個 ROI 的區(qū)域范圍和關(guān)聯(lián)文字,計(jì)算 ROI CLIP loss (下圖中的),并根據(jù)梯度優(yōu)化各個矢量元素,包括顏色參數(shù)和形狀參數(shù)。
整個迭代優(yōu)化的過程可見下例,其中的引導(dǎo)文字為”Jocker, Heath Ledger”(小丑,希斯 · 萊杰)。
矢量化
矢量圖形可以定義為矢量元素的集合,其中每個矢量元素由一系列參數(shù)控制。矢量元素的參數(shù)取決于其類型,以填充曲線 (filled curve) 為例,其參數(shù)為,其中是控制點(diǎn)參數(shù),是 RGB 顏色和不透明度的參數(shù)。對矢量元素做優(yōu)化時存在一些自然的約束,比如一個元素內(nèi)部的顏色始終是一致的,其控制點(diǎn)之間的拓?fù)潢P(guān)系也是固定的。這些特性很好地彌補(bǔ)了 CLIP 對于細(xì)節(jié)約束的缺失,能夠極大增強(qiáng)優(yōu)化過程的魯棒性。
理論上來說,CLIPVG 可以借助任何一種已有方法來進(jìn)行矢量化。但是研究發(fā)現(xiàn)這樣做會導(dǎo)致后續(xù)的圖像編輯出現(xiàn)幾個問題。首先,通常的矢量化方法能夠保證圖像在初始狀態(tài)時相鄰的矢量元素之間是嚴(yán)絲合縫的,但是各個元素會隨著優(yōu)化的過程發(fā)生移動,導(dǎo)致元素之間出現(xiàn)“裂縫”。其次, 有時候輸入圖像比較簡單,只需要少量矢量元素即可擬合,而文字描述的效果需要更加復(fù)雜的細(xì)節(jié)來表現(xiàn),導(dǎo)致圖像編輯時缺失必要的原材料(矢量元素)。
針對以上問題, CLIPVG 提出了多輪矢量化的策略,每一輪會調(diào)用已有方法得到一個矢量化的結(jié)果,并進(jìn)行依次疊加。每一輪會相對前一輪提高精度,即用更小塊的矢量元素進(jìn)行矢量化。下圖體現(xiàn)了矢量化時不同精度的差異。
第 i 輪矢量化得到的矢量元素集合可以表示為, 而所有輪產(chǎn)生的結(jié)果疊加后得到的矢量元素集合記作
,也就是 CLIPVG 總的優(yōu)化對象。
損失函數(shù)
類似于 StyleGAN-NADA 和 CLIPstyler,CLIPVG 使用了一個方向性的 CLIP 損失來度量生成圖像和描述文字之間的對應(yīng)關(guān)系,其定義如下,
其中表示輸入的文字描述。
是一個固定的參考文字,在 CLIPVG 中設(shè)為 "photo",
是生成的圖像(要優(yōu)化的對象)。
是原始圖像。
和
分別是 CLIP 的文字和圖像編解碼器。ΔT 和ΔI 分別表示文字和圖像的隱空間方向。優(yōu)化該損失函數(shù)的目的是使得圖像編輯后的語義變化方向符合文字的描述。后面的公式中會忽略固定不變的 t_ref。在 CLIPVG 中,生成的圖像是矢量圖形經(jīng)過可微渲染的結(jié)果。此外,CLIPVG 支持對每一個 ROI 分配不同的文字描述。此時方向性的 CLIP loss 會轉(zhuǎn)化為如下的 ROI CLIP loss,
其中 Ai是第 i 個 ROI 區(qū)域,是其關(guān)聯(lián)的文字描述。R 是可微矢量渲染器,R(Θ)是渲染出來的整張圖像。
是輸入的整張圖像。
代表一個裁剪操作,表示從圖像 I 中將區(qū)域
裁剪出來。CLIPVG 同時也支持了類似 CLIPstyler 中基于 patch 的增強(qiáng)方案,即從每個 ROI 中可以進(jìn)一步隨機(jī)裁剪出多個 patch, 并根據(jù)該 ROI 對應(yīng)的文字描述對每個 patch 分別計(jì)算 CLIP loss。
總的 loss 是所有區(qū)域的 ROI CLIP loss 之和,即
這里的一個區(qū)域可以是一個 ROI, 或是從 ROI 中裁剪出來的一個 patch。是各個區(qū)域?qū)?yīng)的 loss 權(quán)重。
CLIPVG 會根據(jù)以上損失函數(shù)對于矢量參數(shù)集合Θ進(jìn)行優(yōu)化。優(yōu)化時也可以只針對Θ的一個子集,比如形狀參數(shù)、顏色參數(shù),或者特定區(qū)域?qū)?yīng)的部分矢量元素。
實(shí)驗(yàn)結(jié)果
在實(shí)驗(yàn)部分,CLIPVG 首先通過消融實(shí)驗(yàn)驗(yàn)證了多輪矢量化策略和矢量域優(yōu)化的有效性,然后和已有的 baseline 進(jìn)行了對比,最后展示了特有的應(yīng)用場景。
消融實(shí)驗(yàn)
研究首先對比了多輪矢量化 (Multi-round) 策略和只進(jìn)行一輪矢量化 (One-shot) 的效果。下圖中第一行是矢量化后的初始結(jié)果,第二行是編輯后的結(jié)果。其中 Nc表示矢量化的精度??梢钥吹蕉噍喪噶炕粌H提高了初始狀態(tài)的重建精度,并且能夠有效消除編輯后矢量元素之間的裂縫,并增強(qiáng)細(xì)節(jié)表現(xiàn)。
為了進(jìn)一步研究矢量域優(yōu)化的特性,論文對比了 CLIPVG (矢量域方法) 和 CLIPstyler (像素域方法) 采用不同 patch size 進(jìn)行增強(qiáng)時的效果。下圖中第一行為 CLIPVG 采用不同 patch size 的效果,第二行為 CLIPstyler 的效果。其文字描述為 "Doctor Strange"。整張圖的分辨率為 512x512??梢钥吹疆?dāng) patch size 較小 (128x128 或 224x224) 時,CLIPVG 和 CLIPstyler 都會在局部小塊區(qū)域出現(xiàn) "Doctor Strange"(奇異博士)代表性的紅藍(lán)配色,但是整張臉的語義并沒有明顯變化。這是因?yàn)榇藭r的 CLIP 引導(dǎo)沒有施加到圖片整體。當(dāng) CLIPVG 將 patch size 增加到 410x410 時可以看到明顯的人物身份變化,包括發(fā)型以及臉部特征都按照文字描述進(jìn)行了有效編輯。如果去除 patch 增強(qiáng),則語義編輯效果和細(xì)節(jié)清晰度都會有所下降,說明 patch 增強(qiáng)依然有正面效果。不同于 CLIPVG,CLIPstyler 在 patch 較大或去除 patch 時依然無法實(shí)現(xiàn)人物身份的變化,而只是改變了整體顏色和一些局部紋理。原因是 patch size 放大后像素域的方法失去了底層約束,而陷入到局部最優(yōu)。這一組對比說明 CLIPVG 能夠有效利用矢量域?qū)τ诩?xì)節(jié)的約束,結(jié)合較大的 CLIP 作用范圍 (patch size) 實(shí)現(xiàn)高層語義編輯,這是像素域方法難以做到的。
對比實(shí)驗(yàn)
在對比實(shí)驗(yàn)中,研究首先將 CLIPVG 和兩種能對任意圖片進(jìn)行編輯的像素域方法進(jìn)行了對比,包括 Disco Diffusion 和 CLIPstyler,下圖中可以看到對于 "Self-Portrait of Vincent van Gogh" 的例子,CLIPVG 能夠同時對于人物身份和繪畫風(fēng)格進(jìn)行編輯,而像素域方法只能達(dá)到其中的一項(xiàng)。對于 "Gypsophila",CLIPVG 相對 baseline 方法能更精確地編輯花瓣的數(shù)量和形狀。在 "Jocker, Heath Ledger" 和 "A Ford Mustang" 的例子中,CLIPVG 也能魯棒地改變整體語義,相對來說 Disco Diffusion 容易出現(xiàn)局部瑕疵,而 CLIPstyler 一般只是調(diào)整了紋理和顏色。
?
(自上而下:梵高畫、滿天星、希斯萊杰小丑、福特野馬)
研究者接著對比了針對特定領(lǐng)域圖片 (以人臉為例) 的像素域方法,包括 StyleCLIP、DiffusionCLIP 和 StyleGAN-NADA。由于對使用范圍進(jìn)行了限制,這些 baseline 方法的生成質(zhì)量通常更為穩(wěn)定。CLIPVG 在這組對比中依然展現(xiàn)了不遜于已有方法的效果,尤其是和目標(biāo)文字的符合程度往往更高。
(自上而下:奇異博士、異鬼、僵尸)
更多應(yīng)用
利用矢量圖形的特性以及 ROI 級別的損失函數(shù),CLIPVG 能夠支持一系列已有方法難以實(shí)現(xiàn)的創(chuàng)新玩法。比如本文一開始展示的多人圖的編輯效果,就是通過對于不同人物定義不同的 ROI 級別文字描述實(shí)現(xiàn)的。下圖的左邊為輸入,中間為 ROI 級別文字描述的編輯結(jié)果,右邊為整張圖只有一個整體文字描述的結(jié)果。其中 A1 到 A7 區(qū)域?qū)?yīng)的描述分別為 1. "Justice League Six"(正義聯(lián)盟),2. "Aquaman"(海王),3. "Superman"(超人),4. "Wonder Woman"(神奇女俠),5. "Cyborg"(鋼骨),6. "Flash,DC Superhero"(閃電俠,DC) 和 7. "Batman"(蝙蝠俠)。可以看到 ROI 級別的描述可以對各個人物進(jìn)行分別編輯,而整體描述則無法生成有效的個體身份特征。由于各個 ROI 互相之間是有重疊的,已有方法即使對每個人物單獨(dú)編輯,也很難達(dá)到 CLIPVG 的整體協(xié)調(diào)性。
CLIPVG 還可以通過優(yōu)化一部分的矢量參數(shù),實(shí)現(xiàn)多種特殊的編輯效果。下圖中第一行展示了只編輯部分區(qū)域的效果。第二行展示了鎖定顏色參數(shù),只優(yōu)化形狀參數(shù)的字體生成效果。第三行和第二行相反,通過只優(yōu)化顏色參數(shù)來達(dá)到重新上色的目的。
?
(自上而下:子區(qū)域編輯、字體風(fēng)格化、圖像改色)