如何使用Mobilenet和Keras进行迁移学习

发布时间:2021-12-23 16:38:39 作者:柒染
来源:亿速云 阅读:351

这篇文章将为大家详细讲解有关如何使用Mobilenet和Keras进行迁移学习,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

我将向您展示使用Mobilenet对狗的图像进行分类的示例。然后,我将向您展示一个例子,它会把蓝山雀的图像错误分类。然后,我将重新训练Mobilenet并使用迁移学习,以便它可以正确地对相同的输入图像进行分类。在这个过程中,仅使用了两个分类器,但是这可以扩展到您想要的数量,仅限于您可用的硬件数量和时间。

Mobilenet的源文件位于:https://arxiv.org/pdf/1704.04861.pdf

MobileNets:用于移动视觉应用的高效卷积神经网络。

我们使用Mobilenet,是因为它的架构很轻巧。它使用深度可分离的卷积,这基本上意味着它在每个颜色通道上都执行单个卷积,而不是将所有三个卷积相合并展平它。这具有过滤输入通道的效果。或者正如本文作者清楚地解释的那样:“对于MobileNets,深度卷积对每个输入通道应用单个滤波器。然后,逐点卷积应用1×1卷积来组合输出深度卷积。标准卷积既可以在一个步骤中过滤并将输入组合成一组新的输出。深度可分离卷积将其分成两层,一个用于过滤的单独层一个用于组合的单独层。这种因式分解具有显著减少计算和模型大小的效果。”

如何使用Mobilenet和Keras进行迁移学习

逐点和深度卷积之间的差异

所以Mobilenet的整体架构如下,有30层

  1. 步长为2的卷积层

  2. depthwise layer

  3. pointwise layer,使通道数加倍

  4. 步长为2的depthwise layer

  5. pointwise layer,使通道数加倍

等等

如何使用Mobilenet和Keras进行迁移学习

Mobilenet完整架构

它的维护成本非常低,在高速下表现也非常好。还有许多类型的预训练模型,其存储器中的网络大小和磁盘上使用的参数数量成比例。网络的速度和功耗与MACs (Multiply-Accumulates)的数量成正比,后者是融合乘法和加法运算数量的度量。

如何使用Mobilenet和Keras进行迁移学习

现在让我们来看看代码!

我的全部代码:https://github.com/ferhat00/Deep-Learning/tree/master/Transfer%20Learning%20CNN

让我们加载必要的包和库。

如何使用Mobilenet和Keras进行迁移学习

我们从Keras输入预先训练的模型。

如何使用Mobilenet和Keras进行迁移学习

让我们尝试下对不同品种的狗的图像进行一些测试。

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

输出:

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

输出:

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

输出:

如何使用Mobilenet和Keras进行迁移学习

到现在为止还挺好。它很好地分类了每一种狗,那么接下来让我们试一种鸟类蓝色的山雀来看看。

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

蓝雀

如何使用Mobilenet和Keras进行迁移学习

输出:

如何使用Mobilenet和Keras进行迁移学习

你可以看到它无法识别蓝山雀。它错误地将图像归类为小鸡。这是一种原产于北美的本土鸟类,并且有微妙的不同:

如何使用Mobilenet和Keras进行迁移学习

山雀

现在让我们操纵Mobilenet架构,重新训练前几个层并使用迁移学习。要做到这一点,我们需要用一些图像训练它。在这里,我将用蓝山雀和乌鸦的图像进行训练。但是,不是手动下载它们的图像,而是使用谷歌图像搜索并拉动图像。要做到这一点,我们可以导入一个很好的包。

查看https://github.com/hardikvasa/google-images-download

如何使用Mobilenet和Keras进行迁移学习

让我们现在重新使用MobileNet,因为它非常轻巧(17Mb),让我们添加和训练前几个层。注意我只会训练两个分类器,蓝山雀和乌鸦。

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

让我们检查一下模型架构

如何使用Mobilenet和Keras进行迁移学习

我们将使用预先训练的权重,因为已经在Imagenet数据集上训练了模型。我们确保所有权重都是不可训练的,只训练最后几层密集层。

如何使用Mobilenet和Keras进行迁移学习

现在让我们将训练数据加载到ImageDataGenerator中。指定路径,它会自动发送批量训练数据,简化代码。

如何使用Mobilenet和Keras进行迁移学习

编译模型。现在让我们训练吧。在GTX1070 GPU上花费不到两分钟。

如何使用Mobilenet和Keras进行迁移学习

如何使用Mobilenet和Keras进行迁移学习

该模型现已接受训练。 现在让我们测试一些独立的输入图像来检查预测。

如何使用Mobilenet和Keras进行迁移学习

输出:

如何使用Mobilenet和Keras进行迁移学习

正如你所看到的,它正确地预测了乌鸦的图像,因为蓝山雀的图像被注释掉了。

如何使用Mobilenet和Keras进行迁移学习

乌鸦

这可以进一步扩展到更多的图像,更多数量的分类器可以更好地推广,但它是实现CNN迁移学习的最轻量级的方法和最快捷的方式。这当然取决于您想要实现模型的速度、准确程度和硬件,以及您有多少时间可用。

关于如何使用Mobilenet和Keras进行迁移学习就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 如何使用keras进行多显卡训练
  2. 如何使用keras中keras.layers.merge

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

keras

上一篇:Flink提交作业运行的模式有哪些

下一篇:mysql中出现1053错误怎么办

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》