一、背景
图像分类是深度学习中常见的任务,在进行模型的训练时,经常需要对图片进行一些预处理后才能很好的训练模型。这些预处理的作用是什么,有什么区别,本文结合实例和代码,对此做一个综合性的讲解。为了代码实现方便,本文使用的图像是灰度图,至于RGB图像,其实现原理类似,区别仅在于通道数不一致而已。本文采用Lena图像进行说明。
二、中心化
中心化是将每个像素减去图像中所有像素的均值,使得变换后的图像的所有像素的均值变为0,因此有时候也称作0均值中心化,Hindon在ImageNet中获胜的论文中对图像的预处理就使用了中心化。中心化本质上是将所有的像素值在坐标轴上进行了一次平移。下面看一段代码来演示中心化。代码先加载图片,并将图片转为ndarray,打印了中心化之前的部分像素值,中心化后,再次打印了相同位置的部分像素值。
import numpy as np
from numpy import linalg
from PIL import Image
img = Image.open("./lena.jpg")
x = np.array(img, dtype='float32')
print(x[:5,:5])
'''
output:
[[162.