Alexander Mordvintsev等作者刘晓坤 高璇 路编译

Distill详述「可微图像参数化」:神经网络可视化和风格迁移利器!

近日,期刊平台 Distill 发布了谷歌研究人员的一篇文章,介绍一个适用于神经网络可视化和风格迁移的强大工具:可微图像参数化。这篇文章从多个方面介绍了该工具,机器之心选取部分内容进行了编译介绍。

图像分类神经网络拥有卓越的图像生成能力。DeepDream [1]、风格迁移 [2] 和特征可视化 [3] 等技术利用这种能力作为探索神经网络内部原理的强大工具,并基于神经网络把艺术创作推进了一小步。

所有这些技术基本上以相同的方式工作。计算机视觉领域使用的神经网络拥有图像的丰富内部表征。我们可以使用该表征描述我们希望图像具备的特性(如风格),然后优化图像使其具备这些特性。这种优化是可能的,因为网络对于输入是可微的:我们可以轻微调整图像以更好地拟合期望特性,然后迭代地在梯度下降中应用这种微调。

通常,我们将输入图像参数化为每个像素的 RGB 值,但这不是唯一的方式。由于从参数到图像的映射是可微的,我们仍然可以用梯度下降来优化可替代的参数设定。

图 1:当图像参数化可微的时候,我们就可以对其使用反向传播(橙色箭头)来优化。

为什么参数化很重要?

这可能令人惊讶,即改变优化问题的参数设定可以如此显著地改变结果,尽管实际被优化的目标函数仍然是相同的形式。为什么参数设定的选择有如此显著的效果?原因如下:

(1)改善优化:转换输入使优化问题更简单,这是一种被称为「预处理」的技术,是优化过程的重要部分。我们发现参数设定的简单变化就可以使图像优化变得更加简单。

(2)引力盆地:当我们优化神经网络的输入时,通常有很多不同的解,对应不同的局部极小值。优化过程落入某个局部极小值是由其引力盆地(即在极小值影响下的优化曲面区域)控制的。改变优化问题的参数设定可以改变不同引力盆地的大小,影响可能的结果。

(3)附加约束:某些参数设定仅覆盖可能输入的子集,而不是整个空间。在这种参数设定下的优化器仍然寻找最小化或最大化目标函数的解,但它们需要服从参数设定的约束。通过选择正确的约束集,我们可以施加多种约束,从简单的约束(例如,图像边界必须是黑色的)到复杂而精细的约束。

(4)暗含地优化其它目标函数参数化可能内在地使用一种和输出不同的目标函数,并对其进行优化。例如,当视觉网络的输入是一张 RGB 图像时,我们可以参数化那张图像为一个 3D 物体渲染图,并在渲染过程中使用反向传播以进行优化。由于 3D 物体比图像具有更多的自由度,我们通常使用随机参数化,它能生成从不同视角渲染的图像。

在文章接下来的部分中,我们将给出几个示例,证明使用上述方法的有效性,它们带来了令人惊讶和有趣的视觉结果。

对齐特征可视化解释

相关 colab 页面:https://colab.research.google.com/github/tensorflow/lucid/blob/master/notebooks/differentiable-parameterizations/aligned_interpolation.ipynb

特征可视化最常用于可视化单个神经元,但它也可用来可视化神经元组合,以研究它们如何相互作用 [3]。这时不是优化一张图像来激活单个神经元,而是优化它来激活多个神经元

当我们希望真正地理解两个神经元之间的相互作用时,我们可以更进一步并创建多个可视化,逐渐把目标函数从优化一个神经元转移到给另一个激活神经元赋予更多的权重。这在某种程度上和生成模型(如 GAN)的潜在空间插值相似。

尽管如此,仍然存在一些小问题:特征可视化是随机的。即使你优化的是同一个物体,其每一次的可视化图也是不同的。一般而言,这不是什么问题,但它确实阻碍了插值可视化。如果就这样处理,得到的可视化将是非对齐的:视觉关键点(例如眼睛)将出现在每张图像的不同位置。在稍微不同的物体中,缺乏对齐将更难识别差异,因为差异被更明显的图式差异掩盖了。

