Machine learning 基于卷积神经网络的图像分类

Machine learning 基于卷积神经网络的图像分类,machine-learning,deep-learning,conv-neural-network,lasagne,python-nolearn,Machine Learning,Deep Learning,Conv Neural Network,Lasagne,Python Nolearn,我正在尝试使用卷积神经网络对酒店图像数据进行分类 以下是一些亮点: 图像预处理: 转换为灰度 将所有图像调整为相同分辨率 标准化图像数据 寻找主成分分析 卷积神经网络: 输入-32*32 卷积-16个滤波器,3*3个滤波器尺寸 池-2*2筛选器大小 辍学-以0.5的概率辍学 完全连接-256个单元 辍学-以0.5的概率辍学 产出-8类 使用的图书馆: 千层面 诺兰 但是,我对测试数据的准确率越来越低,只有28%左右 有没有任何可能的原因导致精确度降低?有什么改进建议吗 提前感谢。测试

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

以下是一些亮点:

  • 图像预处理:

    • 转换为灰度
    • 将所有图像调整为相同分辨率
    • 标准化图像数据
    • 寻找主成分分析
  • 卷积神经网络:

    • 输入-32*32
    • 卷积-16个滤波器,3*3个滤波器尺寸
    • 池-2*2筛选器大小
    • 辍学-以0.5的概率辍学
    • 完全连接-256个单元
    • 辍学-以0.5的概率辍学
    • 产出-8类
  • 使用的图书馆:

    • 千层面
    • 诺兰
  • 但是,我对测试数据的准确率越来越低,只有28%左右

    有没有任何可能的原因导致精确度降低?有什么改进建议吗


    提前感谢。

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

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

  • 2012年Imagenet之后,所有性能良好的卷积神经网络(最新技术)都在添加更多的卷积神经网络,它们甚至使用零填充来增加卷积神经网络

    • 增加卷积神经网络的数目
    有人说辍学在CNN上并没有那么有效,但使用起来也不错,但是

    • 您应该降低退出值,您应该尝试它(可能是0.2)
    应分析数据。如果低,

    • 您应该使用数据扩充技术
    如果其中一个标签中有更多数据

    • 你陷入了数据不平衡的问题。但你现在不应该考虑它。
    你可以

    • 应该考虑VGG网络或其他CNN的微调
    另外,不要转换为灰度,在图像到阵列转换后,您应该只除以225


    我认为你从一些教程(MNIST)中学习了CNN,你认为应该将其转换为灰度。

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