一文读懂图像数据的标准化与归一化 | 您所在的位置:网站首页 › 相机像素映射有什么用途 › 一文读懂图像数据的标准化与归一化 |
深度学习训练-详解图像数据标准化与归一化
使用深度学习在进行图像分类或者对象检测时候,首先需要对图像做数据预处理,最常见的对图像预处理方法有两种,正常白化处理又叫图像标准化处理,另外一种方法叫做归一化处理,下面就详细的说一下这两种处理方法。 一:图像标准化处理 标准化处理的公式如下: 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()运行结果: 二:图像归一化处理 归一化(Normalization):归一化的目标是找到某种映射关系,将原数据映射到[a,b]区间上。一般a,b会取[−1,1],[0,1]这些组合。 一般有两种应用场景: 1、把数变为(0, 1)之间的小数 2、把有量纲的数转化为无量纲的数 图像归一化最常见的就是最大最小值归一化方法,公式如下: 基于OpenCV实现图像最大最小值归一化的代码演示如下: image = cv.imread("D:/javaopencv/dahlia_4.jpg") cv.imshow("input", image) result = np.zeros(image.shape, dtype=np.float32) cv.normalize(image, result, alpha=0, beta=1, norm_type=cv.NORM_MINMAX, dtype=cv.CV_32F) print(result) cv.imshow("norm", np.uint8(result*255.0)) cv.waitKey(0) cv.destroyAllWindows()原图像素值输出 归一化之后像素值: 为什么要标准化和归一化? 提升模型精度:归一化后,不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。 加速模型收敛:标准化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。如下图所示: |
CopyRight 2018-2019 实验室设备网 版权所有 |