博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
『TensorFlow』生成式网络中的图片预处理
阅读量:7104 次
发布时间:2019-06-28

本文共 1168 字,大约阅读时间需要 3 分钟。

简介

这里的生成式网络是广义的生成式,不仅仅指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~1附近
  2. 输出图像值放大到0~255

gan网络中

我们采用方式为:原像素数据除以127.5减去1的操作,使得输出值保持在-1~1之间,可以配合sigmoid激活函数进行学习

实际测试一下,我们将这里的预处理(TFR_process.py)做一下调整,使得值不再被压缩,

'''图像预处理'''# image_decode = tf.cast(image_decode, tf.float32)/127.5-1image_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。

 

转载地址:http://xbchl.baihongyu.com/

你可能感兴趣的文章
MySQL数据库的主从复制简单学习使用
查看>>
kprobe原理与实现笔记
查看>>
sql语句优化
查看>>
Topological Sorting
查看>>
神经网络
查看>>
WINDOWS之入侵痕迹清理总结
查看>>
把一个project相关的jar放到project的lib文件夹中
查看>>
Sublime Text2 Jsformat自定义使用之代码折叠方式修改
查看>>
OpenMP 中的线程任务调度
查看>>
用Qt写软件系列四:定制个性化系统托盘菜单
查看>>
Asp.net 4.0,首次请求目录下的文件时响应很慢
查看>>
hdu-------(1848)Fibonacci again and again(sg函数版的尼姆博弈)
查看>>
GridView编辑删除操作
查看>>
iOS程序的启动图片图标规范
查看>>
动画 -- 按钮 -- 左右晃动
查看>>
mysql+ssh整合样例,附源代码下载
查看>>
WWF3XOML方式创建和启动工作流 <第十篇>
查看>>
IE6 — 你若安好,便是晴天霹雳 [ 乱弹 ]
查看>>
组合数学 - 母函数的运用 --- 模板题
查看>>
检测MYSQL不同步发邮件通知的脚本
查看>>