人工智能也要进击二次元界了:深度学习简化素描 So Easy!

本文为 AI 研习社编译的技术博客,原标题 Simplifying Rough Sketches using Deep Learning,作者为 Ashish Sinha。 翻译 | 周静 整理 | 凡江

素描是表达艺术思想重要的第一步,并迭代地进行设计优化。它使得艺术家们迅速地把他们的思想呈现在纸上。优先考虑尽快地将概念和想法表达出来,而非精美的细节,因而得到是粗略的草图。从最开始的草图,根据反馈迭代地进行细化直到产生最后的作品。迭代求精的过程使得艺术家们不断地清除他们的草稿成为简化版的图画,因此也意味着额外的工作量。正如人们所料的那样,手动的临摹草图以产生一幅干净的图画的过程是非常的沉闷耗时的。

那么,如果存在一种方法可以从草图中得到干净的草图,那岂不是更好?立刻,无论使用什么样的画笔。很奇妙,是不是?在这篇文章里,我将讨论一个深度学习技术,使用全卷积网络从粗糙的草图中生成干净的草图。

好,并不是说之前没有这样的软件来做完成这样的工作,确实有,但问题是,它们通常用来做矢量图像(vector images)而不是光栅图像(raster images)。让我们从什么是矢量和光栅图像开始吧!

矢量图像和光栅图像?

光栅图像,也称位图,由颜色的单个像素组成。每个颜色像素组成了整幅图像。

光栅图像可以与点绘画相比,它们由一系列单独的彩色点组成。点绘画中的每个画图点可以代表光栅图像中的单个像素。当被看成一个单独的点时,它只是一种颜色;但当被看成一个整体时,有颜色的点构成了一幅生动而细致的画。光栅图像中的像素的作用类似,它提供了丰富的细节和逐像素的编辑。

光栅图形由根据显示图像而排列的彩色像素组成,与它不同的是,矢量图像由路径组成,每一个路径具有一个数学公式(向量),来告诉位置形成方式,以及如何填充该位置的颜色。

由于数学公式决定了如何渲染图像,无论大小,矢量图像能够保持其外观。因而它们可以被无限地缩放。

模型结构

这个模型最好的部分在于,它与光栅图像一起,将多个粗略的草图线条转化成一个干净的线条。

这个结构的另外一个优点是,任何维度的图像都可以作为网络的输入,并且得到与输入图像相同尺寸的输出。网络结构十分简单,第一部分作为编码器,在空间上压缩图像,第二部分,处理并提取图像中的基本线条,第三和最后一部分作为解码器,将小的或者更简单的特征转换成与输入同样分辨率的灰度图。所有的这些全部用卷积来完成。

向上或者向下卷积结构跟一个简单的滤波器组很相似。然而,重要的是要认识到,当分辨率低的情况下,通道数量会更大。例如,当尺寸变成 1/8 时,则需要 1024 个。这保证得到干净线条的信息由低分辨率的部分执行;训练网络来选择编码-解码结构需要携带哪些信息。

填充被用于补偿卷积核的大小,并确保在步长为 1 时,输出的尺寸和输入尺寸一致。池化层被增加步长的卷积层代替,以此来降低由前一层得到的分辨率。

损失函数

使用加权的均方准则作为模型的损失。

Y 是模型的实际输出,Y*是目标输出,M 是损失图,使用逐像素的矩阵乘法运算来计算损失。现在,通过对作者论文中使用的各种损失图进行测试,他们发现下面给出的一个性能最好。为了避免模型关注较粗的线而放弃较细的线,损失图减少了较粗线的损失。

我们通过查看每个像素真实(目标)标签的直方图来构造损失图。H(i,u,v) 是像素 I(u,v) 的局部归一化的位值。直方图通过中心距离的所有 d_h 个像素值的 b_h 位来构造。

由于用于训练的图像数目相当的少,因而使用各种数据增加技巧来扩充数据集。传统的变换方法,例如旋转,以及使用 Adobe Photoshop 来改变色调,删除图像,并添加噪声来产生更多的样本等。

这是一个最先进的模型,甚至优于 Prortrace 和 Adobe Live Trace。

参考

Torch 代码:

https://github.com/bobbens/sketch_simplification

文章:

http://hi.cs.waseda.ac.jp/~esimo/publications/SimoSerraSIGGRAPH2016.pdf

注:我会实现 pytorch 版本的代码,因为很难得到文章中的数据集。同时,作者提供了预训他们代码的预训练模型。

原文链接:

https://medium.com/coinmonks/simplifying-rough-sketches-using-deep-learning-c404459622b9

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-07-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法与Python学习

一个模型搞定所有风格转换,直接在浏览器实现(demo+代码)

用一个模型就能实现所有类型的风格转换!一个名为Arbitrary Image Stylization in the Browser的项目最近火起来。

15820
来自专栏大数据挖掘DT机器学习

文本挖掘之三种特征选择(python 实现)

机器学习算法的空间、时间复杂度依赖于输入数据的规模,维度规约(Dimensionality reduction)则是一种被用于降低输入数据维数的方法。维度规约可...

45170
来自专栏机器学习、深度学习

视频中的运动特征--Learning Motion Patterns in Videos

Learning Motion Patterns in Videos CVPR2017 Torch code: http://thoth.inria...

24860
来自专栏wym

OpenCV-3计算机视觉(Canny边缘检测)

函数原型:edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2g...

14440
来自专栏专知

CNN神经网络内部知识表达的“黑”与“白“

来源:知乎-Qs.Zhang张拳石 https://zhuanlan.zhihu.com/p/31365150 ▌前言 ---- 关于神经网络内部的知识表达,深...

35480
来自专栏技术随笔

[译] Instance Normalization: The Missing Ingredient for Fast Stylization

42880
来自专栏SimpleAI

【DL碎片5】一只蚊子告诉你,什么是正则化(Regularization)

从【DL笔记1】到【DL笔记N】以及【DL碎片】系列,是我学习深度学习一路上的点点滴滴的记录,是从Coursera网课、各大博客、论文的学习以及自己的实践中总结...

16620
来自专栏大数据文摘

小白学数据神经网络第二弹:Google可视化体验平台Tensorflow Playground

21340
来自专栏PPV课数据科学社区

KNN算法在保险业精准营销中的应用

一、KNN算法概述 KNN是Machine Learning领域一个简单又实用的算法,与之前讨论过的算法主要存在两点不同: 它是一种非参方法。即不必像线性回归、...

32960
来自专栏移动开发面面观

你需要知道的数学知识——卷积

15730

扫码关注云+社区

领取腾讯云代金券