TensorFlow深度学习实战---图像数据处理

图像的亮度、对比度等属性对图像的影响非常大,这些因素都会影响最后的识别结构。当然,复杂的预处理过程可能会导致训练效率的下降(利用TensorFlow中多线程处理输入数据的解决方案)。

同一不同的原始数据格式-----TFRecord格式

TensorFlow图像处理函数:图像编码处理 img_data=tf.image.decode_jpeg(image_raw_data) (RGB色彩模式的图像看做是一个三维矩阵,矩阵的每个数表示了图像上不同位置,不同颜色的亮度,然而图像在存储时并不是直接记录这些矩阵中的数字,而是记录压缩编码之后的结果,所以要将一张图像还原成一个三维矩阵,需要解码的过程)

图像大小调整resized=tf.image.resize_images(img_data,[300,300],method=0)(0:双线性插值法 1:最近邻居法 2:双三次插值法 3:面积插值法)(图像的大小时不固定的,但神经网络输入节点的个数是固定的,因此将图像的像素作为输入提供给神经网络之前,需要将图像的大小统一)

图像裁剪和填充: tf.image.resize_image_with_crop_or_pad(img_data,1000,1000)

通过比例调整图像大小:tf.image.central_crop(img_data,05), 此外,TensorFlow提供tf.image.crop_to_bounding_box与tf.image.pad_to_bounding_box来裁剪或者填充特定区域的图像

图像翻转:图像上下翻转tf.image.flip_up_down(img_data) , 图像左右翻转tf.image.flip_left_down(img_data) 图像沿对角线翻转 tf.image.transpose_image(img_data) (通过随机翻转训练图像的方式可以在零成本的情况下很大程度缓解训练出来的模型不能识别因物体角度,位置不同,而识别不出的问题)

tf.image.random_flip_up_down(img_data) 以一定概率上下翻转图像

图像色彩调整:(随机调整训练图像的亮度,对比度,饱和度和色相,从而使得训练得到的模型尽可能小地收到无关因素的影响)(tf.image.adjust_brightness(img_data,-0.5)

tf.image.random_brightness(image,max_delta 在[-max_delta,max_delta]范围随机调整图像的亮度

tf.image.random_contrast(image,lower,upper))

调整色相:tf.image.adjust_hue(img_data,0.1)

调整饱和度:tf.image.adjust_suturation(img_data,-5)

完成图像标准化:将图像上的亮度均值变为0,方差为1(tf.image.per_image_whitening(img_data)

添加标注框: