给手绘图着色(添加颜色或色彩):CVPR2020论文点评
给手绘图着色(添加颜色或色彩):CVPR2020论文点评
Learning to Shade Hand-drawn Sketches
论文链接:https://arxiv.org/pdf/2002.11812.pdf
摘要
本文提出了一种全自动的方法来产生详细和准确的艺术阴影对线素描和照明方向。本文还提供了一个新的数据集,其中包含1000个用灯光方向标记的线条和阴影对示例。值得注意的是,生成的阴影可以快速传达草图场景的底层三维结构。因此,本文的方法产生的阴影可以直接使用或作为艺术家的一个极好的起点。本文证明了本文提出的深度学习网络采用手绘草图,在潜在空间建立三维模型,并渲染产生的阴影。生成的阴影尊重手绘线和底层三维空间,并包含复杂和准确的细节,如自阴影效果。此外,生成的阴影包含艺术效果,如边缘照明或从背光出现的光晕,这是可以通过传统的三维渲染方法实现的。
1. Introduction
本文的工作使用深度学习方法来学习一个非线性函数,该函数“理解”二维草图所隐含的三维空间关系,并呈现二元阴影(图1top)。本文的神经网络的原始输出是二值阴影,艺术家可以根据线条图在单独的图层上修改二值阴影。不需要额外的后处理,本文中的图像是原始网络输出和输入线性部分的简单组合。如果需要软阴影,艺术家可以使用本文网络的第二方输出(图2 S2)。本文的网络也会从不断变化的照明方向产生一致的阴影(第4.3节),即使本文是从一组稀疏的照明方向训练。
本文工作的主要贡献:
•本文创建了一个新的数据集,其中包含1160个手绘线条图和标记有照明方向的阴影。
•本文提议建立一个网络,该网络“理解”线条图所隐含的结构和三维空间关系,并产生高度详细和准确的阴影。
•端到端应用程序,可根据给定的二维线条图和指定的照明方向,从任意照明方向生成二进制或软阴影。
2. Related Work
Non-photo realistic rendering in Computer Graphics
计算机图形学中cel动画的风格化阴影[23,3]以前的工作集中在cel动画中的阴影渲染和对阴影应用艺术外观。这些论文强调阴影在人对cel动画的感知中起着重要的作用。
Image translation and colorization
近年来,对图像翻译中生成性对抗网络的研究[6,21]产生了令人印象深刻的合成图像,这些图像被认为是与原作相同的。Pix2pix[13]在其生成器网络中部署了U-net[25]体系结构,并演示了在图像转换应用中,当包含跳过连接时,U-net的性能得到了提高。CycleGAN[41]介绍了一种在没有成对示例的情况下学习从输入图像到样式化输出图像的映射的方法。对真实灰度图像着色的研究[2,39,12,40]证明了用GANs和U-net[25]结构对图像着色的可行性。
Deep learning in line drawings
研究者认为线条画包括线条艺术色彩化[36,15,38,5,4]、素描简化[28,26]、智能墨水机[27]、线条提取[17]、线条样式化[18]和从素描计算普通地图[29,20]。
Relighting
深度学习也被应用于现实场景的重新照明。Xu等人 [35]提出了一种在给定来自五个不同方向光源的图像的情况下,从任意方向光重新照明的方法。Sun等人 [30]提出了一种在给定单一输入(如选择)的情况下重新照亮人像的方法。训练数据集由多摄像机设备捕获。这部研究与本文的不同之处在于,他们侧重于重新塑造富有特色的现实主义形象,而本文则侧重于手绘草图的艺术阴影。
Line drawings to normal maps
Sketch2normal[29]和deep normal[20]使用深度学习从线条图计算法线贴图。他们的训练数据集是用真实感渲染从三维模型中渲染出来的。Sketch2带有一些注释的四条腿动物在线图的正常训练。DeepNormal使用对象的遮罩作为输入线图形。他们解决了一个不同的,可以说更难的问题。但是,计算出的法线贴图可用于渲染阴影,本文将此方法与第4节中的直接阴影计算进行比较。
3. Learning Where to Draw Shadows
3.1. Data Preparation and Data Augmentation
本文观察到,艺术家倾向于从一组相对较小的特定照明方向中进行选择,特别是在漫画和日本动画中。为此,本文在图1中定义了由2×2立方体形成的26个照明方向。本文发现,用户可以直观地从围绕2D对象顺时针的八个照明方向和指定光源的三个深度(前、平面内和后)中的一个方向进行选择。
3.2. Network Architecture
本文的发电机包含以下模块:剩余块[7][8]、薄膜块[22]和挤压和激励(SE)块[10]。本文的生成器的总体架构遵循具有跳过连接的U-net架构[25,13]。本文的鉴别器使用残差块。详细信息如图2所示。
本文还提取了两个监控端输出,s1和s2,以便于反向传播。本文的渲染网络的早期阶段生成连续的、柔和的阴影图像。在最终阶段,网络将这些图像转换为二值阴影。侧边输出s1和s2中的软阴影质量如图2所示。本文再次注意到,本文的输出不需要任何后期处理来生成二值阴影;本文中的图像是将本文的生成器的输出与输入草图合成的直接结果。
本文的鉴别器的基本模块包括降尺度残差块和残差块。由于不同阴影的许多局部特征彼此相似,本文部署了自我注意层,使本文的鉴别器对远处的特征敏感。在图2中,最后一个鉴别器由全局平均池化、0.3概率的退出和256个滤波器的完全连接层组成。因为产生阴影比辨别假阴影和真阴影更困难,所以一个简单的辨别器就是充分和简单的训练。
3.3. Loss Function
4. Experiments and Evaluation
如图3、4、6、5、7所示,本文的工作表现良好。例如,在两个人和多人的线条图(图3第二行)上,本文的工作能够阴影每个字符,但是,DeepNormal和Sketch2Normal将多个人视为一个对象。值得注意的是,本文的工作在生成非常详细的阴影方面非常出色,例如在女孩的头发和裙子上。
就草图的复杂性,尽管本文的训练数据集有中等程度的细节,但是本文的网络在复杂的草图上表现良好,如图3所示。本文也可以在不需要遮罩的情况下,在物体边界之外表现出色。此外,当光源改变深度时,本文的工作会产生更精确的细节。如图4所示,DeepNormal[20]中的阴影几乎覆盖了整个图像,因此看起来好像光线在物体后面。但是,在这些图像中,光源与对象位于同一平面上,从而产生侧照明。
在图6中,本文通过与3D测试模型的比较,解释了当光线位于物体平面时,DeepNormal[20]表现不佳的原因。特别是,使用本文的技术,兔子头上和腿上的阴影更接近地面的真实情况,并显示自我阴影。
如图4所示,由于256×256块的多重平均值,DeepNormal的法线贴图具有低方差(请参阅DeepNormal的第3.4节)。这种低方差导致前照灯看起来像侧照灯,侧照灯看起来像后照灯。Sketch2Normal生成的一些图像有一些伪影,因为预测的法线贴图有一些空白区域。因为它是在简单草图上训练的,草图2通常是在复杂草图上训练的。
最后,本文注意到,本文的方法产生艺术边缘高光从背光。请参阅图3和更多比较图中的普通地图的补充材料。与在本文的数据集上训练的Pix2pix和U-net相比,本文的架构在质量上也表现良好(图7)。一般来说,U-net在精确的软阴影中生成,这与本文的二元阴影目标相去甚远。Pix2pix在对象边界之外生成阴影,并忽略草图中的几何信息。在本文早期的研究中,本文使用了带有跳跃连接的残差块自动编码器,它产生了软阴影。为了达到二值阴影的目的,本文增加了一个鉴别器,并采用了一个更深层次的渲染网络。如果艺术家想要柔和的阴影,可以使用侧面输出s2。
虽然本文网络的最终输出是二进制阴影,但是如果一个艺术家想要软阴影,可以使用侧面输出s2,如图2所示。本文的工作是对先前草图自动着色工作的补充[36,15,38,5,4]。图8展示了本文的阴影可以与这些着色方法相结合。虽然大多数先前的彩色化工作结合了阴影和阴影效果,但将这些效果分离为独立的图像层以进行进一步的艺术编辑将是有趣的。
用户接受了一个简短的培训,展示了来自本文的数据集的15个地面真实阴影草图,并强调了前照灯和侧照灯之间的差异。本文还要求用户将自己的绘画体验分为“专业”、“一般”、“初学者”或“0体验”。本文在网上分发了调查结果,共收到60份。有绘画经验者40人,其中专业画家13人,一般水平11人,初学者16人。结果见表1。本文的方法表现良好,几乎与艺术家创造的地面真实阴影相匹配。本文进行了单因素方差分析来分析利克特得分。结果证明,本文的结果在数量上与groundtruth相似(p=0.24),优于其他方法(p<0.05)。
本文进行了7项消融研究,如图10和9所示。为了定量比较,本文计算了Frchet起始距离(FID)[9]每4000次迭代本文的工作和消融研究使用整个数据集。图9显示本文的工作具有最低和最稳定的FID。这说明本文提出的每一个特征都是必要的,而全变分正则化是至关重要的。图10定性地表明,如果没有本文提出的元素,网络性能就会下降:边界会变得模糊,并且会出现阴影。在所有消融研究中,“无自我注意”的影响最小,如图10(b)和图9中的FID所示。设置总变化正则化器的系数大于5倍或移除正则化器对整体性能的影响最大,并破坏阴影的平滑度。相应的FID也强调了全变正则化的重要性。在图10中,所有图像使用相同的照明方向“810”。一般情况下,当去除自关注层时,网络的细节表现不佳,阴影块内有微小的伪影;如果没有坐标通道或胶片块,输出会有不真实的阴影边界和物体边界外的阴影;如果没有SE块,会有暗影“粉刺”,整体外观看起来凌乱;如果没有两个深监督输出(λ1=.9,λ2=λ3=0,λ4=.4),输出会有网格状的点伪影,精度较低;如果网络中电视正则化器的权重增加5倍或缺少电视正则化器,则网络收敛速度过快陷入局部极小值。
5. Future Works
在不同大小的输入图像上,网络性能是不不变的。大部分320×320输入具有最好的性能,因为本文的网络是在320×320大小的输入上训练的。480×480的输入图像也有很好的性能。尽管本文在用户研究中几乎与地面真实相匹配,但是本文生成的阴影并没有地面真实那么详细,特别是在硬表面物体上。另外,如果输入线图的本地部分,则网络无法产生正确的阴影。作为未来的工作,本文将开发一个网络,可以输出各种图像大小,以满足高分辨率的绘画要求。
6. Conclusions
本文的条件生成对抗网络学习一个非真实感渲染器,可以自动从手绘草图生成阴影。本文是第一个尝试通过深入学习从草图直接生成阴影的人。与现有技术相比,本文的结果更为有利,现有技术可以在简单和复杂的图像上渲染草图的法线贴图。本文还证明,本文的网络架构能够“理解”二维线图所隐含的三维空间关系,足以生成详细和准确的阴影。
给手绘图着色(添加颜色或色彩):CVPR2020论文点评的更多相关文章
- 第03课 OpenGL 添加颜色
添加颜色: 作为第二课的扩展,我将叫你如何使用颜色.你将理解两种着色模式,在下图中,三角形用的是光滑着色,四边形用的是平面着色 上一课中我教给您三角形和四边形的绘制方法.这一课我将教您给三角形和四边形 ...
- WindowsPhone开发—— 使用手绘图片做景区导览地图
前些日子在做景区App遇到需求,使用手绘图片做一个简易的地图,支持放大缩小平移以及显示景点Mark,安卓上可以使用一个叫做“mAppWidget”的开源库来完成,WP上有人建议用ArcGIS,但是考虑 ...
- canvas给图形添加颜色
canvas给图形添加颜色 合法属性 ctx.fillStyle = 'orange'; ctx.fillStyle = '#FFA500'; ctx.fillStyle = 'rgb(255, 16 ...
- 在linux下给grep命令添加颜色
1打开文件,添加如下一段话 vim ~/.bashrc alias grep='grep --color' 2退出保存 source ~/.bashrc ...
- 给shell添加颜色
编辑/etc/baserc 添加 TERM=xterm-color; export TERM alias ls='ls -G' alias ll='ls -lG' 给vim添加颜色 编辑/usr/sh ...
- roughViz 一个可重用,功能强大的手绘图表组件
前段时间介绍过一个chart.xkcd 的手绘图表组件,roughViz 是另外一个,同时也提供了 比较多的图表类型,api 参考文档也比较全 支持的图表类型 Bar Horizontal Bar D ...
- vue项目中使用bpmn-为节点添加颜色
内容概述 本系列 “vue项目中使用bpmn-xxxx” 分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意 ...
- CVPR2020论文解读:手绘草图卷积网络语义分割
CVPR2020论文解读:手绘草图卷积网络语义分割 Sketch GCN: Semantic Sketch Segmentation with Graph Convolutional Networks ...
- openGl从零开始之添加颜色
OpenGL 支持两种颜色模式:一种是 RGBA模式,一种是 颜色索引模式.无论哪种颜色模式,计算机都必须为每一个像素保存一些数据,即通过每一个像素的颜色,来改变整体图形的颜色.不同的是, RGBA ...
随机推荐
- Java集合知识总结
集合概述 集合:集合是Java中提供的一种容器,可以用来存储多个数据. 集合和数组的区别: (1)数组长度的是固定的,集合的长度是可变的. (2)数组中存储的都是同一类型的元素.集合存储的都是对象,对 ...
- 【MybatisPlus】使用Wrappers条件构造器构造or和and
模糊查询中,会有针对一个数据,需要查询数据库的多个字段的情况,例如: 上图中的平台名称和平台进程在数据表中是两个不同的字段, 如果不使用Mybatisplus,仅使用Mybatis,则只有通过写xml ...
- showdan
from shodan import Shodan import json api = Shodan("") result = api.search('windows') with ...
- 手机改 user模式为debug模式
logcat 是Android中一个命令行工具,可用于监控手机应用程序的log信息.网上相关的教学很多,这里只想把自己折腾 2 部手机(一个是三星S4 I9500 港水,Android 5.01,一个 ...
- Http Get与Post的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...
- hdu5251最小矩形覆盖
题意(中问题直接粘吧)矩形面积 Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些矩形包围起来的面积最小的矩形的面积是多少. Input ...
- POJ3233不错的矩阵(矩阵套矩阵)
题意: 给一个n*n的矩阵A,然后求S=A + A^2 + A^3 + ..+ A^k. 思路: 矩阵快速幂,这个题目挺新颖的,以往的矩阵快速幂都是退出公式,然后构造矩阵,这 ...
- YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)
0x01 前言 srbac的原理: YII框架的srbac模块是一个专门管理权限的一个模块,那它是怎么管理权限的呢.我们知道YII框架的网页显示是由控制器实现的,控制器继承父类CController和 ...
- C#-宽带连接
public static string Connect(string UserS,string PwdS) { string arg = @"rasdial.exe 宽带连接" ...
- 【easycode】使用说明 & 示例
语法 ## 是模板的注释,不会生成 # 全局的一些设置 $ 使用库函数或者调用全局定义的内容 常用方法 数据库表信息 ${tableInfo} comment 表备注 name 表名 fullColu ...