使用深度学习在进行图像分类或者对象检测时候,首先需要对图像做数据预处理,最常见的对图像预处理方法有两种,正常白化处理又叫图像标准化处理,另外一种方法叫做归一化处理,下面就详细的说一下这两种处理方法。
一:图像标准化处理
标准化处理的公式如下:
tensorflow中对图像标准化预处理的API函数如下:
- tf.image.per_image_standardization(image)
- - image 参数表示一个三维的张量(tensor) 分别对应图像高、宽、通道数目(height, width, channels)
函数返回处理以后的图像,大小与通道数目与原图像保持一致。使用opencv+tensorflow对图像进行标准化处理的代码演示如下:
- import tensorflow as tf
- import cv2 as cv
- image = cv.imread("D:/javaopencv/dahlia_4.jpg")
- cv.imshow("input", image)
- std_image = tf.image.per_image_standardization(image)
- with tf.Session() as sess:
- result = sess.run(std_image)
- print(result)
- cv.imshow("result", result)
- cv.waitKey(0)
- cv.destroyAllWindows()
运行效果
解释
图像标准化是将数据通过去均值实现中心化的处理,根据凸优化理论与数据概率分布相关知识,数据中心化符合数据分布规律,更容易取得训练之后的泛化效果, 数据标准化是数据预处理的常见方法之一