从图像中减去均值

sak*_*agi 10 python machine-learning image-processing neural-network

我正在与Theano实施CNN.在论文中,我必须在训练CNN之前进行此图像预处理

We extracted RGB patches of 61x61 dimensions associated with each poselet activation, subtracted the mean and used this data to train the convnet model shown in Table 1
Run Code Online (Sandbox Code Playgroud)

你能告诉我"减去平均数"是什么意思吗?告诉我这些步骤是否正确(这是我所理解的)1)计算整个图像的红色通道,绿色通道和蓝色通道的平均值2)对于每个像素,从红色值中减去红色通道的平均值,从绿色值绿色通道的平均值和蓝色通道的平均值3)具有负值是否正确或者我是否使用了abs?

谢谢大家!!

lej*_*lot 6

你应该仔细阅读论文,但最可能的是它们意味着补丁的平均值,所以你有N矩阵61x61像素,相当于长度的矢量61^2(如果有三个通道那么3*61^2).他们做了什么 - 他们简单地计算每个维度的平均值,因此他们根据每个维度计算这些N向量的平均值3*61^2.结果,他们获得了长度的平均向量3*61^2(或者如果您愿意,则为平均矩阵/平均值补丁),并且它们从所有这些N补丁中减去它.得到的补丁将有负值,完全没问题,你不应该取abs值,神经网络更喜欢这种数据.


Zak*_*kum 6

我假设文中提到的平均值是训练集中使用的所有图像的平均值(为每个通道单独计算).

几个迹象:

这当然只是间接证据,因为我无法解释你为什么会这样.事实上,我在试图弄清楚这个问题时偶然发现了这个问题.

//编辑:

与此同时,我找到了一个确认我声明的消息来源(由我添加的突出显示):

有三种常见形式的数据预处理数据矩阵X [...]

平均减法是最常见的预处理形式.它涉及减去数据中每个特征的均值,并具有几何解释,即沿着每个维度围绕原点围绕数据云.在numpy中,此操作将实现为:X - = np.mean(X,axis = 0).对于图像,为方便起见,通常从所有像素中减去单个值(例如X - = np.mean(X)),或者在三个颜色通道中分别执行此操作.

我们可以看到,整个数据用于计算均值.