首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

丢掉PS,用机器学习创造抽象画

我们先来了解一下什么是CPPN。

Compositional Pattern Producing Networks(CPPN)

CPPN是一种通过设置一定的参数来生成视觉图案的神经网络。通过输入坐标值x, y,来输出RGB的像素色值。这个神经网络的函数如下所示:

这个网络因为它是连续可微分的,我们在网络上取任意两个位置接近的点,他们的输出也会非常的接近。这就导致了从中生成的图像一个属性:平滑。另外一个很酷的特性是,它具有“无限”的分辨率,因为坐标可以无限缩放。

CPPN的一个例子。使用一个简单的三层网络,以tanh作为激活函数。

参数

在我们了解这个网络最基础的功能之后,可以添加一些其他的输入,来生成更加复杂的图案。例如,我们可以添加半径 r 和可调参数 α。通过这些修改我们的网络 f 看起来像这样:

由于半径不仅提供了良好的非线性,而且还使网络能够将输出颜色与到原点的距离相关联,因为同一圆周上的点接收相同的值 r。

当半径R随x和y变化时,α参数在图像的过程中是静态的。本质上,你可以把这个参数看作z参数。当从3维(x y z)立方体采样时,我们看位置z=α上的切片。

你可以有创意地使用这些参数,稍后我们会探索更多的奇怪的配置。

9层的DenseNet长什么样?自己来看看吧!

通过改变 α 值制作的动画

初始化

神经网络的输出是由我们之前提到的输入和权重决定的。因此,权重对于网络的行为和输出图像的外观将起到至关重要的作用。

在示例图像中,我主要从高斯分布(N)中取权重W,这个高斯分布的均值为零,方差由输入神经元的数目,和一个调节参数 β决定,这样我们可以自主调节方差。

我们可以要求网络只输出一个单一的值,这可以理解为黑白图像。

现在是有趣的部分。这里是基于CPPNS原理的渐进图像发生器。你可以调整Z值,这里是上面公式中的方差(也可以等同于参数β),来选择是否需要黑白图像并探索种子空间。注意,用于高斯分布的随机数生成器将总是为同一种子产生相同的值,这是很酷的,因为您可以共享种子并生成相同的结果。

图1:生成自己的模式。

我编写了一个示例种子列表,当我玩这个工具时,我发现它非常引人注目。尝试从这些种子开始,然后探索自己的空间!:)

图2:种子实例。点击图像可以在生成器中处理它。

这些只是一些例子。尝试改变种子,时间或方差本身,或许你会创造一些杰作!

探索其他架构

在本节中,我想向你们展示一些我所得到的奇特架构的结果。

基于β=cos(10r)的参数化图像

正如你所看到的,这些图像的表现出人意料地非常不同。一个单一的参数在网络的激活中会产生巨大的差异。

使用f(x^2, y^2, α)的对称性

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180711G1WCP900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券