在机器学习领域,图像处理是一个至关重要的环节。图像本质上是由0到255的数值组成的数组,这些数值被计算机用来显示饱和度。那么颜色是如何产生的呢?从根本上讲,颜色是通过不同比例混合红色、绿色和蓝色产生的。当一个图像是彩色图像时,它被数字化存储为红色值、蓝色值和绿色值的数组。计算机“即时混合”这些颜色以产生彩色输出。
因此,当神经网络观察到这一点时,它对每个红色、绿色和蓝色通道进行卷积运算。正如所看到的,这增加了计算的复杂性。与仅对一个数组进行单一卷积运算不同,PyTorch必须对三个不同的数组执行卷积运算。另一方面,灰度图像只在一个数组中存储值(黑色和白色),这意味着上述计算只需要计算一次卷积。
因此,如果灰度图像在计算上更有效,也许一个更好的问题是,何时不应该将其作为机器学习模型的预处理步骤?(*假设图像已经被存储并作为单通道图像输入模型)答案相当直观,但有细微差别:当认为颜色为模型提供有意义的信号,并且颜色在外观上相当相似时,应该谨慎使用灰度图像。
在实践中,这意味着什么?想象一下,正在构建一个Keras深度学习模型来检测和分类国际象棋棋子。在这里,很明显颜色对模型很重要:一个玩家是黑色棋子,另一个是白色棋子。但不需要太担心应用灰度作为预处理步骤。即使在这种情况下颜色很重要,感兴趣的颜色(黑色和白色...)包含强烈的对比度。向模型展示灰度图像仍然可以使其轻松区分黑色和白色玩家。
考虑构建一个TensorFlow模型来帮助自动驾驶汽车进行车道检测。在这里,颜色也很重要:道路中间有黄线,道路边缘有白线。在这种情况下,应该对应用灰度持谨慎态度。因为白色和黄色相对相似(即,对比度低的颜色),应该犹豫是否将图像灰度化。