均值图像减法如何工作?
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 还将每个通道的值除以标准差。)
作为序言,我是 ML/CV 领域的新手,目前正在使用 Caffe 训练自定义转换网络。
我对均值图像减法感兴趣,可以在我的训练图像上实现基本数据标准化。但是,我对均值减法的工作原理以及它到底有什么好处感到困惑。
我知道可以从训练集计算出 "mean image",然后从训练集、验证集和测试集中减去该集,使网络对不同的背景和光照条件不那么敏感。
这是否涉及计算每张图像中所有像素的平均值,然后取平均值?或者,每个像素坐标的值是否是集合中所有图像的平均值(即所有图像在位置 (1,1) 处像素的平均值)?这可能需要所有图像的大小相同...
此外,对于彩色图像(3 通道),每个通道的值是否单独平均?
任何清晰度将不胜感激。
平均图像是这样一幅图像,其中 i,j,c 像素是所有图像中 i,j,c 像素的平均值。所以你分别为每个位置和每个颜色通道取一个平均值。它当然要求所有图像具有相同的大小,否则不定义。此外,这并不是真正的对不同条件不那么敏感——这与它无关,它实际上只是将初始激活保持在一个合理的范围内,没有别的。
在深度学习中,对于如何减去均值图像,其实也有不同的做法。
减去平均图像
第一种方法是按照@lejlot 的描述减去均值图像。但是,如果您的数据集图像大小不同,则会出现问题。在使用此方法之前,您需要确保所有数据集图像的大小相同(例如,调整原始图像的大小并从原始图像裁剪相同大小的补丁)。它在原始 ResNet 论文中使用,请参见 reference here。
减去每个通道的平均值
第二种方式是原图减去per-channel mean,比较流行。这样,您无需调整或裁剪原始图像。您可以从训练集中计算每个通道的平均值。这在深度学习中被广泛使用,例如 Caffe: