Deep Dream图像生成案例实践:

按课程案例,生成DeepDream图像。

提交要求:

1、你认为按评分标准能得分最高的一次带运行结果的源代码文件(.ipynb 格式)

2、作为附件上传

评分标准:

1、完成DeepDream图像生成案例,有完整的代码,模型能运行;以噪音图像为优化起点,利用单通道特征,得6分;

2、以噪音图像为优化起点,利用多通道特征,得7分;

3、以背景图像(mountain风景画)为优化起点,利用单通道特征,得8分;

4、以背景图像(mountain风景画)为优化起点,利用多通道特征,得9分;

5、以背景图像(mountain风景画)为优化起点,利用多通道特征,并对图像生成质量进行改善,得10分。

注意:运行代码的时候出现了这个错误——AttributeError: module ‘scipy.misc’ has no attribute ‘imresize’,使用pip install scipy==1.2.1和pip install Pillow = =6.0.0命令成功解决

源代码:

#coding:utf-8
from __future__ import print_function
import os
from io import BytesIO
import numpy as np
from functools import partial
import PIL.Image
import scipy.misc
import tensorflow as tfclass Deepdream:def __init__(self):self.name = "mixed4c"self.model_fn = r"D:\编程代码\python程序\tensorflow_inception_graph.pb"self.img0 = PIL.Image.open("D:\\Photo\\mountain.jpg")self.img0 = np.float32(self.img0)#导入Inception模型def Inception(self):#创建图和会话self.graph = tf.Graph()self.sess = tf.InteractiveSession(graph=self.graph)#导入Inception网络with tf.gfile.FastGFile(self.model_fn,"rb") as f:graph_def = tf.GraphDef()graph_def.ParseFromString(f.read())#定义输入图像的占位符self.t_input = tf.placeholder(np.float32,name="input")#图像的预处理--减均值imagenet_mean = 117.0#图像的预处理—增加维度t_preprocessed = tf.expand_dims(self.t_input-imagenet_mean,0)#导入模型并将经处理的图像送入网络中tf.import_graph_def(graph_def,{"input":t_preprocessed})self.layer_output = self.graph.get_tensor_by_name("import/%s:0" %self.name)#图像的拉普拉斯金字塔分解def render_deepdream(self,t_obj,img0,iter_n=10,step=1.5,octave_n=4,octave_scale=1.4):t_score = tf.reduce_mean(t_obj)t_grad = tf.gradients(t_score,self.t_input)[0]img = img0.copy()#将图像进行金字塔分解#从而分为高频、低频部分octaves = []for i in range(octave_n-1):hw = img.shape[:2]lo = self.resize(img,np.int32(np.float32(hw)/octave_scale))hi = img - self.resize(lo,hw)img = looctaves.append(hi)#首先生成低频的图像,再依次放大并加上高频for octave in range(octave_n):if octave > 0:hi = octaves[-octave]img = self.resize(img,hi.shape[:2]) + hifor i in range(iter_n):g = self.calc_grad_tiled(img,t_grad)img += g*(step/(np.abs(g).mean()+1e-7))img = img.clip(0,255)self.savearray(img,r"C:\Users\kxy\Desktop\mountain_deepdream.jpg")im = PIL.Image.open(r"C:\Users\kxy\Desktop\mountain_deepdream.jpg").show()def savearray(self,img_arry,img_name):scipy.misc.toimage(img_arry).save(img_name)print("img saved:%s" %img_name)#生成更大尺寸的图像#原始图像尺寸可能很大,从而导致内存耗尽问题def calc_grad_tiled(self,img,t_grad,tile_size=512):sz = tile_sizeh,w = img.shape[:2]sx,sy = np.random.randint(sz,size=2)#先在行作整体运动,再在列作整体运动img_shift = np.roll(np.roll(img,sx,1),sy,0)grad = np.zeros_like(img)for y in range(0,max(h-sz//2,sz),sz):for x in range(0,max(w-sz//2,sz),sz):sub = img_shift[y:y+sz,x:x+sz]g = self.sess.run(t_grad,{self.t_input:sub})grad[y:y+sz,x:x+sz] = greturn np.roll(np.roll(grad,-sx,1),-sy,0)#将图像放大ratio倍def resize_ratio(self,img,ratio):min = img.min()max = img.max()img = (img - min)/(max - min)*255img = np.float32(scipy.misc.imresize(img,ratio))img = img/255*(max-min)+minreturn img#调整图像尺寸def resize(self,img,hw):min = img.min()max = img.max()img = (img - min)/(max - min)*255img = np.float32(scipy.misc.imresize(img,hw))#img = np.float32(np.array(PIL.Image.fromarray(img,mode="RGB").resize(hw)))img = img/255*(max-min) + minreturn imgif __name__ == "__main__":D = Deepdream() #生成Deepdream对象D.Inception()  #导入Inception模型D.render_deepdream(tf.square(D.layer_output),D.img0)

