如何使用Mobilenet和Keras进行迁移学习-创新互联
这篇文章将为大家详细讲解有关如何使用Mobilenet和Keras进行迁移学习,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
成都创新互联公司主营长垣网站建设的网络公司,主营网站建设方案,成都App定制开发,长垣h5成都微信小程序搭建,长垣网站营销推广欢迎长垣等地区企业咨询我将向您展示使用Mobilenet对狗的图像进行分类的示例。然后,我将向您展示一个例子,它会把蓝山雀的图像错误分类。然后,我将重新训练Mobilenet并使用迁移学习,以便它可以正确地对相同的输入图像进行分类。在这个过程中,仅使用了两个分类器,但是这可以扩展到您想要的数量,仅限于您可用的硬件数量和时间。
Mobilenet的源文件位于:https://arxiv.org/pdf/1704.04861.pdf
MobileNets:用于移动视觉应用的高效卷积神经网络。
我们使用Mobilenet,是因为它的架构很轻巧。它使用深度可分离的卷积,这基本上意味着它在每个颜色通道上都执行单个卷积,而不是将所有三个卷积相合并展平它。这具有过滤输入通道的效果。或者正如本文作者清楚地解释的那样:“对于MobileNets,深度卷积对每个输入通道应用单个滤波器。然后,逐点卷积应用1×1卷积来组合输出深度卷积。标准卷积既可以在一个步骤中过滤并将输入组合成一组新的输出。深度可分离卷积将其分成两层,一个用于过滤的单独层一个用于组合的单独层。这种因式分解具有显著减少计算和模型大小的效果。”
逐点和深度卷积之间的差异
所以Mobilenet的整体架构如下,有30层
步长为2的卷积层
depthwise layer
pointwise layer,使通道数加倍
步长为2的depthwise layer
pointwise layer,使通道数加倍
等等
Mobilenet完整架构
它的维护成本非常低,在高速下表现也非常好。还有许多类型的预训练模型,其存储器中的网络大小和磁盘上使用的参数数量成比例。网络的速度和功耗与MACs (Multiply-Accumulates)的数量成正比,后者是融合乘法和加法运算数量的度量。
现在让我们来看看代码!
我的全部代码:https://github.com/ferhat00/Deep-Learning/tree/master/Transfer%20Learning%20CNN
让我们加载必要的包和库。
我们从Keras输入预先训练的模型。
让我们尝试下对不同品种的狗的图像进行一些测试。
输出:
输出:
输出:
到现在为止还挺好。它很好地分类了每一种狗,那么接下来让我们试一种鸟类蓝色的山雀来看看。
蓝雀
输出:
你可以看到它无法识别蓝山雀。它错误地将图像归类为小鸡。这是一种原产于北美的本土鸟类,并且有微妙的不同:
山雀
现在让我们操纵Mobilenet架构,重新训练前几个层并使用迁移学习。要做到这一点,我们需要用一些图像训练它。在这里,我将用蓝山雀和乌鸦的图像进行训练。但是,不是手动下载它们的图像,而是使用谷歌图像搜索并拉动图像。要做到这一点,我们可以导入一个很好的包。
查看https://github.com/hardikvasa/google-images-download
让我们现在重新使用MobileNet,因为它非常轻巧(17Mb),让我们添加和训练前几个层。注意我只会训练两个分类器,蓝山雀和乌鸦。
让我们检查一下模型架构
我们将使用预先训练的权重,因为已经在Imagenet数据集上训练了模型。我们确保所有权重都是不可训练的,只训练最后几层密集层。
现在让我们将训练数据加载到ImageDataGenerator中。指定路径,它会自动发送批量训练数据,简化代码。
编译模型。现在让我们训练吧。在GTX1070 GPU上花费不到两分钟。
该模型现已接受训练。 现在让我们测试一些独立的输入图像来检查预测。
输出:
正如你所看到的,它正确地预测了乌鸦的图像,因为蓝山雀的图像被注释掉了。
乌鸦
这可以进一步扩展到更多的图像,更多数量的分类器可以更好地推广,但它是实现CNN迁移学习的最轻量级的方法和最快捷的方式。这当然取决于您想要实现模型的速度、准确程度和硬件,以及您有多少时间可用。
关于如何使用Mobilenet和Keras进行迁移学习就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
当前标题:如何使用Mobilenet和Keras进行迁移学习-创新互联
路径分享:http://azwzsj.com/article/phpps.html