在 CVPR 2021 的一篇论文中,来自网易伏羲和密歇根大学的研究者提出了一种图像到绘画的转换方法,可以生成生动逼真且风格可控的画作。目前该方法的实现代码已开源。
论文地址:
https://arxiv.org/abs/2011.08114
Github 地址:
https://github.com/jiupinjia/stylized-neural-painting
不同于此前风格迁移方法在逐像素预测框架下生成绘画,该方法在矢量空间下生成具有物理意义的序列画笔参数,且该参数可以进一步用于渲染。由于画笔本身是不可微的,该研究设计了一种新的神经渲染器,以模拟画笔的行为,并将画笔预测问题转化成参数空间内的搜索问题,从而最大化渲染输出和输入图像之间的相似度。该研究揭示了搜索过程中的零梯度问题并提出从最优搬运的角度解决这一问题。
此外,该研究还揭示了此前神经渲染器存在参数耦合的问题,并重新设计了渲染网络。新的网络包含一个栅格化网络和一个着色网络,能够更好地对形状和颜色解耦合。实验表明该研究提出的方法在全局和局部纹理层面上具有更高的真实度。另外,该方法还可以在神经风格迁移框架下联合优化以进一步迁移其他画作的视觉效果。
图 1:该研究提出了一种基于画笔渲染的方法,可以生成逼真的绘画作品。图中画作是在矢量格式下生成的,还可以进一步优化渲染成不同的风格。
生成一幅向日葵画作。
该研究的主要贡献包括:
提出一种全新的基于画笔的图像到绘画转换方法,将画笔预测问题转化为参数搜索问题来求解。该方法还可以进一步在神经风格迁移框架下联合优化以实现风格化效果。
揭示了参数搜索中存在的零梯度问题,并从最优搬运视角来看待画笔优化问题。该研究引入了可微的搬运损失函数改善画笔收敛性和绘画效果。
设计了一种新的神经渲染框架,该框架包含双通道的渲染管线(栅格化 + 着色)。新的渲染器可以更好地处理画笔形状和颜色的解耦合,性能优于此前的神经渲染器。
神经风格画笔
该研究主要由 3 个功能模块组成:1)可以根据输入画笔参数生成画笔图像的神经渲染器;2)可以将多个画笔组合在一起的可微画笔混合器;3)用于度量输入输出图像相似度的模块。
神经风格画笔解决了艺术绘画参数化的问题。对于给定的一张空白画布 h_0,该方法逐步地将画笔叠加到该画布上。例如在第 t 步时,一个训练好的神经渲染器G会将一组画笔参数X_t 渲染成前景图像 s_t 和对应的透明度遮罩,然后该方法利用软混合(soft blending)的方式将当前画布、新增画笔、对应遮罩进行叠加并保证整个过程是可微的:
其中。最终该方法将全部T步的画笔参数收集在一起,并在自监督方式下搜索画笔参数的最优解,即最终渲染输出 h_T 需要与输入图像尽可能相似:
其中表示从画笔参数到渲染画布的递归映射。表示所有T步的画笔参数集合。
假定是用于度量画 h_T 和输入图像相似度的损失函数,该方法直接在参数空间内优化所有的输入画笔并最小化相似度损失函数,并利用梯度下降来更新画笔参数:
其中是预定义的学习率。
图 2:该研究从一张空白画布开始,逐个对画笔进行渲染,并利用软混合的方式将画笔叠加起来。该方法利用梯度下降法来寻找最优的画笔参数集合,从而使生成的画作与输入图像尽可能相似。图中黑色箭头表示前向传播,红色箭头表示梯度反向传播。
神经渲染器
神经风格画笔中的核心模块是神经渲染器。以往的神经渲染器只能够在比较简单渲染场景中工作,但当遇到如过渡色和画笔纹理等更复杂的渲染场景时,上述渲染器将难以很好地表达耦合在一起的画笔形状和颜色。该研究借鉴了传统的渲染管线并设计了一个双通道的神经渲染器,该渲染器可以很好地解决颜色 / 形状 / 材质的耦合问题。
图 3:该研究设计了一种双通道神经渲染器,该渲染器由一个着色网络 G_s 和一个栅格化网络 G_r 组成,它能够将输入的画笔参数集合渲染成栅格化的前景图像和对应的透明度遮罩。
新的神经渲染器由两个子网络组成:一个着色网络G_s和一个栅格化网络 G_r,输入的画笔参数X则被分成了三组:颜色、形状和透明度。着色网络 G_s由一组堆叠的转置卷积层(transposed convolution layer)构成,用来将输入的颜色和形状参数生成具有可靠前景颜色的画笔。栅格化网络 G_r被设计为位置编码器 + 像素解码器的形式,它忽略了颜色信息但因此能够生成具有锐利边缘的画笔轮廓。最终,画笔前景图像 s 可以根据轮廓图像对颜色图像进行掩膜得到,而透明度遮罩则可以利用输入的透明度对轮廓图像进行缩放得到。
该研究利用标准的逐像素回归损失函数对上述渲染器进行训练:
其中和表示利用图形引擎渲染出的前景图像和透明度遮罩真值。表示从画笔参数空间中随机采样得到的画笔参数。
像素相似度和零梯度问题
神经风格画笔作画的关键在于相似度的定义,例如逐像素的和损失函数就可以直接用于定义渲染结果和输入图像之间的相似度。然而神经风格画笔并非是仅在像素空间中进行优化,而是需要进一步优化画笔参数,此时逐像素损失函数并非总是能够保证梯度的有效下降。特别是当渲染的画笔和其真值不重叠时,就会造成零梯度问题。该研究进一步引入了最优搬运损失函数来解决该问题,如图 4 和图 5 所示。
图 4:一个简单的实例可以解释为什么逐像素损失函数在画笔参数优化时可能存在零梯度问题()。
如图 4(a)所示,当沿着方向移动一个正方形画笔A到目标B时,它的逐像素梯度始终为一个常数,特别是当A和B没有交集时,就会出现零梯度的情况,如图 4(b)所示。作为对比,如图 4(c)所示,该研究提出的最优搬运损失函数不存在上述问题,且可以很好地描述A和B之间的物理距离。
图 5:逐像素损失函数(第一行)和最优搬运损失函数(第二行)在将画笔从其初始值推向目标位置的对比。
利用最优搬运损失函数,画笔可以很好地收敛到目标位置,而逐像素损失函数则由于零梯度问题未能收敛。
最优搬运损失函数
该研究定义最小搬运功(即 Wasserstein distance)作为画布和输入图像间的相似度度量。对于给定的画布 h和输入图像,它们的归一化像素值和被定义为概率边际函数。表示联合概率矩阵,其中第(i,j)个元素表示 h 中的第 i 个像素和中的第 j 个像素的联合概率,n 表示图像中的像素数目。D表示成本矩阵,其第(i,j)个元素表示 h 中的第 i 个像素和中的第 j 个像素之间的欧氏距离。因此矩阵D列出了从 h 中的一个位置到中的另一个位置移动单位质量所需要消耗的人力成本。在离散的情况下,经典的最优搬运距离可以写成一个线性优化问题,其中
在该研究中,研究者提供了一个经典最优搬运距离的平滑版本,即著名的 Sinkhorn distance。该距离具有良好的数学性质,并且相比于原始的版本能够大幅度降低计算成本。通过引入拉格朗日乘子和额外的熵约束,上述优化问题可以进一步写为如下形式:
基于上述形式,最优搬运损失函数可以轻易地整合进参数搜索流程并且和其他损失函数联合优化。因此,神经风格画笔的总相似度损失函数定义如下:
其中用于平衡两个目标函数。
图 7:上图展示了逐画笔的绘画结果,其中第一行基于马克笔生成,第二行基于油画笔生成。右侧图像展示了优化过程中的损失函数曲线。
与神经风格迁移联合优化
由于神经风格画笔是在参数搜索范式下实现的,因此该方法天然地适合神经风格迁移框架。由于神经风格迁移被设计为通过更新图像像素来最小化内容损失函数(content loss)和风格损失函数(style loss),因此研究者进一步将风格损失函数融入神经风格画笔中,以实现风格化的输出。扩展后的相似度度量函数可以定义为如下形式:
其中为相似度损失函数,该研究中采用与 Gatys 等人相同的形式,即计算基于 VGG-19 所提取特征的 Gram 矩阵。
实验
风格化绘画生成实验
得益于联合损失函数的设计,神经风格画笔不仅可以生成逼真的艺术画作,还可以生成风格化的渲染结果。此外,由于画笔参数具有明确的物理意义,因此在风格化输出时还可以进一步控制风格化的范围(颜色 or 材质)。
图 8:(a)—(c) 中展示了神经风格画笔的绘画结果。(d)中展示了高度抽象的卡通人物画像。
图 9:基于神经风格画笔的风格迁移结果。
对比实验
此前的绘画参数化方法主要依靠增强学习来实现,如 “Learning-to-Paint” 算法,而神经风格画笔通过引入神经渲染器很好地解决了画笔不可微的问题。因此相比基于 RL 的方法,神经风格画笔可以生成更加逼真的结果。
图 10:神经风格画笔与 Learning-to-Paint 算法对比
除了与此前的方法进行对比,研究者还与人工画作进行了比较,同样取得了较好的生成效果。
图 11:艺术家(Adam Lister)绘画结果和自动生成的结果
受控实验
研究者还分别研究了搬运损失函数和双通道神经渲染器的作用。
图 12:使用最优搬运损失函数前后的结果对比。最优搬运损失函数可以有效地恢复图像中的更多细节,特别是当画笔初始化的位置与目标区域不重合的时候。
图 13:不同神经渲染器的验证集精度(包括 DCGAN-G,UNet,PxlShuffleNet)。该研究提出的双通道神经渲染器可以有效地提高验证集精度,并加快收敛速度。
图 14:不同神经渲染器渲染的可视化结果对比