【问题标题】:Image classification using Convolutional neural network使用卷积神经网络进行图像分类
【发布时间】:2016-05-01 05:15:18
【问题描述】:

我正在尝试使用卷积神经网络对酒店图像数据进行分类..

以下是一些亮点:

  1. 图像预处理:

    • 转换为灰度
    • 将所有图像的大小调整为相同的分辨率
    • 标准化图像数据
    • 查找 pca 组件
  2. 卷积神经网络:

    • 输入 - 32*32
    • 卷积 - 16 个过滤器,3*3 过滤器大小
    • pooling - 2*2 过滤器尺寸
    • dropout - 以 0.5 的概率下降
    • 完全连接 - 256 个单位
    • dropout - 以 0.5 的概率下降
    • 输出 - 8 个类
  3. 使用的库:

    • 千层面
    • 不学习

但是,我对测试数据的准确度降低了,只有 28% 左右。

有什么可能导致准确性降低的原因吗?有什么改进建议吗?

提前致谢。

【问题讨论】:

  • 为什么 pca 在您的管道中?你是如何在 pca 之上应用 conv net 来返回“平面”向量表示的?
  • 您似乎也在使用一种特定的架构,为什么您认为它足够好?神经网络中有如此多的移动块,因此提出一个好的架构本身就是一个研究问题。我建议你从 cifar10 的一些好的架构开始,这些架构比这个复杂得多(层数更少、池化更大、内核更多等)

标签: machine-learning deep-learning conv-neural-network lasagne python-nolearn


【解决方案1】:

测试数据准确性低的原因可能有多种,因此如果没有更多信息和大量实验,就不可能提供具体答案。说了这么多,有几点值得一提:

  1. 正如@lejlot 在 cmets 中提到的,PCA 预处理步骤是可疑的。基本的 CNN 架构被设计为需要最少的预处理,并且图像的基本结构保持完整是至关重要的。这是因为 CNN 需要能够找到有用的空间局部特征。
  2. 要从图像数据中检测复杂对象,您可能会受益于更多的卷积层。鉴于您所描述的简单架构,很可能它根本不具备处理分类任务所需的表现力。
  3. 另外,您提到您在卷积层之后应用了 dropout。一般来说,我看到的研究表明,dropout 在卷积层上并不是特别有效。我个人建议删除它,看看它是否有任何影响。如果您最终需要对卷积层进行正则化(根据我的经验,这通常是不必要的,因为共享内核通常已经充当了强大的正则化器),您可以考虑stochastic pooling
  4. 我能给出的最重要的建议之一是建立一个可靠的机制来衡量模型的质量,然后进行实验。尝试修改架构,然后调整超参数以查看产生最佳结果的方法。特别是,请务必监控训练损失与验证损失,以便确定模型何时开始过度拟合。

【讨论】:

    【解决方案2】:

    在 2012 年 Imagenet 之后,所有表现良好(最先进)的卷积神经网络都在添加更多的卷积神经网络,他们甚至使用零填充来增加卷积神经网络。

    • 增加卷积神经网络的数量。

    有人说dropout在CNN上没那么有效,但是用起来还不错,但是

    • 你应该降低dropout值,你应该试试(可能是0.2)。

    应该分析数据。如果是低,

    • 您应该使用数据增强技术。

    如果您在其中一个标签中有更多数据,

    • 您遇到了数据不平衡的问题。但你现在不应该考虑它。

    你可以

    • 应考虑使用 VGG-Net 或其他一些 CNN 进行微调。

    另外,不要转换成灰度,在图像到数组的转换之后,你应该只除225。

    我认为你从一些教程(MNIST)中学习了 CNN,你认为你应该把它变成灰度。

    【讨论】:

      猜你喜欢
      • 2017-03-21
      • 1970-01-01
      • 2021-07-30
      • 2017-02-12
      • 2016-10-03
      • 2019-01-30
      • 1970-01-01
      • 2021-03-30
      • 2017-01-01
      相关资源
      最近更新 更多