Deep Dream图像生成案例实践
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图像生成案例实践相关推荐
- MATLAB环境下基于AlexNet网络的Deep Dream图像生成
本文主要讲解如何使用预训练的卷积神经网络AlexNet生成Deep Dream图像 2015年Google发布了一个比较有意思的东西,Deep Dream,关于Deep Dream,可参考查看如下文章 ...
- 对抗生成网络GAN系列——DCGAN简介及人脸图像生成案例
- CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用
CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用 目录 基于TF框架利 ...
- CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更大尺寸的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用
CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更大尺寸的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用 目录 基于TF框架利 ...
- CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)—五个架构设计思维导图
CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)-五个架构设计思维导图 ...
- TF之DD:利用Inception模型+GD算法生成带背景的大尺寸、高质量的Deep Dream图片——五个架构设计思维导图
TF之DD:利用Inception模型+GD算法生成带背景的大尺寸.高质量的Deep Dream图片--五个架构设计思维导图 目录 TF中的Deep Dream实践:利用Inception模型+GD算 ...
- TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片
TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片 目录 输出结果 设计思路 部分代码 输出结果 设计思路 部分代码 # coding:utf-8#TF之DD ...
- TF之DD:利用Inception模型+GD算法生成更大尺寸的Deep Dream精美图片
TF之DD:利用Inception模型+GD算法生成更大尺寸的Deep Dream精美图片 目录 输出结果 设计思路 部分代码 输出结果 设计思路 部分代码 TF之TFDeepDream:生成更大尺寸 ...
- Deep Dream模型
Deep Dream 是Google 公司在2015 年公布的一顶有趣的技术.在训练好的卷积神经网络中,只需要设定几个参数,就可以通过这项技术生成一张图像.生成出的图像不仅令人印象深刻,而且还能帮助我 ...
最新文章
- t-sql使用小记2010-01-27
- squid cache_peer 参数详解
- 计算机自动连续工作的基础是存储程序原理,计算机的存储程序工作原理是什么...
- Xamarin iOS教程之显示和编辑文本
- 2879: [Noi2012]美食节
- 【通知】深度学习之人脸图像算法重印,欢迎读者支持!
- 中专计算机技术难吗,中专学计算机专业难不难?
- 计算机网络的保护策略,计算机网络安全问题保护策略论文原稿
- linux的“自动化”
- 详测 Generics Collections TStack(1): Push、Pop、Peek - 其他功能同 TQueue
- linux nona怎么用_Linux nano编辑器命令常用方法
- android nfc开发_意法半导体NFC产品线完整 满足多元应用_企业动态_新闻中心
- 【数据结构】链表的python实现
- redis集群环境搭建入门
- 【php】利用php的构造函数与析构函数编写Mysql数据库查询类 (转)
- error: 'EOF' was not declared in this scope的解决办法
- Make Menuconfig详解 (配置内核选择)
- 承上启下继往开来,Python3上下文管理器(ContextManagers)与With关键字的迷思
- php下载链接 迅雷下载,php实现把url转换迅雷thunder资源下载地址的方法
- 使用DownloadManager进行更新下载,部分机型下载失败解决方案