当前位置: 首页 > 科技观察

4ComputerVisionModelsforMigrationLearning

时间:2023-03-14 13:59:48 科技观察

介绍使用SOTA的预训练模型通过迁移学习解决现实的计算机视觉问题。如果您尝试过构建高精度机器学习模型,但还没有尝试过迁移学习,那么这篇文章将改变您的生活。至少,对我来说是。我们大多数人已经尝试通过几个机器学习教程来掌握神经网络的基础知识。这些教程非常适合理解人工神经网络的基础知识,例如递归神经网络、卷积神经网络、GAN和自动编码器。但这些教程的主要功能是让您为实际应用做好准备。现在,如果您计划构建一个利用深度学习的AI系统,您要么(i)有非常大的预算来培训优秀的AI研究人员,要么(ii)可以从迁移学习中受益。什么是迁移学习?迁移学习是机器学习和人工智能的一个分支,其目的是将从一项任务(源任务)中获得的知识应用到不同但相似的任务(目标任务)中。例如,学习对维基百科文本进行分类时获得的知识可用于解决法律文本分类问题。另一个例子是利用学习对汽车进行分类时获得的知识来识别天空中的鸟类。这些样本之间存在相关性。我们没有在鸟类检测中使用文本分类模型。迁移学习是将知识从相关的已经学习的任务中迁移出来,以改进在新任务中的学习总而言之,迁移学习是一个让你免于重新发明轮子并帮助你在极短的时间内学习构建AI应用程序的领域。迁移学习的历史为了证明迁移学习的力量,我们可以引用AndrewNg的话:迁移学习将成为继监督学习之后机器学习商业成功的下一个驱动力迁移学习的历史可以追溯到1993年。LorienPratt的论文“Discriminability-BasedTransferbetweenNeuralNetworks”打开了潘多拉魔盒,向世界介绍了迁移学习的潜力。1997年7月,《机器学习》杂志出版了迁移学习论文特刊。随着该领域的发展,多任务学习等相邻主题也被纳入迁移学习领域。《学会学习》是该领域的先驱书籍之一。如今,迁移学习是构建新AI解决方案的科技企业家和推动机器学习前沿研究的强大资源。迁移学习如何工作?实现迁移学习有三个要求:第三方开发的开源预训练模型重用模型微调问题开发开源预训练模型预训练模型是由其他人创建和训练的模型,用于解决与我们类似的问题。实际上,有人几乎总是科技大亨或一群明星研究人员。他们通常选择一个非常大的数据集作为他们的基础数据集,例如ImageNet或维基百科语料库。然后,他们创建一个大型神经网络(例如,VGG19有143,667,240个参数)来解决特定问题(例如,这个问题使用VGG19进行图像分类。)当然,这个预训练模型必须公开,以便我们可以采用这些模型并重新使用它们。重用模型在我们掌握了这些预训练模型之后,我们重新利用所学知识,包括层、特征、权重和偏差。有几种方法可以将预训练模型加载到我们的环境中。最后,它只是一个包含相关信息的文件/文件夹。但是,深度学习库已经托管了许多此类预训练模型,这使得它们更易于访问:TensorFlowHubKerasApplicationsPyTorchHub您可以使用上述来源之一来加载训练模型。它通常具有所有层和权重,您可以根据需要调整网络。微调问题目前的模型或许可以解决我们的问题。微调预训练模型通常更好,原因有二:这样我们可以获得更高的准确性。我们微调的模型以正确的格式生成输出。一般来说,在神经网络中,底层和中间层通常代表一般特征,而顶层代表特定问题的特征。由于我们的新问题与原始问题不同,因此我们倾向于删除顶层。通过为我们的问题添加特定层,我们可以获得更高的准确性。移除顶层后,我们需要放置自己的层,以便获得所需的输出。例如,使用ImageNet训练的模型最多可以对1000个对象进行分类。如果我们试图对手写数字进行分类(例如,MNIST分类),最终得到一个只有10个神经元的层可能会更好。在我们将自定义层添加到预训练模型后,我们可以使用特殊的损失函数和优化器对其进行配置,并通过额外的训练对其进行微调。计算机视觉中的4个预训练模型这里有四个预训练网络,可用于图像生成、神经风格迁移、图像分类、图像描述、异常检测等计算机视觉任务:VGG19Inceptionv3(GoogLeNet)ResNet50EfficientNet让我们一一深入。VGG-19VGG是一个深度为19层的卷积神经网络。它由牛津大学的KarenSimonyan和AndrewZisserman于2014年在论文:VeryDeepConvolutionalNetworksforlargeImageRecognition中构建和训练。VGG-19网络还使用来自ImageNet数据库的超过100万张图像进行了训练。当然,您可以使用ImageNet训练的权重导入模型。这个预训练网络可以对多达1000个对象进行分类。该网络在224x224像素的彩色图像上进行训练。以下是其大小和性能的简要信息:大小:549MBTop-1准确率:71.3%Top-5准确率:90.0%参数数量:143,667,240深度:26Inceptionv3(GoogLeNet)Inceptionv3是一个50层的深度卷积网络神经网络。它是由谷歌构建和训练的,你可以查看这篇论文:“Goingdeepwithconvolutions”。具有ImageNet权重的预训练Inceptionv3可以对多达1000个对象进行分类。该网络的图像输入尺寸为299x299像素,比VGG19网络大。VGG19是2014年ImageNet比赛的亚军,而Inception是冠军。以下是Inceptionv3特征的简要总结:Size:92MBTop-1Accuracy:77.9%Top-5Accuracy:93.7%Numberofparameters:23,851,784Depth:159ResNet50(ResidualNetwork)ResNet50是一个卷积神经网络,具有深度50层楼。它由微软于2015年构建和训练,论文:[DeepResidualLearningforImageRecognition](http://deepResidualLearningforImageRecognition/)。该模型在ImageNet数据库中的超过100万张图像上进行了训练。与VGG-19一样,它最多可以对1000个对象进行分类,并且网络是在224x224像素的彩色图像上进行训练的。以下是有关其大小和性能的简要信息:大小:98MBTop-1精度:74.9%Top-5精度:92.1%参数数量:25,636,712如果比较ResNet50和VGG19,您会发现ResNet50实际上比VGG19更好的性能,尽管它不那么复杂。您还可以使用较新的版本,例如ResNet101、ResNet152、ResNet50V2、ResNet101V2、ResNet152V2。EfficientNetEfficientNet是谷歌在2019年论文“EfficientNet:RethinkingModelScalingforconvolutionalneuralNetworks”中训练和发表的最先进的卷积神经网络。EfficientNet有8个可选实现(B0到B7),即使是最简单的EfficientNetB0也很好。530万个参数,达??到了77.1%的最高精度性能。EfficientNetB0的特点简单介绍如下:Size:29MBTop-1Accuracy:77.1%Top-5Accuracy:93.3%Numberofparameters:~5,300,000Depth:159Otherpre-trainingmodelsforcomputervisionproblems我们列举四个最先进的获奖卷积神经网络模型。但是,还有许多其他模型可用于迁移学习。下面是对这些模型的基准分析,所有模型都可以在Keras应用程序中找到。总结在我们可以轻松访问最先进的神经网络模型的世界中,试图用有限的资源构建自己的模型就像重新发明轮子一样毫无意义。相反,尝试使用这些经过训练的模型,在上面添加一些新层,考虑您的特定计算机视觉任务,然后进行训练。结果将比您从头开始构建的模型更成功。