使用Keras API训练卷积神经网络时,我通常在使用彩色PNG图像(输入尺寸为(高度,宽度,4))时使用2D卷积层。然而,现在我想使用灰度PNG图像训练网络,我在考虑最佳的方法是什么?
我想到了三种可能的方法:
- 将图像输入为彩色图像处理。
- 只输入图像的第一个通道,使输入尺寸为(高度,宽度,1)。
- 对图像的第一个通道进行1D卷积,使输入尺寸为(高度,宽度)。
由于我的灰度PNG图像在所有RGBA通道中具有相同的值,我认为通过仅使用图像的第一个颜色通道作为数据进行训练和测试,可以减少计算时间,同时达到相同的测试准确率,因为数据本质上是相同的。然而,事实并非如此。
使用第一种方法,我能够达到91.95%的测试准确率,训练每轮耗时约3秒。
使用第二种方法,准确率为89.66%,每轮耗时约2秒。
使用第三种方法,准确率为86.21%,每轮耗时不到1秒。
所有网络都使用相同的架构、核尺寸和池化尺寸进行训练,所以我想知道是什么导致了准确率的差异,以及我应该最信任哪一种方法?
回答:
显然,你的第三种方法与其他两种方法不等同,也不是解决问题的正确方法(部分原因也体现在较低的准确率上)。
现在,从理论上讲,你的第一种和第二种方法应该会产生大致相似的结果,根据你提供的准确率值来看,情况也确实如此。
这两种方法都没有问题。第一种方法略高的准确率的一个可能解释是,尽管在这里你实际上只是重复了一个通道的信息x3,但这在实际中起到了某种集成的作用(这种作用因相应的卷积滤波器从不同的随机初始化开始而得到增强);这导致了更多的“子模型”对输出贡献,从而根据模型集成的普遍预期,提高了性能。当然,你应该通过多次实验并计算每种方法的平均准确率来验证这一点(单次实验的结果可能因不同的随机初始化而有所不同)。
据我所知,CNN在单通道图像上的表现是一个相当未被充分探索的主题。你应该继续进行更多的实验!
你报告的每张图像的推理时间与不同的方法是一致的:1D卷积比2D卷积更快,处理单通道图像也比处理三通道图像更快。