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