Python深度学习之DeepDream
Deep Learning with Python
这篇文章是我学习《Deep Learning with Python》(第二版,François Chollet 著) 时写的系列笔记之一。文章的内容是从 Jupyter notebooks 转成 Markdown 的,你可以去 GitHub 或 Gitee 找到原始的 .ipynb
笔记本。
你可以去这个网站在线阅读这本书的正版原文(英文)。这本书的作者也给出了配套的 Jupyter notebooks。
本文为 第8章 生成式深度学习 (Chapter 8. Generative deep learning) 的笔记之一。
文章目录
- Deep Learning with Python
- 8.2 DeepDream
- 用 Keras 实现 DeepDream
8.2 DeepDream
DeepDream
DeepDream 是一种让机器修改图像技术,它利用卷积神经网络,可以作出很迷幻的图像:
由于 DeepDream 用的 CNN 是在 ImageNet 上训练的,而 ImageNet 里有大量的动物图片,所以,DeepDream 生成的图像里有很多动物、动物的一部分的伪影。
DeepDream 使用的算法与卷积神经网络过滤器可视化技术很类似。回忆一下,卷积神经网络过滤器可视化所做的操作是:反向运行卷积神经网络,从一张带随机噪点的空白图像输入,做梯度上升,使某过滤器激活最大化。
DeepDream 与过滤器可视化的主要区别在于:
- 在 DeepDream 中,我们尝试将所有层的激活最大化,而不只是某一层,这样,会有大量的可视化特征混合在一起——生成更加迷幻的图像。
- 从一张现有的图像开始,而不是从随机噪点的输入开始,这样生成的图像中会包含输入图像中已存在的视觉模式,并以将其中的一些元素扭曲——生成更加迷幻的图像。
- 输入图像会在不同的尺度上进行处理——这些尺度称为「八度」(octave),这可以提高输出的质量。
用 Keras 实现 DeepDream
首先,我们需要选定一个在 ImageNet 上预训练的卷积神经网络:VGG16、Inception、ResNet50 等等都可以。实践证明,Inception 可以生成的比较好,所以这里我们使用 Keras 内置的 Inception V3 模型。
# 不使用及时执行模式
# See https://github.com/tensorflow/tensorflow/issues/33135import tensorflow as tftf.compat.v1.disable_eager_execution()
# 加载预训练的 Inception V3 模型from tensorflow.keras.applications import inception_v3
from tensorflow.keras import backend as KK.set_learning_phase(0)model = inception_v3.InceptionV3(weights='imagenet', include_top=False)
WARNING:tensorflow:From <ipython-input-3-aa9be14f7cc2>:6: set_learning_phase (from tensorflow.python.keras.backend) is deprecated and will be removed after 2020-10-11.
Instructions for updating:
Simply pass a True/False value to the `training` argument of the `__call__` method of your layer or model.
接下来定义损失——需要用梯度上升最大化的量。DeepDream 中,我们要同时将多个层的所有过滤器激活最大化。具体的实现是:对一组靠近顶部的层激活的 L2 范数进行加权求和,然后求出这个值的最大化。层的选择、以及权重分配对生成的结果影响很大:
- 靠近底部的层会生成基本的几何图案;
- 靠近顶部的层会生成能够看出某些物品的图像(ImageNet 中的图案,比如鸟或狗)
这里就随便选几个了:
# 输出 Inception V3 模型的结构,在其中选择层import tensorflow as tftf.keras.utils.plot_model(model)
# DeepDream 配置layer_contributions = {'mixed4': 0.0,'mixed5': 3.0,'mixed6': 2.0,'mixed7': 1.5,
}
求对于这些被选中层的损失:
# 定义需要最大化的损失layer_dict = dict([(layer.name, layer) for layer in model.layers])loss = K.variable(0.)for layer_name in layer_contributions:coeff = layer_contributions[layer_name]activation = layer_dict[layer_name].outputscaling = K.prod(K.cast(K.shape(activation), 'float32'))# loss += coeff * K.sum(K.square(activation[:, 2: -2, :])) / scaling# 应该用下面的代码
Python深度学习之DeepDream相关推荐
- Python深度学习(DeepDream)--学习笔记(十九)
8.2 DeepDream DeepDream是一种艺术性的图像修改技术,它用到了卷积神经网络学到的表示.DeepDream由Google于2015年夏天首次发布,使用Caffe深度学习库编写实现.它 ...
- 《python深度学习》代码中文注释
<python深度学习>由Keras之父.现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和Keras进行深度学习的探索实 ...
- 《python深度学习》学习笔记与代码实现(第八章:8.1,8.2,8.3)
<python深度学习>第八章:生成式深度学习 8.1 使用LSTM生成文本 给定一个序列,预测下一个或多个标记的概率,从而生成之后的序列 给定前面的标记,能够对下一个标记的概率进行建模的 ...
- 粗读《Python 深度学习》(7)
粗读<Python 深度学习>(7) 第八章 生成式深度学习 8.1 使用 LSTM 生成文本 8.1.1 生成式循环网络简史(略) 8.1.2 如何生成序列数据 8.1.3 采样策略的重 ...
- 【深度学习】DeepDream的实现
问题描述: 用keras实现DeepDream.我们将从一个在 ImageNet 上预训练的卷积神经网络开始.本次选择的模型是Inception模型 实现步骤: 下载数据集和设置DeepDream配置 ...
- Python深度学习:基于TensorFlow
作者:吴茂贵,王冬,李涛,杨本法 出版社:机械工业出版社 品牌:机工出版 出版时间:2018-10-01 Python深度学习:基于TensorFlow
- Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
作者:吴茂贵,郁明敏,杨本法,李涛,张粤磊 著 出版社:机械工业出版社 品牌:机工出版 出版时间:2019-11-01 Python深度学习:基于PyTorch [Deep Learning with ...
- python神经结构二层_《python深度学习》笔记---8.3、神经风格迁移
<python深度学习>笔记---8.3.神经风格迁移 一.总结 一句话总结: 神经风格迁移是指将参考图像的风格应用于目标图像,同时保留目标图像的内容. 1."神经风格迁移是指将 ...
- Python深度学习之搭建小型卷积神经网络(Kaggle网站Dogs-vs-Cats数据集)
完全来源与<Python深度学习>中的例子,仅供学习只用. Cats vs. Dogs(猫狗大战)是Kaggle大数据竞赛的数据集,数据集由训练数据和测试数据组成,训练数据包含猫和狗各12 ...
最新文章
- Storm和MR及Spark Streaming的区别
- centos solr 部署到 tomcat 上
- eclipse 修改maven项目的jdk版本
- 前端学习(2948):webpack创建简单项目
- 34营销的三要素:真实诚信、诱饵引入、合理宣传
- Java基本数据类型和String类型的转化
- 95-10-130-启动-TransactionCoordinator
- 编程练习赛11B 物品价值(装压dp)
- 我购买了一台acer笔记本
- innodb 关键特性、缓冲池、插入缓冲、两次写
- html5兼容包,webpack4搭建现代Hybird-h5工程
- java国际时间转换为北京时间
- 计算机 上的图片怎样加密码,高手加密法之利用图片给电脑加密新招
- MTK平台前后摄使用PMIC供电无法设置不同的DVDD电压
- 新闻字幕条制作,一款不错的ae字幕模板
- JSP-----JSP简介
- android清理存储工具,(安卓)CCleaner Pro — 手机垃圾文件清理工具
- 计算机启动的四种方式,电脑有几种开机方式
- laravel安装的几种方法总结
- 微软官方原版win7(64位/32位)旗舰版系统下载
热门文章