首先说明,我是机器学习/计算机视觉领域的新手,目前正在使用Caffe训练一个自定义的卷积神经网络。
我对均值图像减法很感兴趣,希望通过这种方法对我的训练图像进行基本的数据归一化。然而,我对均值减法的工作原理以及它的具体优势感到困惑。
我知道可以从训练集中计算出一个“均值图像”,然后从训练、验证和测试集中减去这个均值图像,以使网络对不同的背景和光照条件不那么敏感。
这是否涉及计算每张图像中所有像素的均值,并对这些均值进行平均?还是说,是将每个像素坐标的值在所有图像中进行平均(例如,所有图像中位置(1,1)的像素的平均值)?这可能需要所有图像大小相同…
另外,对于彩色图像(3通道),每个通道的值是否单独进行平均?
任何澄清都会被感激的接受。
回答:
在深度学习中,实际上有不同的实践方法来进行均值图像减法。
减去均值图像
第一种方法是像@***描述的那样减去均值图像。但如果你的数据集图像大小不同,就会有问题。在使用这种方法之前,你需要确保所有数据集图像大小相同(例如,调整原始图像大小并从原始图像中裁剪出相同大小的区域)。这种方法在原始ResNet论文中使用,参见此处参考。
减去每通道均值
第二种方法是从原始图像中减去每通道的均值,这种方法更为流行。使用这种方法,你不需要调整或裁剪原始图像。你可以直接从训练集中计算每通道的均值。这种方法在深度学习中被广泛使用,例如,Caffe:此处和此处。Keras:此处。PyTorch:此处。(PyTorch还将每通道的值除以标准差。)