Tensorflow入门六-图像处理及Python实现(DeepDream,1×1卷积核,捷径连接)
上一篇:Tensorflow入门五-卷积神经网络(断点续训实现,基本概念、tf卷积函数、cifar数据集百度云资源及tf实现)https://blog.****.net/qq_36187544/article/details/89736184
下一篇:Tensorflow入门七-迁移学习实现VGG16微调猫狗分类(迁移学习源1000分类权重文件百度云可直接再学习,线程)https://blog.****.net/qq_36187544/article/details/89885247
目录
DeepDream
了解内容:DeepDream是Google 开源了用来分类和整理图像的 AI 程序 。可用于生成新图像
图片加入噪声生成新图像,现阶段用不上。。。但是这肯定是很有用的功能,可以生成更多更合适的新图片,增加训练集!(还有图像的拉普拉斯金字塔分解,增加低频成分,减少高频成分让生成的图像更加柔和等。这些都是图像生成领域的内容,有个了解)
图像处理及代码实现
图像要利用tensorflow进行计算时要进行解码转为tensor。图像翻转也是很重要的处理技术,能够增加无成本增加训练集,让神经网络学习到更多知识。此外,还有图像缩放,剪裁、填充、改变对比度、白化处理等
'''
图像处理:
解码
图像缩放
剪裁和填充、随机剪裁、翻转、改变对比度,白化处理
翻转很重要!!!
'''
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
'''解码'''
#读取图像原始数据
image_raw_data = tf.gfile.FastGFile('picture/001.jpg','rb').read()
with tf.Session() as sess:
#解码
img_data = tf.image.decode_jpeg(image_raw_data)
#打印张量
#print(img_data.eval())
#可视化
plt.imshow(img_data.eval())
plt.show()
'''图像缩放'''
with tf.Session() as sess:
# method=0:双线性插值
# method=1:最近邻插值
# method=2:双立方插值
# method=3:像素区域插值
resized1 = tf.image.resize_images(img_data,[256,256],method=0)
#图片数据为float32,转格式
resized1 = np.asarray(resized1.eval(),dtype="uint8")
plt.imshow(resized1)
plt.show()
'''图像裁剪或填充'''
with tf.Session() as sess:
img_data = tf.image.decode_jpeg(image_raw_data)
croped = tf.image.resize_image_with_crop_or_pad(img_data,50,50)
#本图片大小为300×300,如果写成如下代码即为填充:
croped = tf.image.resize_image_with_crop_or_pad(img_data,1000,1000)
plt.imshow(resized1)
plt.show()
'''
还有随机剪裁,tf.image.random_crop
翻转的意义:翻转图像加入训练库可让神经网络学习到更多知识
水平翻转:tf.image.filp_left_right(img_data)
上下翻转:tf.image.filp_up_down(img_data)
改变对比度:tf.image.random_contrast
白化处理,转为0均值和单位方差:tf.image.per_image.standardization()
'''
1×1卷积核
1×1卷积核可以起到一个跨通道聚合的作用,所以进一步可以起到降维(或者升维)的作用,起到减少参数的目的。 甚至可以利用1×1卷积核实现卷积层代替全连接层
捷径连接
在神经网络中不采用传统结构,采用捷径连接,即跳过某一层直接进入下一层的方式,可以防止过拟合,让迭代速度更快