Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

杜伟、陈萍机器之心报道

AI也能「抽象派」作画,圆形+方块组合,可微2D渲染下生成抽象人脸

有人将一张方块图、圆形图的组合生成了抽象的人脸!还有人将帆布油画《阿尼埃尔的浴场》还原为直线。

绘画,尤其是草图可以说是传达概念、对象和故事的一种方式。计算机视觉和人机交互方面的草图研究历史悠久,可追溯到 1960 年代。近年来,由于深度学习技术的快速发展,草图应用越来越多,这些技术可以成功地处理草图识别、生成、基于草图的检索、语义分割、分组、解析和抽象等任务。

关于草图的研究也不时的被网友顶上热搜,近日新闻网站 reddit 上就有一篇帖子热度爆表,短短十几个小时热度就达到 800+,原贴内容为:从形状到「脸」- 使用神经网络进行形状抽象的可微 2D 渲染。

图片

它的效果是这样的:从动图展示效果来看,一开始输入为 4x4 不同形状的图像,最后生成了人脸轮廓(尽管生成的人脸轮廓有些抽象,但我们还是可以看出是人脸):

图片

针对这一展示效果,网友纷纷表示惊艳,但可惜的是,原贴作者并没有给出更多的技术细节,但在评论区中,我们可以从原贴作者的回答中得出一些信息:

原贴作者即项目作者表示:「这是我用于神经渲染的 POC。该模型只是试图最小化输出与真值图像(在本例中为 celeb 数据集)之间的 L2 距离。动图中展示的是训练运行期间验证过程,遵循单一形状收敛。输入形状可以以任何形式开始,但 4x4 网格输入应该是最有趣的, 这一实现效果可扩展到很多应用。我正在考虑写一篇简短的文章,把自己的想法表达出来。」

图片

上面的回复中,项目作者提到了自己并没有写技术文档,不过,也有网友分享了一篇今年 7 月的文章《 Differentiable Drawing and Sketching 》。项目作者表示:「这真的很酷!其实我一直在找类似的东西,但找不到,所以做了这个。」

图片


具体而言:这篇文章是来自南安普敦大学的研究者提出了一种自底向上的可微松弛(relaxation)过程:即将点、线和曲线绘制到一个像素光栅(pixel raster)。这种松弛过程允许模型学习和优化端到端的可微程序和深度网络,此外,松弛过程还为网络提供了几个构建块,以控制如何对组合绘图过程建模。值得注意的是,该研究所提方法是自底向上的,这一特性允许绘图操作以能够模拟绘图的物理现实而不是被束缚的方式组成,例如,现代计算机图形学的方法。

图片

  • 论文地址:https://arxiv.org/pdf/2103.16194.pdf

  • GitHub 地址:https://github.com/jonhare/DifferentiableSketching

论文展示了如何通过直接优化照片生成草图,以及在没有监督的情况下如何构建自动编码器将栅格化手写数字转换为矢量。

图片

虽然论文与reddit项目作者的最终实现效果不同,论文是将图像抽象为点或线段的草图,项目则是将方块和圆形最终生成抽象人脸,但论文采用的方法对项目具有借鉴意义。因此,机器之心对论文《 Differentiable Drawing and Sketching 》中的技术细节进行了介绍。

技术解读:可微光栅化松弛

在这部分内容中,研究者讨论了如何将连续世界空间(continuous world space) W 中定义的点、线和曲线绘制或光栅化到图像空间图片中。 

他们的目标是提出一种形式化方法(formalisation),使得最终可以定义相对于世界空间参数(如点坐标或线段起点和终点的坐标)可微的光栅化函数。

一维光栅化

研究者首先考虑了对一维点 p ϵ W 进行光栅化的问题,其中 W = R。具体来讲,点 p 的光栅化过程可以由函数 f(n; p) 来定义,该函数为图像空间图片中的每个像素计算一个值(通常为 [0 , 1])。这个图像空间的位置又由图片给出。

