hR *_*312 8 classification deep-learning pre-trained-model transfer-learning
我是一个初学者,对于如何选择可以改善我的模型的预训练模型,我感到非常困惑。
我正在尝试使用模型的预训练权重创建猫品种分类器,比如说在数字数据集上训练的VGG16,这会改善模型的性能吗?或者如果我仅在数据库上训练模型而不使用其他权重会更好,或者两者都与那些预先训练的权重相同只是一个起点。
另外,如果我使用针对猫和狗数据训练的VGG16的权重作为我的猫品种分类模型的起点,这将有助于我改进模型吗?
小智 7
既然您提到您是初学者,我会尝试比平常更详细一点,所以请耐心等待。
下面来自 Keras 博客的图片显示了初始层如何学习表示点和线等简单事物,随着我们深入,它们开始学习表示更复杂的模式。
在 keras 博客上阅读有关 Conv net Filters 的更多信息
当我们训练模型时,我们在最初创建这些表示时浪费了大量的计算和时间,为了获得这些表示,我们也需要大量数据,否则我们可能无法捕获所有相关特征,并且我们的模型可能无法捕获所有相关特征。一样准确。
因此,当我们说我们想要使用预先训练的模型时,我们想要使用这些表示,因此,如果我们使用在 imagenet 上训练的模型,其中有很多猫的图片,我们可以确定该模型已经具有识别所需的重要特征的表示。识别一只猫并且会收敛到比我们使用随机权重更好的点。
因此,当我们说使用预训练权重时,我们的意思是使用保存表示的层来识别猫,但丢弃最后一层(密集层和输出层),而是添加具有随机权重的新密集层和输出层。因此我们的预测可以利用已经学到的表示。
在现实生活中,我们在初始训练期间冻结预训练权重,因为我们不希望底部的随机权重破坏学习到的表示。我们只有在获得良好的分类精度后才最终解冻表示并对其进行微调,并且学习率也非常小。
始终选择那些您知道具有最多表示形式的预训练权重,这可以帮助您识别您感兴趣的类别。
那么,与在图像网络上训练的权重相比,使用 mnist 数字训练的权重会产生相对较差的结果吗?
是的,但考虑到初始层已经学习了简单的模式,例如使用这些权重的数字的直线和曲线,与大多数情况下从头开始相比,仍然会给您带来优势。
要选择的预训练权重取决于您希望分类的类别类型。由于您希望对猫品种进行分类,因此请使用针对类似任务进行训练的分类器中的预训练权重。正如上面的回答所提到的,初始层学习边缘、水平或垂直线、斑点等。随着你深入,模型开始学习问题的特定特征。因此,对于通用任务,您可以使用 imagenet 然后针对手头的问题对其进行微调。
但是,拥有一个与您的训练数据非常相似的预训练模型非常有帮助。不久前,我参加了场景分类挑战赛,我们用在 Places365 数据集上训练的 ResNet50 权重初始化了我们的模型。由于上述挑战中的类都存在于 Places365 数据集中,因此我们使用了此处可用的权重并微调了我们的模型。这极大地提高了我们的准确性,我们最终在排行榜上名列前茅。您可以在此博客中找到有关它的更多详细信息
此外,请了解迁移学习的优势之一是节省计算。使用具有随机初始化权重的模型就像从头开始训练神经网络。如果使用在数字数据集上训练的 VGG16 权重,那么它可能已经学到了一些东西,因此肯定会节省一些训练时间。如果您从头开始训练模型,那么它最终将学习使用预训练数字分类器权重学习的所有模式。
另一方面,使用 Dog-vs-Cat 分类器的权重应该会给你更好的性能,因为它已经学会了检测爪子、耳朵、鼻子或胡须的特征。
您能否提供更多信息,您想准确分类什么?我看到您希望对图像进行分类,哪种类型的图像(包含什么?)以及属于哪些类别?
作为一般评论:如果您使用经过训练的模型,当然它必须满足您的需求。请记住,在给定数据集上训练的模型仅学习该数据集中包含的信息,并且可以对类似于训练数据集中的信息进行分类/识别。
如果要使用 Y/N(二元)分类器(猫或非猫)对包含动物的图像进行分类,则应使用在不同动物(其中包括猫)上训练的模型。
如果您想将猫的图像分类为对应于猫种族的类,假设您应该使用仅在猫图像上训练的模型。
我应该说你应该使用一个管道,包含步骤 1. 其次是 2。