DeepDream:图像合成教程
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:图像合成教程相关推荐
- photoshop图像合成教程之将人物和风景合成一张图片
photoshop教程中图像合成在图像处理中占有重要地位,本篇ps图像合成教程使用两幅素材:人物和风景,将其合成到一幅图像中. 使用到的PS知识点不复杂,图层蒙版和画笔即可完成. ps图像合成教程 ...
- 上海计算机一级ps教程,计算机等级考试一级Photoshop图像合成教程
计算机等级考试一级Photoshop图像合成教程 引导语;你知道如何用ps进行图像合成吗,以下是百分网小编分享给大家的计算机等级考试一级Photoshop图像合成教程,欢迎阅读学习! [操作步骤] 使 ...
- 据说这是国外最火的55套PS实用教程!
<国外最火的55套PS实用教程> 1.图像合成:创意水墨肖像 这是一个将水墨和人物照片合成的经典案例,教程涉及抠图.笔刷.蒙版.纹理素材使用等基础知识点,小技巧大效果,用腻了App的 滤镜 ...
- TensorFlow 机器学习秘籍第二版:6~8
原文:TensorFlow Machine Learning Cookbook 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑(MTPE ...
- 3.18 使用橡皮擦工具制作图像合成效果 [原创Ps教程]
原文:http://coolketang.com/staticPhotoshop/5a98d383fe88c20038c568fe.html 1. 本节课将为您演示,如何使用[橡皮擦]工具制作图像合成 ...
- 4.24 使用计算命令制作图像合成艺术效果 [原创Ps教程]
原文:http://coolketang.com/staticPhotoshop/5a98d43d9f54544201615c68.html 1. 本节课程将为您演示,如何使用[计算]命令,将两张示例 ...
- 【教程】图像合成,秒换模特背景图
图像合成,即把一张图片人物模特取出插到另一张背景图,实现重新合成,也就是常说的P图.图像合成的难点,是否能一键取出人物模特,以及一个得兴应手的合成工具. 主要用途:广告.新媒体.电商. 首先,进入&q ...
- java 图像合成加相框_合成走进相框人物照片效果的PS教程
今天和大家分享一下PS的合成技术,适合新手练习,大家可以学习,喜欢的朋友可以参考. 先看看效果图 1. 打开图片相框,按快捷键"Ctrl+J"复制图层 2. 单击"钢笔工 ...
- DeepDream图像生成教程
1.导入相关包: import tensorflow as tf import numpy as np import IPython.display as display import PIL.Ima ...
最新文章
- StructureMap 代码分析之Widget 之Registry 分析 (1)
- c8051单片机注意事项:
- 多个sheet拆分成多个文件_Pandas拆分DataFrame到多个文件中
- AWS自动化合规slide
- V-rep对UR3机械臂仿真路径规划
- 软考-信息系统项目管理师-项目人力资源管理
- 请求数据分析 xpath语法 与lxml库
- Pixhawk代码分析-姿态解算篇C
- stm32f4xx 的EXTI使用的一般步骤
- 提升领导力 六商是基础
- 流控制、FlowControl
- java.io.file()_JAVA基础知识之IO-File类
- 内网中入侵linux系统,MSSQL 入侵提权之内网渗透案例分析
- 分享 2 个“捷径”,帮你 6 个月达到阿里 P7 水平
- 书籍推荐:《Secrets of the Oracle Database》
- 爱立信实习生面试小结
- 删除word文档中的空白页
- matlab画一条平滑曲线,Matlab画平滑曲线的两种方法( 拟合或插值后再用plot即可)...
- 【转】你真的理解Python中MRO算法吗?
- html如何隐藏input,html如何让input隐藏