如果我们观察插值帧的动画演示,就可以看到独立优化存在的问题:

图 2:(1、3 行)非对齐插值:视觉关键点(例如眼睛)从一帧到下一帧的位置会改变。(2、4 行)不同的帧更容易比较,因为视觉关键点在相同位置。

图 3:(顶行)从独立参数化的帧开始;(中行)然后每个帧结合单个共享参数设定;(底行)创建一个视觉对齐的神经元插值。

通过在帧之间部分共享一个参数设定,我们促进可视化结果自然地对齐。直觉上,共享参数设定提供了视觉关键点位移的一个共同参照,但是单独的参数设定基于插值权重赋予每个帧自己的视觉效果。这种参数设定并没有改变目标函数,但确实放大了引力盆地(其中可视化是对齐的)。

这是可微参数化在可视化神经网络中作为有用辅助工具的第一个示例。

通过 3D 渲染进行纹理风格迁移

相关 colab 页面:https://colab.research.google.com/github/tensorflow/lucid/blob/master/notebooks/differentiable-parameterizations/style_transfer_3d.ipynb

现在我们已经构造了一个高效反向传播到 UV 映射纹理的框架,该框架可用于调整现有风格迁移技术来适应 3D 物体。与 2D 情况类似,我们的目标是用用户提供图像的风格进行原始物体纹理的再绘制。下图是该方法的概述:

该算法开始于随机初始化纹理。在每次迭代中,我们采样出一个指向物体边界框中心的随机视点,并渲染它的两个图像:一个是有原始纹理的内容图像(content image),另一个是有当前优化纹理的学习图像(learned image)。

在对内容图像和学习图像进行渲染后,我们对 Gatys 等人 [2] 的风格迁移目标函数进行了优化,并将参数映射回 UV 映射纹理中。重复该过程,直到在目标纹理中实现期望的内容与风格融合。

图 17:各类 3D 模型的风格迁移。注意:内容纹理中的视觉关键点(如眼睛)在生成纹理中正确地显示出来。

因为每个视图都是独立优化的,所以在每次迭代中优化都要把该风格的所有元素融合进去。例如,如果选择梵高的《星夜》作为风格图像,那每个单视图都会加上星星。我们发现,引入先前视图风格的「记忆」会获得更好的结果,如上图所示。为此,我们在近期采样视点上维持表征风格的 Gram 矩阵的滑动平均不变。在每次优化迭代时,我们根据平均矩阵来计算风格损失,而不是基于特定视图计算。

最终纹理结合了期望风格的元素,同时保持了原始纹理的特征。譬如将梵高的《星夜》作为风格图像的模型,其最终纹理就包含了梵高作品中轻快有力的笔触风格。然而,尽管风格图像是冷色调的,最终照片里的皮毛还是保持了原始纹理的暖橙色调。更有趣的是风格迁移时兔子眼睛的处理方式。例如,当风格来自梵高的画作,那兔子的眼睛会像星星一样旋转,而如果是康定斯基的作品,兔子眼睛就会变成抽象图案,但仍然类似原始眼睛。

图 18:将立体派画家费尔南·莱热的画作 The large one parades on red bottom (Fernand Leger, 1953) 的风格迁移到 Stanford Bunny(Greg Turk & Marc Levoy)上的 3D 打印结果。

结论

对于充满创造力的艺术家或研究者来说,对参数化图像进行优化还有很大的空间。这不仅生成了截然不同的图像结果,还可以生成动画和 3D 图像。我们认为本文探讨的可能性只触及了皮毛。例如,你可以将对 3D 物体纹理进行优化扩展到对材料或反射率的优化,甚至可以沿着 Kato 等人 [15] 的方向,继续优化 mesh 顶点位置。

本文主要讨论了可微图像参数化,因为它们易于优化且涵盖了大多应用程序。当然,通过强化学习或进化策略 [17, 18] 来优化不可微或部分可微的图像参数化也是能够实现的。使用不可微参数化实现图像或场景生成也很令人期待。


原文链接:https://distill.pub/2018/differentiable-parameterizations/

理论可视化风格迁移谷歌
3
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

计算机视觉技术

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

神经网络技术

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

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

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