北航聯合港大發布全新文本引導矢量圖形合成方法SVGDreamer
可縮放矢量圖形(Scalable Vector Graphics,SVG)是用于描述二維圖型和圖型應用程序的基本元素;與傳統的像素圖形不同,SVG 使用數學描述來定義圖形,因此可以在任何大小下無損地縮放而不失真。這使得 SVG 成為網站設計領域的理想選擇,特別是在需要適應不同分辨率和設備的情況下。但是創作者手工設計 SVG 是高成本并具有挑戰的。
最近,隨著 CLIP 和生成式模型的快速發展,文本引導的矢量圖合成(Text-to-SVG)在抽象像素風格 [1,2] 和矢量手繪草圖 [3,4] 等領域都取得了不錯的進展。通過可微分渲染器 [5] 驅動矢量路徑基元自動合成對應的矢量圖形,成為一個熱門的研究方向。
相比于人類設計師,Text-to-SVG 方法可以快速并大量的創建矢量內容,用于擴充矢量資產。 然而,現有的 Text-to-SVG 方法還存在兩個限制:1.生成的矢量圖缺少編輯性;2. 難以生成高質量和多樣性的結果。為了解決這些限制,作者提出了一種新的文本引導矢量圖形合成方法:SVGDreamer。
論文題目:
SVGDreamer: Text Guided SVG Generation with Diffusion Model
論文地址:
https://arxiv.org/abs/2312.16476
代碼地址:
https://github.com/ximinng/SVGDreamer
項目地址:
https://ximinng.github.io/SVGDreamer-project/
01 實現思路
▲ 圖1:SVGDreamer流程圖
SVGDreamer 由兩部分構成:語義驅動的圖像矢量化(Semantic-driven Image Vectorization,SIVE)和基于矢量例子的分數蒸餾(Vectorized Particle-based Score Distillation,VPSD)構成。
其中 SIVE 根據文本提示矢量化圖像,VPSD 則通過分數蒸餾從預訓練的擴散模型中合成高質量、多樣化并具有審美吸引力的矢量圖。
1.1 語義驅動的圖像矢量化 (SIVE)
SIVE 根據文本提示合成語義層次解耦的矢量圖。它包括兩個部分:
- 矢量基元初始化(Primitive Initialization)
- 基于語義級優化(Semantic-aware Optimization)
如圖 1 上半部分所示,文本提示中不同的詞語對應不同的注意力圖,這使得作者可以借助注意力圖初始化矢量圖控制點(control points)。具體來說,作者對注意力圖進行歸一化,將它視為一個概率分布圖,根據概率加權采樣畫布上的點作為貝塞爾曲線的控制點。
然后,作者將初始化階段獲得的注意力圖轉換為可重復使用的掩碼,大于等于閾值的部分設為 1,代表目標區域,小于閾值為 0。作者利用掩碼定義 SIVE 損失函數從而精確地優化不同的對象。
SIVE 確保了控制點保持在各自的語義對象區域中,從而實現不同對象的解構,最終結果如圖 1 右上部分所示。
1.2 基于矢量粒子的分數蒸餾 (VPSD)
之前基于擴散模型的 SVG 生成工作 [2,4],已經探索了使用分數蒸餾采樣(SDS)優化 SVG 參數的方式,但這種優化方式往往會帶來顏色過飽和、優化得到的 SVG 過于平滑的結果。
受變分分數蒸餾采樣的啟發,作者提出了基于向量化粒子的分數蒸餾采樣(Vectorized Particle-based Score Distillation,VPSD)損失來解決以上問題。相對于 SDS,這種采樣方式將 SVG 建模為控制點和色彩的一個分布,VPSD 通過優化這個分布來實現對 SVG 參數的優化:
由于直接優化另一個模型 的成本過大,所以引入 Lora 來減少被優化的參數量:
最后,為了改善合成矢量圖的美觀評價,作者引入了一種獎勵反饋學習方法(ReFL),將采樣得到的樣本輸入到使用預訓練的 Reward 模型中,共同進行對 LoRA 參數的優化:
最后完整的目標函數即為上述三個函數的加權組合:
通過反向傳播更新 SVG 路徑參數,經過循環迭代完成優化,得到最終結果。
02 實驗結果
2.1 定性結果
下圖展示了 SVGDreamer 生成的 6 種風格類型的 SVG 結果,包括肖像圖風格(Iconography)、像素風格(Pixel-Art)、水墨(Ink and Wash)、多邊形(Low-poly)、手繪(Sketch)和線條繪畫(Painting)風格等。不同顏色的后綴表示不同的 SVG 風格類型,這些風格類型也并不需要在 Prompt 中給出,只需要通過控制矢量圖基元實現。
▲ 圖2. SVGDreamer結果可視化
SVGDreamer 能夠根據文本提示合成語義層次解耦的矢量圖,這使得其可以被用于創建大量矢量數據資產,同時這些矢量元素可以被自由地組合,如下圖所示:
▲ 圖3:SVGDreamer合成的矢量資產示意圖
2.2 應用展示
除此之外,作者展示了 SVGDreamer 的應用:制作矢量海報。通過將制定字形轉為矢量表示,并且與生成的矢量圖結合,即可得到美觀的矢量海報。與基于擴散模型的生成式位圖海報相比,矢量海報的文字與內容部分同樣具有良好的編輯性,并且不會產生錯誤的文字:
▲ 圖4:SVGDreamer制作的矢量海報與位圖海報合成方法的比較
03 總結
在這項工作中,作者介紹了 SVGDreamer,一個用于文本引導矢量圖形合成的創新模型。SVGDreamer 結合了兩個關鍵的技術設計: 語義驅動的圖像矢量化 (SIVE) 和基于矢量粒子的分數蒸餾 (VPSD),這使得模型能夠生成具有高可編輯性、卓越的視覺質量和顯著的多樣性的矢量圖形。
由于SVGDreamer能夠生成具有可編輯性的復雜矢量圖形,因此,SVGDreamer 有望顯著推進文本到 SVG 模型在設計領域的應用。它已經被證實可以用來創建矢量圖形資產庫,設計師可以根據不同的需求,很容易地將庫中的元素重新排列組合,用于創建獨特的矢量海報或 Logo,以及其他矢量藝術形式。
04 矢量圖可微渲染庫PyTorch-SVGRender介紹
項目地址:
https://qianyu-lab.github.io/PyTorch-SVGRender-project/
代碼地址:
https://github.com/QianYu-Lab/PyTorch-SVGRender
文檔地址:
https://pytorch-svgrender.readthedocs.io/en/latest/index.html
Pytorch-SVGRender 是作者團隊在 2023.12 發布的一個用于 SVG 生成的可微分渲染方法的 Python 庫,使研究人員和開發者們可以通過一個統一的、簡化的接口來訪問不同的 SVG 生成技術。
Pytorch-SVGRender 包含兩大功能:位圖到 SVG 的渲染(Img-to-SVG),以及文本到 SVG(Text-to-SVG)的渲染。并且整合了與這些功能有關的研究成果,例如 DiffVG、LIVE、CLIPasso、CLIPDraw、VectorFusion、Word-As-Image、DiffSketcher 和 SVGDreamer 等。
Pytorch-SVGRender 的設計理念是基于模塊化和可擴展性的原則,讓用戶能夠無縫集成最新的 SVG 創作技術。通過提供一套清晰的、統一的 API,該庫允許開發者輕松地調用底層繪圖算法,無需深入了解其底層原理。此外,庫中的每一種方法的相關參數都經過精心優化,以確保生成的 SVG 文件在性能和質量上都能滿足高標準的要求。
最后,Pytorch-SVGRender 還提供了豐富的文檔和示例代碼,幫助用戶快速入門上手。作者希望這個庫可以提高 SVG 研究人員和開發者的工作效率,為未來 SVG 相關技術的創新與實踐提供幫助。