利用DeepDream生成的效果图片:

原图1:

效果1:

原图2:

效果图2:

原图3:

效果图3:

Deep Dream图像生成案例实践相关推荐

  1. MATLAB环境下基于AlexNet网络的Deep Dream图像生成

    本文主要讲解如何使用预训练的卷积神经网络AlexNet生成Deep Dream图像 2015年Google发布了一个比较有意思的东西,Deep Dream,关于Deep Dream,可参考查看如下文章 ...

  2. 对抗生成网络GAN系列——DCGAN简介及人脸图像生成案例

  3. CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用

    CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用 目录 基于TF框架利 ...

  4. CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更大尺寸的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用

    CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更大尺寸的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用 目录 基于TF框架利 ...

  5. CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)—五个架构设计思维导图

    CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)-五个架构设计思维导图 ...

  6. TF之DD:利用Inception模型+GD算法生成带背景的大尺寸、高质量的Deep Dream图片——五个架构设计思维导图

    TF之DD:利用Inception模型+GD算法生成带背景的大尺寸.高质量的Deep Dream图片--五个架构设计思维导图 目录 TF中的Deep Dream实践:利用Inception模型+GD算 ...

  7. TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片

    TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片 目录 输出结果 设计思路 部分代码 输出结果 设计思路 部分代码 # coding:utf-8#TF之DD ...

  8. TF之DD:利用Inception模型+GD算法生成更大尺寸的Deep Dream精美图片

    TF之DD:利用Inception模型+GD算法生成更大尺寸的Deep Dream精美图片 目录 输出结果 设计思路 部分代码 输出结果 设计思路 部分代码 TF之TFDeepDream:生成更大尺寸 ...

  9. Deep Dream模型

    Deep Dream 是Google 公司在2015 年公布的一顶有趣的技术.在训练好的卷积神经网络中,只需要设定几个参数,就可以通过这项技术生成一张图像.生成出的图像不仅令人印象深刻,而且还能帮助我 ...

最新文章

  1. t-sql使用小记2010-01-27
  2. squid cache_peer 参数详解
  3. 计算机自动连续工作的基础是存储程序原理,计算机的存储程序工作原理是什么...
  4. Xamarin iOS教程之显示和编辑文本
  5. 2879: [Noi2012]美食节
  6. 【通知】深度学习之人脸图像算法重印,欢迎读者支持!
  7. 中专计算机技术难吗,中专学计算机专业难不难?
  8. 计算机网络的保护策略,计算机网络安全问题保护策略论文原稿
  9. linux的“自动化”
  10. 详测 Generics Collections TStack(1): Push、Pop、Peek - 其他功能同 TQueue
  11. linux nona怎么用_Linux nano编辑器命令常用方法
  12. android nfc开发_意法半导体NFC产品线完整 满足多元应用_企业动态_新闻中心
  13. 【数据结构】链表的python实现
  14. redis集群环境搭建入门
  15. 【php】利用php的构造函数与析构函数编写Mysql数据库查询类 (转)
  16. error: 'EOF' was not declared in this scope的解决办法
  17. Make Menuconfig详解 (配置内核选择)
  18. 承上启下继往开来,Python3上下文管理器(ContextManagers)与With关键字的迷思
  19. php下载链接 迅雷下载,php实现把url转换迅雷thunder资源下载地址的方法
  20. 使用DownloadManager进行更新下载,部分机型下载失败解决方案

热门文章

  1. JavaScript — DOM
  2. Liunx信息显示与文件搜索
  3. 我的Git笔记总结—常用命令
  4. java poi word 复制_Java 使用POI填充Word表格内容和复制模板行属性方法示例代码
  5. 中石油大学 11117 八目鳗 贪心 + 排序
  6. oracle怎么增量备份,Oracle 增量备份
  7. [幽默笑话]2006年高考作文爆笑集锦
  8. 如何在家自学前端后端基础?路线是什么?前端程序员到底干什么?学了C语言然后呢?到底是选前端还是后端?
  9. 致青春、致所爱的生活
  10. python打开的文件应该放在哪里-python放在哪里