本文介绍如何使用 TensorFlow 完成图像数据的预处理,以及如何使用 tensorboard 工具将图像数据进行可视化。在使用 TensorFlow 实现图像识别
import os
import tensorflow as tf
reader = tf.WholeFileReader()
key, image_raw_data = reader.read(tf.train.string_input_producer(['0002.jpg'])) #0002.jpg为原始图像数据
image = tf.image.decode_jpeg(image_raw_data)
image = tf.expand_dims(image,0)
image_summary = tf.summary.image('image origin', image)
resized_image = tf.image.resize_images(image, [256, 256], method=tf.image.ResizeMethod.BILINEAR)
#ResizeMethod.BILINEAR :双线性插值
#ResizeMethod.NEAREST_NEIGHBOR : 最近邻插值
#ResizeMethod.BICUBIC : 双三次插值
#ResizeMethod.AREA :面积插值
cropped_image = tf.image.crop_to_bounding_box(image, 20, 20, 256, 256) #剪切
flipped_image = tf.image.flip_left_right(image) #水平翻转
flipped_image = tf.image.flip_up_down(image) #垂直翻转
rotated_image = tf.image.rot90(image, k=1) #旋转
rot_cnt= tf.random_uniform([],minval=1,maxval=3,dtype=tf.int32)
img = tf.image.rot90(image=image,k=rot_cnt) #随机旋转
img = tf.image.random_brightness(image=img,max_delta=self.brightness*255.) # random brightness
img = tf.clip_by_value(img,0.,255.)
img = tf.image.random_contrast(image=img,lower=1-self.contrast,upper=1+self.contrast) # random contrast
img = tf.clip_by_value(img,0.,255.)
grayed_image = tf.image.rgb_to_grayscale(image) #rgb颜色空间转换灰度空间
img_resize_summary = tf.summary.image('image resized', resized_image)
cropped_image_summary = tf.summary.image('image cropped', cropped_image)
flipped_image_summary = tf.summary.image('image flipped', flipped_image)
rotated_image_summary = tf.summary.image('image rotated', rotated_image)
grayed_image_summary = tf.summary.image('image grayed', grayed_image)
merged = tf.summary.merge_all()
init_op = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init_op)
cord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=cord)
img = image.eval()
print(img.shape)
cord.request_stop()
cord.join(threads)
summary_writer = tf.summary.FileWriter('tmp', sess.graph)
summary_all = sess.run(merged)
summary_writer.add_summary(summary_all, 0)
summary_writer.close()
参考: