均值图像减法如何工作?

How does mean image subtraction work?

作为序言,我是 ML/CV 领域的新手,目前正在使用 Caffe 训练自定义转换网络。

我对均值图像减法感兴趣,可以在我的训练图像上实现基本数据标准化。但是,我对均值减法的工作原理以及它到底有什么好处感到困惑。

我知道可以从训练集计算出 "mean image",然后从训练集、验证集和测试集中减去该集,使网络对不同的背景和光照条件不那么敏感。

这是否涉及计算每张图像中所有像素的平均值,然后取平均值?或者,每个像素坐标的值是否是集合中所有图像的平均值(即所有图像在位置 (1,1) 处像素的平均值)?这可能需要所有图像的大小相同...

此外,对于彩色图像(3 通道),每个通道的值是否单独平均?

任何清晰度将不胜感激。

平均图像是这样一幅图像,其中 i,j,c 像素是所有图像中 i,j,c 像素的平均值。所以你分别为每个位置和每个颜色通道取一个平均值。它当然要求所有图像具有相同的大小,否则不定义。此外,这并不是真正的对不同条件不那么敏感——这与它无关,它实际上只是将初始激活保持在一个合理的范围内,没有别的。

在深度学习中,对于如何减去均值图像,其实也有不同的做法。

减去平均图像

第一种方法是按照@lejlot 的描述减去均值图像。但是,如果您的数据集图像大小不同,则会出现问题。在使用此方法之前,您需要确保所有数据集图像的大小相同(例如,调整原始图像的大小并从原始图像裁剪相同大小的补丁)。它在原始 ResNet 论文中使用,请参见 reference here

减去每个通道的平均值

第二种方式是原图减去per-channel mean,比较流行。这样,您无需调整或裁剪原始图像。您可以从训练集中计算每个通道的平均值。这在深度学习中被广泛使用,例如 Caffe: and here. Keras: here. PyTorch: here。 (PyTorch 还将每个通道的值除以标准差。)