我很困惑图像平均减法是否对我的用例有用。
我正在使用道路图像训练SegNet网络,我在训练期间减去平均值。
当我比较平均减法前后的图像时,没有平均减法的图像似乎有更多的特征和详细的像素信息。
我理解平均减法的重要性,因为它减少了不同照明的影响,也有助于训练过程中的梯度计算。但是,这并不意味着我放弃了一些重要的信息。我附上图片供参考。
原始
使用平均减法
观看上面的图片,我假设没有平均减法的图像可以学习更多特征,特别是关于汽车(这里非常重要)。平均减法的图像在汽车周围几乎是黑暗的。
对某些可能解释这一点的来源的解释或链接将不胜感激。谢谢。
答案 0 :(得分:2)
这里有两件事需要考虑:
如果您的图像是无符号整数类型(例如uint8
),并且您在不将图像转换为其他类型的情况下减去均值,则可能会破坏图像信息。例如,如果您的图片包含像素值
204 208 100 75 86
,均值为100.3,减去该均值的uint8
结果为
104 108 0 0 0 -- saturated subtraction
或
104 108 0 231 242 -- C-style subtraction
取决于您是使用饱和减法还是C风格算术。在这两种情况下,图像不再包含与之前相同的信息。
当然,正确的是使用浮点值:
103.7 107.7 -0.3 -25.3 -14.3 -- floating-point subtraction
在这种情况下,数据仍然包含完全相同的信息,只是现在它是零均值。
现在,如何在屏幕上显示这个零均值图像?您可以映射每个值< 0到0,每个值> 255到255,以便有效范围[0,255]之外的值饱和;或者您可以在数据中找到最小值和最大值,将像素值线性映射到有效范围。在第一种情况下,它看起来像你破坏了图像(如在你的例子中),在第二种情况下,它看起来在图像中没有太大的变化。也就是说,没有办法在屏幕上显示图像,仍然可以看到平均减法的效果。