毕业论文
您现在的位置: 语言识别 >> 语言识别市场 >> 正文 >> 正文

想正确识别猫狗理论实例代码一文搞定

来源:语言识别 时间:2024/11/7
北京医院白癜风治疗 http://www.t52mall.com/
全文共字,预计学习时长10分钟深度学习正迅速成为人工智能应用的关键工具。例如,在计算机视觉、自然语言处理和语音识别等领域,深度学习已经取得显著的成果。因此,人们对深度学习的兴趣也越来越浓厚。深度学习中最突出的问题之一是图像分类。图像分类的目的是根据潜在的类别对特定的图像进行分类。图像分类的一个经典示例是在一组图像中识别猫和狗。从深度学习的角度来看,图像分类问题可以通过迁移学习来解决。实际上,图像分类中几项最新的研究成果都是基于迁移学习方案得出的。本文将介绍如何在图像分类问题中实施迁移学习解决方案。本文提供的实施方案基于使用Python编程语言的Keras(Chollet)。通过实施此方案,你将能够快速轻松地解决任何图像分类问题。目录1.迁移学习2.卷积神经网络3.再利用预训练模型4.迁移学习过程5.深度卷积神经网络上的分类器6.实例7.总结1.迁移学习迁移学习是计算机视觉中一种备受欢迎的学习方法,通过迁移学习,我们可以在省时的基础上建立准确的模型。进行迁移学习时,你可以从解决不同问题时遇到的已知的模式开始学习,而不需要从头开始。这样你可以利用以前学到的知识,避免从头开始。迁移学习可视作沙特尔所说的“站在巨人的肩膀上”的深度学习版本。在计算机视觉中,迁移学习通常通过使用预训练模型来实现。预训练模型指在大型基准数据集上进行问题解决训练的模型,而用于训练的问题与我们实际想要解决的问题类似。由于训练这类模型的计算量与计算成本低,更常见的应用是在已出版的文献中导入和使用这类模型。2.卷积神经网络用于迁移学习的几种预训练模型都是基于大型卷积神经网络(CNN)的。总的来说,CNN在各种计算机视觉任务中表现出色。其具备的高性能且易于训练是近年来CNN流行的两个主要因素。一个典型的CNN由两部分组成:1.卷积基底,由一堆卷积层和池化层组成。卷积基的主要目的是从图像中生成特征。2.分类器,通常由全连接层组成。分类器的主要作用是根据检测到的特征对图像进行分类。全连接层指神经元与前一层中的所有激活完全连接的层。图1是基于CNN的模型结构。注意,这是一个简化的版本,它符合本文的目的。实际中,这类模型结构比我们这里列举的更复杂。图1基于CNN的模型结构这些深度学习模型的一个重要特征是它们可以自动学习分层特征表示。这意味着由第一层计算的特征是通用的,并且可以在不同的问题域中再次使用,而由最后一层计算的特征是特定的,并且取决于所选择的数据集和任务。有专家认为:“如果第一层特征是通用的,而最后一层特征是特定的,那么在网络的某个地方必须要从一般特征过渡到特定特征。”因此,CNN的卷积基,尤其是其较低的层(更接近输入的层),指的是一般特征;而CNN的分类器部分和卷积基中的一些较高层则指特殊特征。3.再利用预训练模型当你根据自己的需要再利用预训练模型时,你首先要删除原始的分类器,然后添加符合你需要的新分类器,最后必须根据以下三种策略中的一种对模型进行微调:1.训练整个模型。在这种情况下,你将用到预训练模型的体系结构,并根据你的数据集对其进行训练。由于你将从头开始学习模型,因此你需要一个大数据集(以及大量的计算能力)。2.训练一部分层,其他层保持冻结状态。如前面所说,较低层指的是一般特性(与问题无关),而较高层指的是特定特性(与问题有关)。这里,我们通过需要调整的网络权重(冻结层在训练期间不会改变)来实现这种二分法。通常,如果你有一个小的数据集和大量的参数,你需要留下更多的冻结层以避免过度拟合。相反,如果数据集很大,参数的数量很小,你可以对更多的层进行新任务训练来改进模型,因为这种情况下不会出现过度拟合。3.冻结卷积基。这种情况与训练权衡或冻结权衡的极端情况相对应。其主要思想是使卷积基保持其原始形式,然后将其输出提供给分类器。当你将预训练模型作为固定的特征提取机制时,如果你缺乏计算能力、数据集很小,和/或预训练模型解决了你想要解决的问题,那么此方法将很有用。图2是这三种策略的流程图:图2微调策略不同于操作直接的策略3,使用策略1和策略2时,你需要注意卷积部分中使用的学习率。学习率是一个超参数,它控制你对网络权重的调整程度。当你使用基于CNN的预训练模型时,最好保持较低学习率,因为高学习率会增加失去之前获取的知识的风险。假设预训练模型经过了良好的训练(这样假设是完全合理的),保持低学习率将确保你不会过早和过量地扭曲CNN权重。4.迁移学习过程从实际角度来看,整个迁移过程可归纳如下:1.选择一个预训练模型。你可以从各种可用的预训练模型中选择一种适合你的模型。例如,如果你使用的是Keras,那么你可以立即访问如VGG、InceptionV3,以及ResNet5这类模型。2.根据大小-相似性矩阵对问题进行分类。图3中的“矩阵”影响着你的选择。这个矩阵根据数据集的大小以及与训练预训练模型时所用的的数据集的相似性对计算机视觉问题进行分类。根据经验法则,如果一个数据集的每个类中图像少于个,则认为该数据集很小。而数据集的相似性可以根据常识判断出。例如,如果你的任务是识别猫和狗,则ImageNet是一个相似的数据集,因为它能识别猫和狗的图像。然而,如果你的任务是识别癌细胞,则ImageNet不能被视为相似的数据集。3.微调模型。在这里,你可以使用大小-相似性矩阵来辅助选择,然后参考前面提到的关于再利用预训练模型的三种选择。图4是以下文本的图像总结。象限1:大数据集,但与预训练模型的数据集不同。在这种情况下,需要采取策略1。由于你有一个大的数据集,所以可以从头开始训练模型,并执行你想要的任何操作。尽管数据集有所不同,但在实践中,通过使用体系结构和权重,初始化一个预训练模型的方法仍然是有用的。象限2:大数据集并类似于预训练模型的数据集。这时候任何选项都适用,但很有可能最有效的选择是策略2。由于数据集很大,因而不会出现过度拟合,所以我们想学多少就学多少。然而,由于数据集是相似的,我们可以通过利用以前的知识省去大量的工作。因此,我们只需要训练分类器和卷积基顶层就足够了。象限3:小数据集并不同于预训练模型的数据集。这类数据集必将造成计算机视觉问题。一切都对你不利。此时抱怨没有用,唯一的希望就是选择策略2。你很难平衡需要训练和冻结的层数。如果你研究得过于深入,你的模型可能会发生过拟合现象,如果你停留在模型的浅层,你又学不到任何有用的东西。也许,与象限2相比,你需要更进一步,并且需要运用数据增强技术。象限4:小型数据集,但类似于预训练模型的数据集。当我问尤达大师对此的看法时,他告诉我:“对于这类数据集,策略3是最好的选择”。我虽不了解他,但我不会低估他的“原力”。因此,我选择策略3。你只需要移除最后一个全连接层(输出层),将预训练模型作为固定的特征提取器运行,然后使用先前所得的特征来训练新的分类器。图3和图4大小-相似性矩阵(左)和用于微调预训练模型的决策图(右)5.深度卷积神经网络上的分类器如前所述,基于预训练卷积神经网络的迁移学习方法产生的图像分类模型通常由两部分组成:1.卷积基,用于执行特征提取。2.分类器,根据卷积基提取的特征对输入图像进行分类。由于在本节中我们主要

转载请注明:http://www.0431gb208.com/sjszlff/7912.html