TensorFlow创建DeepDream网络
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)。
具体做法
导入 numpy 进行数值计算,functools 定义一个或多个参数已经填充的偏函数,Pillow 用于图像处理,matplotlib 用于产生图像:
设置内容图像和预训练模型的路径。从随机噪声的种子图像开始:
以 graph 的形式加载从网上下载的 Inception 网络。初始化一个 TensorFlow 会话,用 FastGFile(…) 加载这个 graph,并用 ParseFromstring(…) 解析该 graph。之后,使用 placeholder(…) 方法创建一个占位符作为输入。 imagenet_mean 是预先计算的常数,这里的内容图像减去该值以实现数据标准化。事实上,这是训练得到的平均值,规范化使得收敛更快。该值将从输入中减去并存储在 t_preprocessed 变量中,然后用于加载 graph 定义:
定义一些 util 函数来可视化图像,并将 TF-graph 生成函数转换为常规 Python 函数(请参阅下面的示例):
计算图像的梯度上升值。为了提高效率,应用平铺计算,其中在不同的图块上计算单独的梯度上升。通过多次迭代对图像应用随机偏移以模糊图块的边界:
定义用来减少输入层均值的优化对象。通过考虑输入张量,该梯度函数可以计算优化张量的符号梯度。为了提高效率,图像被分割成几块,然后调整大小并添加到块数组中。对于每个块,使用 calc_grad_tiled 函数:
- 加载特定的内容图像,并开始想象。在这个例子中,作者的脸被转化成类似于狼的模样:
图 2 深度转换的例子,其中一个作者变成了狼
解读分析
神经网络存储训练图像的抽象描述:较低层存储线条和边缘等特征,较高层存储较复杂的图像特征,如眼睛、脸部和鼻子。通过应用梯度上升过程,这里使损失函数最大化并促使发现类似于由较高层记忆的图案的内容图片模式。这样网络就生成了令人致幻的图片。
TensorFlow创建DeepDream网络相关推荐
- tensorflow创建cnn网络进行中文手写文字识别
数据集下载地址:http://www.nlpr.ia.ac.cn/databases/handwriting/download.html chinese_write_detection.py # -* ...
- 基于tensorflow、CNN网络识别花卉的种类(图像识别)
基于tensorflow.CNN网络识别花卉的种类 这是一个图像识别项目,基于 tensorflow,现有的 CNN 网络可以识别四种花的种类.适合新手对使用 tensorflow进行一个完整的图像识 ...
- Tensorflow创建循环神经网络
虽然已经接触deep learning很长一段时间了,也看了很久rnn相关的代码,但是突然想用tensorflow实现一些功能的时候,突然发现丝毫没有头绪,找了一些资料,学习了一波,记录一下. 一.t ...
- TensorFlow搭建VGG-Siamese网络
TensorFlow搭建VGG-Siamese网络 Siamese原理 Siamese网络,中文称为孪生网络.大致结构如下图所示: Siamese网络有两个输入,一个输出.其中,两个输入经过相同的网络 ...
- [Python人工智能] 四.TensorFlow创建回归神经网络及Optimizer优化器
从本篇文章开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇文章讲解了TensorFlow基础和一元直线预测的案例,以及Session.变量.传入值和激励函数:这篇文章将详 ...
- 使用Tensorflow实现残差网络ResNet-50
这篇文章讲解的是使用Tensorflow实现残差网络resnet-50. 侧重点不在于理论部分,而是在于代码实现部分.在github上面已经有其他的开源实现,如果希望直接使用代码运行自己的数据,不建议 ...
- 创建calico网络报错client response is invalid json
使用docker创建calico网络失败. # docker network create --driver calico --ipam-driver calico-ipam testcalico E ...
- 虚拟机中使用Samba实现文件共享,并在win10上创建映射网络驱动器
首先我们给虚拟机安装samba服务(如果搭的是别的仓库记得开仓库) 输入命令:yum install samba samba服务的配置文件在,我们来看一下/etc/samba/smb.conf 输入命 ...
- 创建 overlay 网络 - 每天5分钟玩转 Docker 容器技术(50)
上一节我们搭建好实验环境,配置并运行了consul,今天开始创建 overlay 网络. 在 host1 中创建 overlay 网络 ov_net1: -d overlay 指定 driver 为 ...
最新文章
- compass安装使用960 Grid System
- 黄聪:BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)...
- 【VLC-Android】LibVLC API简介(相当于VLC的MediaPlayer)
- 提高开源项目逼格-为你的github项目添加Travis CI
- #pragma once与 #ifndef的区别为了避免同一个文件被include多次
- iOS 分组索引和索引分区
- 纯前端控件集 WijmoJS 2018V2发布,提供可视化设计器,在React、Vue和Angular中的更易用...
- 过采样:SMOTE算法
- python练习54:取一个整数a从右端开始的4〜7位
- 设备管理还在不坏不修、不停不管?这5大误区一定要避免
- 离散数学——可数集和不可数集
- Python爬取微信公众号文章、标题、文章地址
- NC14548-B-逃脱(bfs)
- 计算机设计大赛国赛演讲稿
- 港大黄凯斌:6G时代的边缘智能,香农与图灵的相遇
- html5波浪效果,html5 canvas粒子波浪动画特效
- 老板用个人手机可以远程监控员工的电脑吗?
- surf和sift算法被申请专利后部分opencv版本无法使用后的安装pycharm+opencv使用surf和sift算法教程
- Java池化技术你了解多少?
- Blender(win)渲染参数设置解析