CVPR2021 Stylized Neural Painting

网友投稿 870 2022-05-30

· 论文描述

通过该方法生成的绘画在整体外观、局部纹理上都具有很高的保真度;该方法也可以与神经风格迁移共同优化,后者可以进一步迁移其他图像的视觉样式。

####### 文末会提供基于ModelArts的Stylized Neural Painting实操案例使用方式

本案例能够从最初的原始图像中很好地捕捉到了对象的全局外观,然后从图像的宏观到微观逐渐过渡,以此生成一个具有一定风格(油画画风、马克笔画风、矩形画风、水彩画画风等)的绘画作品

不同于以往基于笔划的绘制方法,比如使用了分步贪婪搜索、递归神经网络或强化学习,本文将笔划预测重新定义为一个“参数搜索”过程,目的是以自我监督的方式最大化输入和渲染输出之间的相似性。

给定一个空画布h0,一步一步地绘制并叠加在每一步迭代渲染的笔划。在每个绘图步骤t中,经过训练的神经渲染器G接受一组笔划参数xt(例如,形状、颜色、透明度和纹理),并生成笔划前景和alpha蒙版。然后在每一步过程中去混合画布、前景和alpha蒙版,并确保整个渲染通道是可区分的。

由于以前的神经笔划渲染器在面对复杂的渲染场景时,可能会遇到参数耦合问题,例如,具有真实世界纹理和颜色过渡的笔刷。因此,本文重新设计了神经渲染器,并将渲染结构分解为栅格化网络和着色网络,这两个网络可以联合训练并以更好的形状和颜色逼真度进行渲染。以最大限度提高输入和渲染输出之间的相似性。

通过使用栅格化网络和着色网络的双通道神经网络渲染器,实现颜色和形状的解耦。用这种方法生成的图像,无论在整体外观上还是局部纹理上都具有较高的保真度。

当我们直接从像素空间优化图像时,使用像素损失可以很好地完成工作。然而,在优化笔划参数时,像素丢失并不总是保证有效的梯度下降。特别是当渲染笔划和它的ground truth不共享重叠区域时,将出现零梯度问题。如下图:

当我们把一个正方形的笔划a沿着s方向移动到它的目标B上时,当a和B之间没有重叠时,像素损失将保持不变。这将导致损失函数中出现零梯度问题,如图(b)所示。

与图(c)相比,图(c)中的最优运输损失不存在这样的问题,因为损失与a和B之间的物理距离相关。

CVPR2021 Stylized Neural Painting

· 了解更多

想进一步了解更多,可以参阅以下链接:

·效果

我使用了暨南大学拱门的照片生成油画,效果如下:

我们可以观察到,虽然对图片细节的刻画不是很多,整体上的效果还是非常不错的。

· 结论

本文贡献:

•提出了一种基于笔划的图像到绘画翻译的新方法。我们将笔划预测重新框定为一个参数搜索过程。我们的方法可以在同一框架下与神经风格转换联合优化。

•我们探讨了参数搜索的零梯度问题,并从最佳运输角度来看待行程优化。我们引入了一个可微的传输损耗,并改进了笔划收敛性和绘制结果。

•我们设计了一个新的神经渲染器架构,具有双通道渲染通道(着色+栅格化)。其提出的渲染器能够更好地处理形状和颜色的分离,并比以前的神经渲染器有着更大的优势。

· ModelArts案例实现

1:数据准备

进入stylized-neural-painting该链接,保存至自己的obs桶

2:开启新的浏览页面,输入网址 huaweicloud.ai ,点击左上角“华为云”,进入华为云界面

3:在搜索栏输入 ModelArts ,进入控制台,并在左侧菜单栏“开发环境”选项选择“notebook”,并创建一个新的notebook,选用“GPU”免费算力规格即可。

4:静候启动完成后,点击“打开JupyterLab”,选择“pytorch-1.0.0”版本的notebook。

5:进入notebook,输入以下指令运行,将案例拷贝至notebook上。代码如下(中文部分路径需要大家自行调整):

import moxing as mox

mox.file.copy_parallel("obs://你的桶名/你的路径名/stylized-neural-painting","stylized-neural-painting")

当指令运行框由 [*] 变成 [数字] 时,在左边文件栏刷新即可看到代码文件。

打开stylized-neural-painting.ipynb文件即可开始运行。

(建议双击进入拷贝完成的文件夹,将里面所有的文件剪切,并放在根目录)

6:找到stylized-neural-painting.ipynb,打开它,运行环境选择pytorch。

7:根据提示运行代码,并根据自己的需要调试参数。本项代码中附上了四种不同的画笔及其轻量版本,并且含有对应的神经风格转换的代码实例。

(右键文件选择下载,即可把艺术照保存到本地)

AI

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Vue进阶(五):与 Vuex 的第一次接触
下一篇:jvm远程调试参数与原理
相关文章