【问题标题】:Most appropriate method for training convolutional neural networks with grayscale images?用灰度图像训练卷积神经网络的最合适方法?
【发布时间】:2020-07-13 10:08:24
【问题描述】:

使用 Keras API 训练卷积神经网络,在使用彩色 png 图像(输入大小(高度、宽度、4))进行训练时,我通常使用 2D 卷积层。但是,我现在希望使用灰度 png 图像训练网络,我想知道最好的方法是什么?

我想出了三种可能的方法:

  1. 像输入彩色图像一样输入图像。
  2. 只输入图片的第一个通道,这样输入的尺寸就是(高,宽,1)。
  3. 使用图像第一个通道的一维卷积,使输入大小为(高度、宽度)。

由于我的 png 格式的灰度图像在所有 RGBA 通道中具有相同的值,我认为我可以通过仅使用图像的第一个颜色通道进行训练和测试来减少计算时间,同时实现相同的测试精度因为数据本质上是相同的。然而事实并非如此。

使用方法一,我能够达到 91.95% 的测试准确率,每个 epoch 大约需要 3 秒的训练时间。

使用方法二,准确率为 89.66%,每个 epoch 约 2 秒。

使用方法三,准确率为 86.21%,每个 epoch

所有网络都使用相同的架构、内核大小和池大小进行训练,所以我想知道是什么导致了准确性的差异,我应该最信任哪一个?

【问题讨论】:

    标签: machine-learning deep-learning neural-network computer-vision conv-neural-network


    【解决方案1】:

    您的方法 #3 显然与其他两种方法不等价,也不是解决问题的方法(从较低的准确性也可以部分看出)。

    现在,在 理论上,根据您提供的准确度值,您的方法 #1 和 #2 应该会产生大致相似的结果,这与情况相差不远.

    这两种方法都无效。 #1 的准确度较高的一个可能解释是,虽然在这里您实际上只是重复包含在单个通道 x3 中的信息,但此实际上充当了一种集成(从各个卷积滤波器将从不同的随机初始化开始的事实放大);根据对模型集合的一般期望,这会导致更多的“子模型”对输出做出贡献,从而获得更好的性能。当然,您应该通过运行多个实验并取每种方法的平均准确度来验证是否是这种情况(单个实验的结果总是会因为不同的随机初始化而有所不同)。

    事实是,CNN 对单通道图像的性能是一个尚未充分探索的主题 AFAIK。请自行进行进一步的实验!

    您报告的每张图像的推理时间与不同的方法一致:1D 卷积比 2D 更快,单通道图像的处理也比 3 通道图像快。

    【讨论】:

    • 感谢您的深入回复!我遇到的一个后续问题是,我知道一维卷积通常用于时间数据而不是图像,但是是什么使它们对我上面描述的用途无效?通过实验,我还发现如果在使用 1D 卷积时使用内核和池大小为 1,我可以获得约 94% 的准确度。这个结果实际上是否比 2D 卷积更好,还是如您在回答中所说的那样无效?
    • @WMU97 嗯,ML 实际上在理论上很差——实验为王!如果你用任何非正统的方法得到更好的结果,那就去吧
    猜你喜欢
    • 2018-05-01
    • 2016-08-17
    • 2020-12-02
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2020-09-10
    • 1970-01-01
    相关资源
    最近更新 更多