深度学习中的图像数据预处理——图像去均值(image mean or pixel mean)

 

 

首先引用下网上的解释:网络

For a grayscale image, every pixel in the mean image is computed from the average of all corresponding pixels (i.e. same coordinates) across all images of your dataset. "Mean image" subtraction means that this mean image is subtracted from any input image you feed to the neural network. The intention is to have inputs that are (on average) centred around zero.app

The mean pixel is simply the average of all pixels in the mean image. "Mean pixel" subtraction means that you subtract the *same* mean pixel value from all pixels of the input to the neural network.学习

Now the same applies to RGB images, except that every channel is processed independently (this means we don't compute averages across channels, instead every channel independently goes through the same transformations as for a grayscale image).ui

Intuitively, it feels like mean image subtraction should perform better (that is what I noticed on the auto-encoder example in DIGITS) although I don't know of research papers that back this up.this

对于灰度图像,平均图像中的每一个像素都是由数据集中全部图像间的相应像素(即相同坐标)的平均值计算得出的。“平均图像”减法意味着从输入神经网络的任何输入图像中减去该平均图像。目的是使输入(平均)以零为中心。编码

平均像素只是平均图像中全部像素的平均值。“平均像素”减法意味着从输入到神经网络的全部像素中减去“相同的"平均像素值。spa

这一样适用于RGB图像,除了每一个通道都是独立处理的(这意味着咱们不计算通道之间的平均值,而是每一个通道独立地进行与灰度图像相同的转换)。code

从直觉上讲,感受像平均图像减法应该表现的更好(这是我在DIGITS中的自动编码器示例中注意到的),尽管我不知道有支持这种状况的研究论文。orm

image mean:blog

举例来讲,输入一张RGB图像,好比N*N*3,对其求image mean,结果还是N*N*3,即对训练集中全部图像在同一空间位置上(也是相同通道,不跨通道)的像素求均值。

pixel mean:

而pixel mean,是把全部图像的R通道的像素求均值,G,B通道同样,不考虑空间位置的关系。这样求得的结果是R_mean, G_mean, B_mean,至关于把image mean再次求平均。

减去均值的缘由:

(1)从PCA的角度

减去均值是为了数据特征标准化,特征标准化指的是使数据的每个维度具备零均值和单位方差。这是归一化中最经常使用的方法。在实际计算中,特征标准化的具体操做是:首先计算每个维度上数据的均值(使用全体数据来计算),而后在每个维度上都减去该均值。最后在数据的每个维度上除以该维度上数据的标准差。

对于天然图像来讲,更多的是作图像零均值化处理,并不须要估计样本的方差。这是由于在天然图像上进行训练时,对每个像素单独估计均值和方差的意义不大,由于(理论上)图像上任一部分的统计性质都应该和其余部分相同,图像的这种性质被称做平稳性(stationarity)。

对于图像,这种归一化能够移除图像的平均亮度值(intensity),不少状况下咱们对图像的照度并不感兴趣,而更多地关注其内容,好比在物体识别任务中,图像的总体明亮程度并不会影响图像中存在的是什么物体。这时对每一个数据点移除像素的均值是有意义的。

(2)从反向传播计算的角度

在深度学习中,使用gradient descent来训练模型的话,基本都要在数据预处理时进行数据归一化。固然这是有缘由的。

根据公式

                                                                         

 

若是输入层 χ 很大,在反向传播时传递到输入层的梯度就会变得很大。梯度大,学习率就得很是小,不然会越过最优。在这种状况下,学习率的选择须要参考输入层的数值大小,而直接将数据归一化操做,能够很方便的选择学习率。并且受 χ 和 的影响,各个梯度的数量级不相同,所以,它们须要的学习率数量级也就不相同,对于w1 适合的学习率,可能相对于w来讲过小,若是仍使用适合w的学习率,会致使在w2的方向上降低地很慢,会消耗很是多的时间,而使用适合W2的学习率,对于w1来讲又太大,找不到适合w1的解。

相关文章
相关标签/搜索