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