使用卷积神经网络进行图像分类

时间:2016-05-01 05:15:19

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

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

以下是一些亮点:

  1. 图像预处理:

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

    • 输入 - 32 * 32
    • 卷积 - 16个滤镜,3 * 3滤镜尺寸
    • 合并 - 2 * 2过滤器尺寸
    • 以0.5概率丢弃
    • 完全连接 - 256个单位
    • 以0.5概率丢弃
    • 输出 - 8个班级
  3. 使用的图书馆:

    • 千层面
    • nolearn
  4. 但是,我对测试数据的准确率降低了,仅为28%左右。

    准确度如此不准确的任何可能原因?有任何建议的改进吗?

    提前致谢。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

有人说辍学在CNN上并没有那么有效,但使用它并不坏,但是

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

应分析数据。如果它很低,

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

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

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

你可以

  • 应该考虑VGG-Net或其他一些CNN的微调。

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

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