Google DeepDream精心制作


12

我在该网站上看到了一些有关Deep Dream的问题,但是似乎没有一个人真正谈论DeepDream的工作。据我所知,它们似乎已经改变了目标函数,并且还改变了反向传播方式,因此它们不更新权重而是更新输入图像。

我想知道是否有人确切知道Google做了什么。他们在他们的一篇文章中提到在进行优化时强加贝叶斯先验,由此我可以想象得到让神经网络为每个标签吐出图像并不那么困难-我们可以简单地设置标签,然后相应地优化输入向量。

但是,深梦的有趣之处在于它是逐层执行的,因此,我不太确定它如何逐层强调细节。

当然,提供图像会给您每个神经元的价值,但是我们如何利用这些信息来夸大原始图像中的细节呢?我一直在努力寻找有关此问题的详细文章。

参考:此处vzn回答了类似的问题:https ://cs.stackexchange.com/a/44857/49671

通过该链接,可以在此处实现Deepdream的实现:http ://auduno.com/post/125362849838/visualizing-googlenet-classes

除非它不提供此处讨论的夸张功能,否则:http//googleresearch.blogspot.com/2015/06/inceptionism-going-deeper-into-neural.html

它们都显示特定类和特定层的可视化,并说:

除了确切规定我们要网络放大的功能以外,我们还可以让网络做出决定。在这种情况下,我们只需向网络提供任意图像或照片,然后让网络分析图片。然后,我们选择一个图层并要求网络增强检测到的内容。


Answers:


7

DeepDream的想法是这样的:从网络中选择某个层(通常是卷积层),将起始图像通过网络传递以提取所选层上的特征,将该层上的梯度设置为与激活本身相同,然后反向传播图片。

为什么有道理?直观地,它放大了网络中最大程度激活的功能。通过反向传播此渐变,我们将进行图像更新,以增强任何现有的激活。如果该层中有一个类似猫的检测器,并且图像中包含一些看上去有点像猫的补丁,则DeepDream会通过将该补丁更新为更像猫的方式来增强这种激活。结果,DeepDream试图在图像中的任何地方找到猫和狗(ImageNet数据集中有很多狗,因此该网络有许多与狗相关的神经元)。

如果您看一下代码,则关键部分是objective_L2使它工作的函数:,然后反向传播。dx=x

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.