- SVG 生成系列论文(一) 和 SVG 生成系列论文(二) 分别介绍了 StarVector 的大致背景和详细的模型细节。
- SVG 生成系列论文(三)和 SVG 生成系列论文(四)则分别介绍实验、数据集和数据增强细节。
本文简要介绍的 Diffvg 则属于 svg 生成与编辑领域的开山之作。
论文全称:Differentiable Vector Graphics Rasterization for Editing and Learning(用于编辑和学习的可微分矢量图形光栅化)
项目链接:https://github.com/BachiLi/diffvg
背景
-
作者介绍了一种可微分的光栅化器(rasterizer),它连接了矢量图形和光栅图像领域,使得基于光栅(位图)的损失函数、优化方法和机器学习技术能够用于编辑和生成矢量内容。
-
作者观察到,在进行像素预过滤(pixel prefiltering)之后,矢量图形的光栅化过程是可微分的。
-
本文的可微分光栅化器提供了两种预过滤选项:一种是解析预过滤(analytical prefiltering)技术,另一种是多重采样抗锯齿技术(multisampling anti-aliasing)。
(1)解析预过滤方法速度较快,但可能会出现如合并等伪影问题。
(2)多重采样方法仍然高效,能够渲染高质量图像,同时计算每个像素相对于曲线参数的无偏梯度。 -
作者展示了这种光栅化器支持的新应用,包括:
(1)基于图像度量引导的矢量图形编辑器、
(2)一种通过最小化深度感知损失函数将矢量图元拟合到图像的绘画风格渲染算法、
(3)利用无缝裁剪(seam carving)等知名图像处理方法的新矢量图形编辑算法,
(4)在变分自编码器(VAE)或生成对抗网络(GAN)训练目标下,仅从光栅监督生成矢量内容的深度生成模型。
Seam Carving,也称为内容感知图像缩放,是一种图像处理技术,用于在不显著改变图像内容的情况下调整图像尺寸。它通过选择并移除或插入图像中的“无缝路径”来实现这一点,这些路径通常穿过图像中最不重要的部分。
图1. 作者介绍了一种可微分的矢量图形光栅化器,通过反向传播将光栅和矢量领域连接起来。可微分光栅化支持许多新颖的矢量图形应用。(a) 在几何约束下,基于图像空间度量(如不透明度)进行局部优化的交互式编辑。(b) 通过将随机贝塞尔曲线拟合到目标图像,实现新的绘画风格渲染技术。© 改善现有的图像矢量化结果。(d) 使用不可微分的光栅图像处理操作(例如用于图像重定向的 seam carving [Avidan 和 Shamir 2007])编辑矢量图形。(e) 训练变分自编码器 [Kingma 和 Welling 2014] 生成矢量 MNIST 数字 [LeCun 等 1998],并添加风格化笔触作为后处理。图片由维基百科用户 Daderot 和 Eric Guinther,以及 freesvg.org 用户 OpenClipart 提供。
像素预过滤
-
像素预过滤(pixel prefiltering)是一种在渲染过程中应用的技术,用于在将矢量图形转换为光栅图像(即像素网格)之前对图像进行处理。其目的是减少混叠(aliasing)效应,改善图像质量,使得渲染出的图像更加平滑和准确。
-
混叠(Aliasing)问题:当矢量图形被转换成像素网格时,由于图形的高频细节可能会出现混叠问题,导致锯齿状边缘和其他视觉伪影。如下图所示。
- 预过滤的作用:像素预过滤通过在采样之前对图形进行平滑处理,减少这些高频分量,从而减少混叠效应。预过滤可以看作是一种低通滤波器,它在采样之前平滑信号,减少了高频成分的影响。
像素预过滤的原理
图2. 使用卷积进行像素预过滤使得不连续函数变得平滑。作者使用一维中的箱形函数来说明这一点。为了对这个不连续的箱形函数进行抗锯齿光栅化,作者将箱形函数与一个以像素中心为中心的核进行卷积。移动箱形函数会导致过滤核下的面积连续变化,因此,抗锯齿信号也会连续变化。
-
不连续函数的问题
在光栅化过程中,像矢量图形这样的不连续函数转换成像素网格时,会产生锯齿状的边缘,这种现象称为混叠(aliasing)。例如,一个简单的箱形函数(step function)从一个值突然跳到另一个值,没有过渡,导致其光栅化后的边缘很不平滑。 -
卷积的作用
为了减轻混叠效应,像素预过滤技术通过卷积来平滑这些不连续的过渡。卷积是将图像与一个核(kernel)进行卷积运算。核通常是一个平滑函数,例如高斯核,它有助于对图像进行平滑处理。 -
连续变化
如图所示,当箱形函数与平滑核进行卷积时,箱形函数的边缘由一个不连续的跳跃变为一个连续的过渡。核的中心位置与像素对齐,通过移动箱形函数的位置,可以看到核下的面积发生连续变化,从而使卷积结果(抗锯齿信号)也是连续变化的。这种连续变化确保了在图像渲染过程中不会产生明显的锯齿边缘。