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. 【设计模式】装饰者模式 ( 概念 | 适用场景 | 优缺点 | 与继承对比 | 定义流程 | 运行机制 | 案例分析 )
  2. Win11系统如何隐藏快速搜索
  3. semantic ui中文文档_Vuetify-广受欢迎的Material风格的开源UI框架
  4. .NET 面向对象基础
  5. js获取当天0点和24点的时间戳
  6. python装b代码_教你装逼了:怎么样发布你的 Python 代码给别人 “pip install”
  7. 最最简单的几个Mac终端命令
  8. tbschedule源码学习
  9. python绘图——图片大小设置figsize
  10. ubuntu/window安装dukto
  11. 解决【C++】其他类中友元函数不可访问私有数据--顺序问题
  12. 惠普关闭 secure boot
  13. 华为路由器接口如何区分_华为路由器接口管理命令有哪些
  14. 手机浏览网页页面缩放
  15. RuntimeError: Attempting to deserialize object on CUDA device 1 but torch.cuda.device_count() is 1.
  16. 色光三原色RGB相加减
  17. 巴贝奇的差分机与分析机
  18. IT男人必学的20大泡妞妙招(请允许我蛋疼的转一下)
  19. html把键显示在中间,ipad平板键盘显示在屏幕中间怎么办?
  20. 用于高精度干涉仪的奇特量子效应

热门文章

  1. 计算机软考报名条件有哪些
  2. 微信小程序|分销等级设置流程
  3. 树莓派基于Linux内核驱动开发详解
  4. CID/clickid最新进展及原理介绍
  5. 《引爆社群》读书笔记
  6. c语言oj石头剪刀布,△【OJ】(二)---J---剪刀石头布
  7. 华为荣耀5X(畅玩版 全网通)USB调试模式如何开启教程(开发者模式 开发者选项打开)
  8. 索尼变卖非核心资产:连视频创意软件也拿去卖钱
  9. 云主机的公有云、私有云、混合云有什么不同?
  10. 元气森林、波士顿咨询、毕马威等 20+ 嘉宾齐聚观远数据2022智能决策峰会