TensorFlow学习笔记(一)图像数据处理

本节内容提取自《TensorFlow实战Google深度学习框架》,为自己学习所感。

import tensorflow as tf#导入TensorFlow框架

1、来自实际问题的数据往往有很多格式和属性,于是TensorFlow采用名为TFRecord的数据存储格式来统一存储数据。

1.1、TFRecord文件中的数据通过tf.train.Example Protocol Buffer的格式存储的,具体代码请参考该书P170。

2、TensorFlow中的图像处理算法

2.1、图像编码处理算法

(1)将图像使用jpeg的格式解码从而得到图像对应的三维矩阵。解码后结果为一个张量。

img_data=tf.image.decode_jpeg(image_raw_data)
    当然,为了追求效率,可以使用Python中的PIL库进行图片的解码工作,其用法在网上都有教程。

(2)要将得到的张量转成TensorFlow中的Tensor,以便传入TensorFlow的计算图。(如果不理解计算图,后面会上传)

img_data=tf.image.convert_image_dtype(img_data,dtype=tf.float32)

(3)神经网络的结点个数是固定的,所以要进行图像大小调整,下面给出四个样例。

resized=tf.image.resize_image(img_data,[300,300],method=0)

    当method为0时,采用双线性插值算法(详细讲解参考http://en.wikipedia.org/wiki/Bilinear_interpolation)。

resized=tf.image.resize_image(img_data,[300,300],method=1)     
当method为1时,采用最近邻居算法(详细参考http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation)。
resized=tf.image.resize_image(img_data,[300,300],method=2) 
    当method为2时,采用双三次插值算法(详细参考 http://en.wikipedia.org/wiki/Bicubic_interpolation)。

resized=tf.image.resize_image(img_data,[300,300],method=3) 

    当method为3时,采用面积插值算法。

    通过以上四种方法调整,得到一个大小300*300的图片。 

(4)TensorFlow还提供了API对图像进行裁剪和填充,以下给出示例。

croped=tf.image.resize_image_with_crop_or_pad(img_data,1000,1000) 

    以上代码表示如果目标图像大于1000*1000,则自动 截取图像居中的部分。

padded=tf.image.resize_image_with_crop_or_pad(img_data,3000,3000) 

     以上代码表示如果目标图像小于3000*3000,则自动在图像周围全0填充(0在图片矩阵中表示黑色)。


2.2、图像翻转算法

(1)以下代码实现图像的上下翻转。

flipped=tf.image.flip_up_down(img_data)

(2)以下代码实现图像的左右翻转。

flipped=tf.image.flip_left_right(img_data)

(3)以下代码实现图像沿对角线翻转。

flipped=tf.image.transpose_image(img_data)

(4)以下代码实现以一定概率上下翻转图像。

flipped=tf.image.random_flip_up_down(img_data)

(5)以下代码实现以一定概率左右翻转图像。

flipped=tf.image.random_flip_left_right(img_data)


2.3、图像色彩调整算法

(1)以下代码实现调整图像的亮度。

adjusted=tf.image.adjust_brightness(img_data,-0.5)#-0.5为调整的亮度参数

(2)以下代码实现在[-max_delta,max_delta]的范围随机调整亮度。

adjusted=tf.image.random_brightness(img_data,max_delta)

(3)以下代码实现调整图像对比度。

adjusted=tf.image.adjust_contrast(img_data,-5)#-5为对比度参数

(4)以下代码实现在[lower,upper]的范围随机调整图像对比度。

adjusted=tf.image.random_contrast(img_data,lower,upper)

(5)以下代码实现调整图像色相。

adjusted=tf.image.adjust_hue(img_data,0.1)#0.1为色相参数

(6)以下代码实现在[-max_delta,max_delta]的范围随机调整图像色相。

adjusted=tf.image.random_hue(img_data,max_delta)#max_delta的取值在[0,0.5]之间

(7)以下代码实现调整图像饱和度。

adjusted=tf.image.adjust_saturation(img_data,-5)#-5为饱和度参数

(8)以下代码实现在[lower,upper]的范围随机调整饱和度。

adjusted=tf.image.random_saturation(img_data,lower,upper)

(9)以下代码实现图像标准化。(标准化就是将图像上的亮度均值变为0,方差变为1)

adjusted=tf.image.per_image_whitening(img_data)















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值