先来看看简单的最近像素(closest-pixel)光栅化函数。如果假设第 0 个像素覆盖点 p 的世界空间中的域 [0, 1),第一个像素覆盖 [1, 2) ,如此类推。然后,最近邻光栅化将真值点 p 映射到一个图像,如下等式(1)所示:

图片

这一过程如下图 2a 所示。2b 则是另一种光栅化方案,其中在两个最近的像素上进行插值。

图片

假设当被光栅化的点位于中点(midpoint)时,像素具有最大值,则如下等式(2)所示:

图片

实际上,这些可以扩展至 2D 的函数在很多计算机图形系统中得到隐式地使用,但很少以我们编写它们的形式出现。

接下来是可微松弛。理想情况下,研究者希望能够定义一个相对于点 p 可微的光栅化函数,这允许 p 优化。等式(1)给出的光栅化函数对于 p 是分段可微的,但梯度几乎在所有地方都为零,这是没有用的。等式 (2) 在最邻近 p 的两个像素中具有一定的梯度,但总体而言它的梯度也几乎处处为零。

因此,研究者想定义一个光栅化函数,它对所有(或至少大部分)可能的 n 值都具有梯度。这个函数几乎在任何地方都应该是连续的和可微的。抗锯齿光栅化方法对如何实现这一点给出了一些提示:该函数可以根据 n 和 p 之间的距离为每个 n 计算一个值。

N 维中的松弛光栅化

以往定义的所有一维光栅化函数都可以简单地扩展为「在二维或更多维度上对一个点进行光栅化」。

线段可以通过其起始坐标 s = [s_x, s_y] 和结束坐标 e = [e_x, e_y] 来定义。为了开发一组通用、潜在可微的光栅化函数,研究者需要考虑光栅的形式化,就像在一维情况下所做的那样:找到一个函数,该函数在给定线段 f (n; s, e) 的情况下,能够在图像中所有像素位置集合 n 上定义一个标量场。

光栅化线段需要考虑像素与线段的接近程度。研究者高效地计算了任意像素 n 到线段上最近点的平方欧几里德距离,如下所示:

图片


在最近邻光栅化的情况下,有人会问「这条线段是否穿过谈论中的像素」。只有在以下这种情况下才填充:

图片

为了以相对于参数可微的方式光栅化曲线(与参数化无关),研究者遵循了与线段相同的通用方法:计算每个坐标图片与曲线之间的最小平方欧几里德距离 :

与线段的情况一样,接下来这一距离变换(distance transform)能够与「根据距离运行的光栅化函数」相结合:

图片

扩展至多条线段

为了光栅化多条线段,研究者考虑论了将不同线段的光栅化组合成单个图像。具体而言,他们将光栅化不同线段 {s_1, e_1}, {s_2, e_2}, . . . , {s_i, e_i} 生成的图像表示为在相同图像空间图片上定义的矩阵 I ^(1) , I^ (2) , . . . , I^ (n)。

在最简单的二进制光栅化情况下,研究者认为相应像素的逻辑或(logical-or)可能会产生所需的效果,即将单个光栅化中着色的任何像素作为最终输出中的着色,如下等式(9)所示:

图片

研究者还将这种 composition 松弛为可微的,并允许像素值为非二进制(但限于 [0, 1]),如下等式(10)所示:

图片

最终,研究者得到了点或线段构图所需要的全部组件。 

 图像优化示例

为了证明针对真实图像优化原语(primitives)方法的有效性,该研究提供了许多示例。例如图 4 和图 5 利用图 3a 中大小为 200 × 266 输入图像作为目标图像进行优化。

图 4 显示了使用模糊 MSE 损失优化 1000 个点和 1000 条线的结果,并展示了可以实现的整体效果。图 5 显示了使用一系列不同损失从同一起点优化 500 条线段的效果。

此外,该研究还将自动生成的草图与人类绘制的图像进行了比较。图 3b 是用笔(pen and ink)绘制的草图,用于生成图 4 和 5。很明显,草图广泛地捕捉了场景的整体结构和明暗区域。

图片


理论图像生成神经渲染
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

语义分割技术

语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类。图像语义分割是AI领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一环。

推荐文章
暂无评论
暂无评论~