『TensorFlow』生成式网络中的图片预处理
简介
这里的生成式网络是广义的生成式,不仅仅指gan网络,还有风格迁移中的类自编码器网络,以及语义分割中的类自编码器网络,因为遇到次数比较多,所以简单的记录一下。
背景
1、像素和数字
图像处理目标一般就是RGB三色通道,原始图像解码后是0~255,这个矩阵传给matplotlib就可以直接绘图了,与此同0~1的图像matplotlib也是可以接受的,关于这点,我们来看看文档是怎么说的,
Elements of RGB and RGBA arrays represent pixels of an MxN image.
All values should be in the range [0 .. 1] for floats or
[0 .. 255] for integers. Out-of-range values will be clipped to
these bounds.
即使0~1也能够使用,我们常用的还是0~255的数据。
2、生成式网络输出的限制
生成式网络不同于分类网络,其输出的目标是图像,对照上面也就是0~255范围(这个更常用)的矩阵,这就意味着网络的输出有所限制的,且是不同于分类网络全部限制于0~1或者-1~1的,正如分类网络的sigmoid或者softmax一样,我们会在最后一个卷积/转置卷积层后采取一些操作保证输出满足图像的要求。
实际思路
输入图像为了保证可以被用于loss,需要和输出图像的值域相同,所以有两个思路:
- 输入图像值压缩到-1~1附近
- 输出图像值放大到0~255
gan网络中
我们采用方式为:原像素数据除以127.5减去1的操作,使得输出值保持在-1~1之间,可以配合sigmoid激活函数进行学习
实际测试一下,我们将这里的预处理(TFR_process.py)做一下调整,使得值不再被压缩,
'''图像预处理'''
# image_decode = tf.cast(image_decode, tf.float32)/127.5-1
image_decode = tf.cast(image_decode, tf.float32)
相应的将生成网络(DCGAN_function.py)作出调整,
h4 = deconv2d(h3, [batch_size, s_h, s_w, c_dim], scope='g_h4')
return h4 # tf.nn.tanh(h4)
可以看到结果依旧可以训练出来,效果如下。

快速风格迁移中
我们采用0~255作为输入,生成数据仍为0~255(主要分布),然后将输出数据进一步操作,送入vgg进行loss计算。
此时的生成式网络最后一层可以不加激活,输出会自行收敛在目标附近,也可以tanh激活(-1~1)后加1再乘127.5。
『TensorFlow』生成式网络中的图片预处理的更多相关文章
- 『TensorFlow』专题汇总
TensorFlow:官方文档 TensorFlow:项目地址 本篇列出文章对于全零新手不太合适,可以尝试TensorFlow入门系列博客,搭配其他资料进行学习. Keras使用tf.Session训 ...
- 『TensorFlow』TFR数据预处理探究以及框架搭建
一.TFRecord文件书写效率对比(单线程和多线程对比) 1.准备工作 # Author : Hellcat # Time : 18-1-15 ''' import os os.environ[&q ...
- 『TensorFlow』DCGAN生成动漫人物头像_下
『TensorFlow』以GAN为例的神经网络类范式 『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 『TensorFlow』通过代码理解gan网络_中 一.计算 ...
- 『TensorFlow』滑动平均
滑动平均会为目标变量维护一个影子变量,影子变量不影响原变量的更新维护,但是在测试或者实际预测过程中(非训练时),使用影子变量代替原变量. 1.滑动平均求解对象初始化 ema = tf.train.Ex ...
- 『TensorFlow』读书笔记_降噪自编码器
『TensorFlow』降噪自编码器设计 之前学习过的代码,又敲了一遍,新的收获也还是有的,因为这次注释写的比较详尽,所以再次记录一下,具体的相关知识查阅之前写的文章即可(见上面链接). # Aut ...
- 『TensorFlow』梯度优化相关
tf.trainable_variables可以得到整个模型中所有trainable=True的Variable,也是自由处理梯度的基础 基础梯度操作方法: tf.gradients 用来计算导数.该 ...
- 『TensorFlow』模型保存和载入方法汇总
『TensorFlow』第七弹_保存&载入会话_霸王回马 一.TensorFlow常规模型加载方法 保存模型 tf.train.Saver()类,.save(sess, ckpt文件目录)方法 ...
- 『TensorFlow』第七弹_保存&载入会话_霸王回马
首更: 由于TensorFlow的奇怪形式,所以载入保存的是sess,把会话中当前激活的变量保存下来,所以必须保证(其他网络也要求这个)保存网络和载入网络的结构一致,且变量名称必须一致,这是caffe ...
- 『TensorFlow』SSD源码学习_其五:TFR数据读取&数据预处理
Fork版本项目地址:SSD 一.TFR数据读取 创建slim.dataset.Dataset对象 在train_ssd_network.py获取数据操作如下,首先需要slim.dataset.Dat ...
随机推荐
- Paper Reading: In Defense of the Triplet Loss for Person Re-Identification
In Defense of the Triplet Loss for Person Re-Identification 2017-07-02 14:04:20 This blog comes ...
- (转载)WinCC 卸载后 Simatic Shell 的删除
现象:WinCC卸载后,在计算机(我的电脑)中仍有Simatic Shell文件夹,双击无反应 解决:1.按Win+X,运行“regedit”,打开注册表2.在注册表中,选中HKEY_LOCAL_MA ...
- 关于Django的Ajax操作
一 什么是Ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服 ...
- 2、Python程序控制结构(0530)
条件测试: 1.if 条件测试表达式 python的比较操作 1.所有的python对象都支持比较操作 可用于测试相等性.相对大小等: 如果是符合对象,python会检查其所有部分,包括自动遍历各级嵌 ...
- SpringBoot学习(二)
spring-boot-starter-parent Maven的用户可以通过继承spring-boot-starter-parent项目来获得一些合理的默认配置.这个parent提供了以下特性: 默 ...
- HashMap分析
原文链接:http://www.cnblogs.com/chengxiao/p/6059914.html 一.什么是哈希表 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 ...
- Pandas 基础(1) - 初识及安装 yupyter
Hello, 大家好, 昨天说了我会再更新一个关于 Pandas 基础知识的教程, 这里就是啦......Pandas 被广泛应用于数据分析领域, 是一个很好的分析工具, 也是我们后面学习 machi ...
- onpause 与 onresume
- python的json模块的dumps,loads,dump,load方法介绍
dumps和loads方法都在内存中转换, dump和load的方法会多一个步骤,dump是把序列化后的字符串写到一个文件中,而load是从一个文件中读取字符串 将列表转为字符串 >>&g ...
- np.split()和np.array_split()
来自:爱抠脚的coder np.split(): 该函数的参数要么按照数字划分(int),要么是按列表list划分:如果仅是输入一个int类型的数字,你的数组必须是均等的分割,否则会报错. np.ar ...