图像数据的标准化与归一化

使用深度学习进行图像分类或者图像检测时,首先需要对图像进行数据预处理,常见的对图像的预处理有两种办法,一种是正常白化处理又叫图像标准化处理,另一种是归一化处理。
一、图像的标准化处理
图像的标准化处理:
tf.image.per_image_standardization()
在这里插入图片描述
纠正:上面的σ表示的是所有像素值的标准差。
目的:Linearly scales each image in image to have mean 0 and variance 1。即将图像中的像素值调整成均值为0,方差为1的分布。
Returns:
A Tensor with same shape and dtype as image
解释:图像标准化是将数据通过去均值,实现中心化,根据凸优化理论和数据概率分布的相关知识,数据中心化符合数据分布规律,更容易取得训练之后的泛化效果,数据标准化是数据常见的处理方法之一。
代码示例:

import tensorflow as tf
import matplotlib.image as img
import matplotlib.pyplot as plt

sess=tf.InteractiveSession()
image=img.imread("E:/data/test_img/史努比.jpg")
shape=tf.shape(image).eval()       # 读取图片的大小
h,w=shape[0],shape[1]
standardization_img=tf.image.per_image_standardization(image)      # 图片标准化

fig=plt.figure()  # 设置3个画布
fig1=plt.figure()
fig2=plt.figure()

ax=fig.add_subplot(111)
ax.set_title("original image")
ax.imshow(image)

ax2=fig2.add_subplot(111)
ax2.set_title("standardization image")
ax2.imshow(standardization_img.eval())

ax1=fig1.add_subplot(311)
ax1.set_title("original hist")
ax1.hist(sess.run(tf.reshape(image,[h*w,-1])))    # matplotlib.pyplot.figure.hist函数用来画直方图,数据值-出现的频次

ax1=fig1.add_subplot(313)
ax1.set_title("standardization hist")
ax1.hist(sess.run(tf.reshape(standardization_img,[h*w,-1])))

plt.ion()
plt.show()
plt.pause(0)

运行结果:
在这里插入图片描述
在这里插入图片描述
从上面的直方图可以看到图像中的像素值经过标准化之后的分布没有改变,变的只是其值大小。

二、图像的归一化处理
图像归一化最常见的就是最大最小值归一化处理,计算公式如图:
在这里插入图片描述
使得像素值落在【0,1】区间上。
解释:原图与归一化之后的运行结果完全一致,说明归一化不会改变图像本身的信息存储,但是通过打印出来的像素值可以发现,取值范围从0~255已经转化为0~1之间了,这个对于后续的神经网络或者卷积神经网络处理有很大的好处,tensorflow官方给出mnist数据集,全部采用了归一化之后的结果作为输入图像数据来演示神经网络与卷积神经网络。
深度学习训练-详解图像数据标准化与归一化处理
数据标准化、归一化normalization

  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值