CVPR2021 Stylized Neural Painting

举报
拓佑豪 发表于 2021/07/07 14:43:48 2021/07/07
【摘要】 · 论文描述本案例由密歇根大学安娜堡分校,网易伏羲人工智能实验室,北京航空航天大学的成员共同完成。这其中提出了一种利用图像生成绘画的转换方法。该方法可以生成风格可控、生动逼真的绘画作品。由于经典的矢量渲染是不可微的,因此作者设计了一种全新的神经可微渲染器。它可以模仿矢量渲染器的行为,然后将画笔预测转换为参数搜索过程,即最大化输入与渲染输出之间的相似度。通过该方法生成的绘画在整体外观、局部纹...

painter.png

· 论文描述

本案例由密歇根大学安娜堡分校,网易伏羲人工智能实验室,北京航空航天大学的成员共同完成。这其中提出了一种利用图像生成绘画的转换方法。该方法可以生成风格可控、生动逼真的绘画作品。
由于经典的矢量渲染是不可微的,因此作者设计了一种全新的神经可微渲染器。它可以模仿矢量渲染器的行为,然后将画笔预测转换为参数搜索过程,即最大化输入与渲染输出之间的相似度。

通过该方法生成的绘画在整体外观、局部纹理上都具有很高的保真度;该方法也可以与神经风格迁移共同优化,后者可以进一步迁移其他图像的视觉样式。
####### 文末会提供基于ModelArts的Stylized Neural Painting实操案例使用方式

· 简介

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

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

· 绘图

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

· 双通道神经渲染器

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

(上图神经渲染器由两个网络组成,一个着色网络Gs和一个栅格化网络Gr)

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

nst.jpg

(备注:图一为风格绘画效果,图二为风格迁移效果)

· 像素相似度与零梯度问题

当我们直接从像素空间优化图像时,使用像素损失可以很好地完成工作。然而,在优化笔划参数时,像素丢失并不总是保证有效的梯度下降。特别是当渲染笔划和它的ground truth不共享重叠区域时,将出现零梯度问题。如下图:
painter-4.png
当我们把一个正方形的笔划a沿着s方向移动到它的目标B上时,当a和B之间没有重叠时,像素损失将保持不变。这将导致损失函数中出现零梯度问题,如图(b)所示。
与图(c)相比,图(c)中的最优运输损失不存在这样的问题,因为损失与a和B之间的物理距离相关。

· 了解更多

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

论文:Stylized Neural Painting Paper
论文源代码:Stylized Neural Painting Code

·效果

我使用了暨南大学拱门的照片生成油画,效果如下:
jn_animated (1).gif

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

· 结论

本文贡献:
•提出了一种基于笔划的图像到绘画翻译的新方法。我们将笔划预测重新框定为一个参数搜索过程。我们的方法可以在同一框架下与神经风格转换联合优化。
•我们探讨了参数搜索的零梯度问题,并从最佳运输角度来看待行程优化。我们引入了一个可微的传输损耗,并改进了笔划收敛性和绘制结果。
•我们设计了一个新的神经渲染器架构,具有双通道渲染通道(着色+栅格化)。其提出的渲染器能够更好地处理形状和颜色的分离,并比以前的神经渲染器有着更大的优势。

· ModelArts案例实现

1:数据准备

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

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

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

· 当然,因为需要训练不同画笔的渲染器,建议算力规格越高越好。

ModelArts-1.png

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:根据提示运行代码,并根据自己的需要调试参数。本项代码中附上了四种不同的画笔及其轻量版本,并且含有对应的神经风格转换的代码实例。
(右键文件选择下载,即可把艺术照保存到本地)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。