1.导包:

import tensorflow as tf
import numpy as np
import IPython.display as display
import PIL.Image
from tensorflow.keras.preprocessing import image

2. 相关函数:

#图像标准化
def normalize_image(img):img = 255*(img+1.0)/2.0return tf.cast(img,tf.uint8)
#图像可视化
def show_image(img):display.display(PIL.Image.fromarray(np.array(img)))
#保存图像文件函数
def save_image(img,file_name):PIL.Image.fromarray(np.array(img)).save(file_name)
#读取图像
def read_image(file_name,max_dim=None):img = PIL.Image.open(file_name)if max_dim:img.thumbnail((max_dim,max_dim))return np.array(img)

3.读取图像:

#读取图像
image_file= r"D:\1\people.jpg"
original_img = read_image(image_file,max_dim=1200)
show_image(original_img)

4.导入V3模型:

#导入V3模型
base_model = tf.keras.applications.InceptionV3(include_top=False,weights='imagenet')
base_model.summary()

5. 激活指定的卷积层:

layer_names=['mixed3','mixed5']layers=[base_model.get_layer(name).output for name in layer_names]

6. 创建特征提取模型:

#创建特征提取模型
dream_model = tf.keras.Model(inputs=base_model.input,outputs=layers)

7.损失函数:

def calc_loss(img,model):#对图像做变形,由(300,300,3)扩展为(1-样本数,300,300,3)img=tf.expand_dims(img,axis=0)#图像通过模型前向传播得到计算结果layer_activations = model(img)losses = []for act in layer_activations:loss = tf.math.reduce_mean(act)losses.append(loss)#返回选中每通道的计算结果return tf.reduce_sum(losses)

8.图像优化函数:

#定义图像优化过程函数
def render_deepdream(model,img,steps=100,step_size=0.01,verbose=1):for n in tf.range(steps):with tf.GradientTape() as tape:#对img进行梯度变换tape.watch(img)loss = calc_loss(img,model)#计算损失相对于输入图像像素的梯度gradients = tape.gradient(loss,img)#归一化梯度值gradients /= tf.math.reduce_std(gradients) +1e-8#在梯度上升中,损失值越来越大,因此可以直接添加损失值到图像中,因为他们的shape相同img = img+gradients*step_sizeimg = tf.clip_by_value(img,-1,1)#输出过程提示信息if(verbose ==1):if((n+1)%10==0):print("Step {}/{},loss {}".format(n+1,steps,loss))return img

9.图像载入模型:

img = tf.keras.applications.inception_v3.preprocess_input(img_noise)
img = tf.convert_to_tensor(img)

10.开始训练:

import timestart = time.time()
print("开始做梦...")#调用优化过程
dream_img = render_deepdream(dream_model,img,steps=1000,step_size=0.01)end = time.time()
end-start
print("梦醒时分....")#标准化图像
dream_img = normalize_image(dream_img)#显示结果图像
show_image(dream_img)#保存结果图像
file_name = 'deepdream_{}.jpg'.format(layer_names)
save_image(dream_img,file_name)
print("环境已保存为:".format(file_name))

DeepDream:图像合成教程相关推荐

  1. photoshop图像合成教程之将人物和风景合成一张图片

    photoshop教程中图像合成在图像处理中占有重要地位,本篇ps图像合成教程使用两幅素材:人物和风景,将其合成到一幅图像中. 使用到的PS知识点不复杂,图层蒙版和画笔即可完成.   ps图像合成教程 ...

  2. 上海计算机一级ps教程,计算机等级考试一级Photoshop图像合成教程

    计算机等级考试一级Photoshop图像合成教程 引导语;你知道如何用ps进行图像合成吗,以下是百分网小编分享给大家的计算机等级考试一级Photoshop图像合成教程,欢迎阅读学习! [操作步骤] 使 ...

  3. 据说这是国外最火的55套PS实用教程!

    <国外最火的55套PS实用教程> 1.图像合成:创意水墨肖像 这是一个将水墨和人物照片合成的经典案例,教程涉及抠图.笔刷.蒙版.纹理素材使用等基础知识点,小技巧大效果,用腻了App的 滤镜 ...

  4. TensorFlow 机器学习秘籍第二版:6~8

    原文:TensorFlow Machine Learning Cookbook 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑(MTPE ...

  5. 3.18 使用橡皮擦工具制作图像合成效果 [原创Ps教程]

    原文:http://coolketang.com/staticPhotoshop/5a98d383fe88c20038c568fe.html 1. 本节课将为您演示,如何使用[橡皮擦]工具制作图像合成 ...

  6. 4.24 使用计算命令制作图像合成艺术效果 [原创Ps教程]

    原文:http://coolketang.com/staticPhotoshop/5a98d43d9f54544201615c68.html 1. 本节课程将为您演示,如何使用[计算]命令,将两张示例 ...

  7. 【教程】图像合成,秒换模特背景图

    图像合成,即把一张图片人物模特取出插到另一张背景图,实现重新合成,也就是常说的P图.图像合成的难点,是否能一键取出人物模特,以及一个得兴应手的合成工具. 主要用途:广告.新媒体.电商. 首先,进入&q ...

  8. java 图像合成加相框_合成走进相框人物照片效果的PS教程

    今天和大家分享一下PS的合成技术,适合新手练习,大家可以学习,喜欢的朋友可以参考. 先看看效果图 1. 打开图片相框,按快捷键"Ctrl+J"复制图层 2. 单击"钢笔工 ...

  9. DeepDream图像生成教程

    1.导入相关包: import tensorflow as tf import numpy as np import IPython.display as display import PIL.Ima ...

最新文章

  1. StructureMap 代码分析之Widget 之Registry 分析 (1)
  2. c8051单片机注意事项:
  3. 多个sheet拆分成多个文件_Pandas拆分DataFrame到多个文件中
  4. AWS自动化合规slide
  5. V-rep对UR3机械臂仿真路径规划
  6. 软考-信息系统项目管理师-项目人力资源管理
  7. 请求数据分析 xpath语法 与lxml库
  8. Pixhawk代码分析-姿态解算篇C
  9. stm32f4xx 的EXTI使用的一般步骤
  10. 提升领导力 六商是基础
  11. 流控制、FlowControl
  12. java.io.file()_JAVA基础知识之IO-File类
  13. 内网中入侵linux系统,MSSQL 入侵提权之内网渗透案例分析
  14. 分享 2 个“捷径”,帮你 6 个月达到阿里 P7 水平
  15. 书籍推荐:《Secrets of the Oracle Database》
  16. 爱立信实习生面试小结
  17. 删除word文档中的空白页
  18. matlab画一条平滑曲线,Matlab画平滑曲线的两种方法( 拟合或插值后再用plot即可)...
  19. 【转】你真的理解Python中MRO算法吗?
  20. html如何隐藏input,html如何让input隐藏

热门文章

  1. 台式电脑计算机为什么没有EF盘,打开电脑,D、E、F盘不见了,怎么处理?
  2. 从Windows过渡到Mac需要注意的那些事儿!
  3. PyQt里QTdesigner的设置与UI文件转Python的方法
  4. 编号(长度)动态规划
  5. 拼多多非标品类目怎么布局?拼多多标品类目怎么布局?
  6. 2021-11-24 WinFrom面试题 如何设置MenuStrip控件中菜单项的快捷键?
  7. 想开家水果店是加盟好还是自营好,水果店自己开还是加盟
  8. 优秀的Linux文本编辑器
  9. 想要成为高级网络工程师,只需要具备这几点
  10. 数据管理、数据治理、数据资源等概念的定义