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/

原文地址:https://www.cnblogs.com/alan-blog-TsingHua/p/9733945.html

时间: 2024-10-08 21:49:55

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

架构演进之「微服务架构」

"为什么要搞「微服务架构」"?这也是我们当初讨论的聚焦点.现在天天把"微服务"挂在嘴边的人很多,但是有多少人真正深入思考过"为什么",我认为可能不多. 于是我在梳理材料的时候,就决定从源头入手--即"为什么". 架构是演进的,不是一蹴而就. "架构演进趋势图"中的趋势分析,在业界比较公认.这个图本身的内容.关于各个架构的描述.优缺点等等,网上简单搜索一下有大把大把的,感兴趣的同学可以自行搜索,毕竟这也不是我

架构设计之「 微服务入门 」

微服务这几年不可谓不火,很多技术团队都开始在自己的项目上引入了微服务.一方面这些团队确实很好的推动了微服务的应用和发展,另一方面也可以看到一些盲目追技术热点的行为所带来的危害,比如很多中小团队对微服务的基础知识只是做了很浅显的了解就开始盲目的推动微服务的实施,最后导致了项目的失败. 微服务要想做好是一个非常复杂的架构,今天就先只聊一聊微服务的一些基础架构,算是入门篇. 一.什么是「 微服务 」? 「 微服务 」由 Martin Fowler 提出,它是指一种软件架构风格.一个大型的系统可以由多个

毕业原版购买-「 卡普兰诺大学」办理加拿大Capilano 证书n

卡普兰诺大学」办理加拿大Capilano[微/Q:3320.1717 -- WeChat:3320.1717]联系人An/查看点击网页快照查看][留信认证.文凭.学位证.成绩单等]代办国外(海外)澳洲英国 加拿大 韩国 美国 新西兰 等各大学毕业.证,修改成绩单分数,留信认证,文凭,diploma,degree WeChat:3320.1717[删除请点击百度快照]真实认证.海外回囯的同学定制毕业.证.真实认证.毕业.证.卡普兰诺大学」办理加拿大CapilanoWeChat:3320.1717

CSS无需Webfont实现近似「微软雅黑Light」的字体效果

在网页制作中,美观的字体能很大程度上提升一个网页的整体外观浏览效果(说白了就是提升逼格),但受各种因素的影响(例如中文字体应用Webfont的麻 烦),使开发者在制作过程中不得不使用“Web安全字体”,这使网页的外观效果大幅下降.今天在改模板的过程中偶然发现一个很笨的方法,实现近似微软雅黑 Light的字体效果. 实际上「微软雅黑Light」字体就是相对于「微软雅黑」字体较细,但是它的显示效果却要让人觉得舒适很多,只要字体不会太小,显示效果还是不错的. 所以直接用font-weight属性设置字

Linux 小知识翻译 - 「协议(protocol)」

对于理解服务器和网络来说,「协议」是不可缺少的概念. 「协议(protocol)」有「规则,规定」的意思. 实际上「协议」的函数很广,在通信领域,「协议」规定了「在通信时,什么样的情况下,以什么样的顺序,什么样的方式交互什么样的数据」. 抽象的去理解「协议」可能会比较困难,下面来举个例子. 通过Web以HTML方式交互时使用的协议是「HTTP」(Hyper Text Transfer Protocol).这个协议最重要的就是规定了服务器和客户端之间以HTML方式交互的规则. 比如,客户端连接上服

苹果搜索广告后台大揭秘,最全最细致详解,手把手设置教程「后附官方视频」-b

WWDC2016 搜索广告分会视频和 PPT 发布了,ASO100 带开发者第一时间了解 Search Ads 后台设置(文末有原声视频). 首先介绍一下搜索广告的模式和竞价规则 广告模式为 CPT(Cost Per Tap,按点击收费),类似于国内的 CPC 广告模式.广告的展示受两个因素的影响:相关性与出价. 如下图,所有相关性低的广告都不被展示(无论出价高低),相关性相差不多时,展示出价高的广告. 苹果根据两方面来判断相关性,一是 App 文本的元数据(来源于描述等位置),二是用户点击广告

翻译「C++ Rvalue References Explained」C++右值引用详解 Part1:概述

本文系对「C++ Rvalue References Explained」 该文的翻译,原文作者:Thomas Becker. 该文较详细的解释了C++11右值引用的作用和出现的意义,也同时被Scott Meyers推荐,全文共分11个部分,我将利用业余时间,分别翻译. 受笔者水平所限,可能叙述会出现些许问题,还望多多指正. 部分名词为了保持含义和方便理解,并未翻译成中文,有的在括号内给出了常见的中文翻译. 目录 概述 Move语义 右值引用 强制Move语义 右值引用就是右值吗? Move语义

XCActionBar 「Xcode 中的 Alfred」

下载地址:https://github.com/pdcgomes/XCActionBar 基本命令: (1)「command+shift+8」或者双击「command」键可以打开「动作输入框窗口」 (2)「command+option+7」或者双击「alt」键可以执行「上次的动作」 编程时可用于双击或三击事件的按键分别为如下5个: (1)「alt」:NSAlternateKeyMask (2)「command」:NSCommandKeyMask (3)「control」:NSControlKey

通俗解释「为什么数据库难以拓展」

"如何通俗解释「为什么数据库难以拓展」",这个问题来自 Quora,题主还补充说自己有一些数据库的基本知识,但依然不理解为什么扩展数据库如此困难.伯乐在线编译摘编了这个问答贴的两个热门回复. Paul King , Facebook 数据科学家(3.6K 赞) 要扩展数据库有四大挑战:搜索.并发性.一致性和速度. 假设你有一张清单,上面有10个人名.如果你想要查找某个人,只需要看一眼清单就行. 但如果清单上有100万个人名呢?这时,你就需要一些策略了.电话簿把人名按照字母顺序排列,这样