TensorFlow创建DeepDream网络

Google 于 2014 年在 ImageNet 大型视觉识别竞赛(ILSVRC)训练了一个神经网络,并于 2015 年 7 月开放源代码。



该网络学习了每张图片的表示。低层学习低级特征,比如线条和边缘,而高层学习更复杂的模式,比如眼睛、鼻子、嘴巴等。因此,如果试图在网络中表示更高层次的特征,会看到从原始 ImageNet 中提取的不同特征的组合,例如鸟的眼睛和狗的嘴巴。



考虑到这一点,如果拍摄一张新的图片,并尝试最大化与网络高层的相似性,那么结果会得到一张新的视觉体验的图片。在这张新视觉体验的图片中,由高层学习的一些模式如同是原始图像的梦境一般。下图是一张想象图片的例子:

图 1 Google Deep Dreams 的示例

准备工作

从网上下载预训练的 Inception 模型(https://github.com/martinwicke/tensorflow-tutorial/blob/master/tensorflow_inception_graph.pb)。

具体做法

  1. 导入 numpy 进行数值计算,functools 定义一个或多个参数已经填充的偏函数,Pillow 用于图像处理,matplotlib 用于产生图像:

  1. 设置内容图像和预训练模型的路径。从随机噪声的种子图像开始:

  1. 以 graph 的形式加载从网上下载的 Inception 网络。初始化一个 TensorFlow 会话,用 FastGFile(..) 加载这个 graph,并用 ParseFromstring(..) 解析该 graph。之后,使用 placeholder(..) 方法创建一个占位符作为输入。 imagenet_mean
    是预先计算的常数,这里的内容图像减去该值以实现数据标准化。事实上,这是训练得到的平均值,规范化使得收敛更快。该值将从输入中减去并存储在 t_preprocessed 变量中,然后用于加载 graph 定义:

  1. 定义一些 util 函数来可视化图像,并将 TF-graph 生成函数转换为常规 Python 函数(请参阅下面的示例):

  1. 计算图像的梯度上升值。为了提高效率,应用平铺计算,其中在不同的图块上计算单独的梯度上升。通过多次迭代对图像应用随机偏移以模糊图块的边界:

  1. 定义用来减少输入层均值的优化对象。通过考虑输入张量,该梯度函数可以计算优化张量的符号梯度。为了提高效率,图像被分割成几块,然后调整大小并添加到块数组中。对于每个块,使用 calc_grad_tiled 函数:

  1. 加载特定的内容图像,并开始想象。在这个例子中,作者的脸被转化成类似于狼的模样:

图 2 深度转换的例子,其中一个作者变成了狼

解读分析

神经网络存储训练图像的抽象描述:较低层存储线条和边缘等特征,较高层存储较复杂的图像特征,如眼睛、脸部和鼻子。通过应用梯度上升过程,这里使损失函数最大化并促使发现类似于由较高层记忆的图案的内容图片模式。这样网络就生成了令人致幻的图片。

TensorFlow创建DeepDream网络的更多相关文章

  1. tensorflow创建cnn网络进行中文手写文字识别

    数据集下载地址:http://www.nlpr.ia.ac.cn/databases/handwriting/download.html chinese_write_detection.py # -* ...

  2. Tensorflow创建和读取17flowers数据集

    http://blog.csdn.net/sinat_16823063/article/details/53946549 Tensorflow创建和读取17flowers数据集 标签: tensorf ...

  3. nova-network创建初始化网络

    nova-network创建初始化网络

  4. Azure 基础:使用 powershell 创建虚拟网络

    什么是虚拟网络 虚拟网络是您的网络在 Azure 云上的表示形式.您可以完全控制虚拟网络的 IP 地址.DNS 的设置.安全策略和路由表.您还可以更进一步,把虚拟网络划分为多个子网.然后用它们连接您的 ...

  5. 创建 overlay 网络 - 每天5分钟玩转 Docker 容器技术(50)

    上一节我们搭建好实验环境,配置并运行了consul,今天开始创建 overlay 网络. 在 host1 中创建 overlay 网络 ov_net1: -d overlay 指定 driver 为 ...

  6. 创建 macvlan 网络 - 每天5分钟玩转 Docker 容器技术(55)

    上一节我们准备好了 macvlan 的实验环境,今天在 host1 和 host2 中创建 macvlan 网络 mac_net1: 注意:在 host2 中也要执行相同的命令. ① -d macvl ...

  7. openstack pike 创建vxlan网络

    #openstack pike 创建vxlan网络 openstack pike 集群高可用  安装部署 汇总 http://www.cnblogs.com/elvi/p/7613861.html # ...

  8. 055、创建macvlan网络 (2019-03-22 周五)

    参考https://www.cnblogs.com/CloudMan6/p/7364332.html     创建macvlan网络,需要指定使用哪块物理网卡进行通信   -o parent=ens1 ...

  9. 050、创建overlay网络(2019-03-15 周五)

    参考https://www.cnblogs.com/CloudMan6/p/7280787.html   在host01中创建overlay网络 ov_net1   在下面的例子中可以看到,我们在ho ...

随机推荐

  1. 从苏宁电器到卡巴斯基第14篇:我在苏宁电器当营业员 VI

    我也过了一把讲师的瘾 由于iPhone已经成为了我们的主推产品,因此苏宁要求手机专区的每一个人,不论是自营还是厂促,都要对iPhone非常了解才可以.于是,督导也没有事先通知我,就直接让我给手机专区的 ...

  2. 从Android设备中提取内核和逆向分析

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/57074695 一.手机设备环境 Model number: Nexus 5 OS ...

  3. C#-WiFi共享

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. Win64 驱动内核编程-12.回调监控进线程创建和退出

    回调监控进线程创建和退出 两个注册回调的函数:PsSetCreateProcessNotifyRoutine   进程回调PsSetCreateThreadNotifyRoutine    线程回调分 ...

  5. cmake VTK visual studio 2010

    使用cmake在configure之后,出现了以下错误,导致编译无法进行 The C compiler "cl" is not able to compile a simple t ...

  6. docker文件系统分层存储原理

    一,前言 众所周知,docker镜像技术的基础是联合文件系统(UnionFS),其文件系统是分层的,那它的分层机制是什么样的呢?共分为几种层呢?又是怎么工作的呢? 目前docker支持的联合文件系统有 ...

  7. 【JavaScript】Leetcode每日一题-在D天内送包裹的能力

    [JavaScript]Leetcode每日一题-在D天内送包裹的能力 [题目描述] 传送带上的包裹必须在 D 天内从一个港口运送到另一个港口. 传送带上的第 i 个包裹的重量为 weights[i] ...

  8. GUI基础知识点

    简介 GUI的核心技术:AWT(是Swing 的前身) Swing 不流行的原因 界面不美观 运行需要jre环境(可能一个项目的大小比jre还要大) 为什么我们需要学习 了解MVC架构和监听 AWT ...

  9. 查询某软件所连接的外网IP地址

    一:背景环境: 1>:某机械公司用的某些特殊软件,需要实现所有使用某软件的屏蔽其软件所连接的外网ip,其他上网功能不做限制. 二:需求分析:可以查出此软件所连接的外网ip,在路由器的ip过滤中将 ...

  10. Linux系统运行netstat命令时的过三关斩一将

    1.简介 这篇文章主要是记录在日常工作中遇到的一些问题,将其都总结整合到一起,方便查看,提高工作效率.小伙伴们看到标题可能觉得奇怪,不是过五关斩六将而是过三关斩一将.慢慢地往后看发现其中奥秘. 2.过 ...