VGG16迁移学习实现
本文讨论迁移学习,它是一个非常强大的深度学习技术,在不同领域有很多应用。动机很简单,可以打个比方来解释。假设想学习一种新的语言,比如西班牙语,那么从已经掌握的另一种语言(比如英语)学起,可能是有用的。

按照这种思路,计算机视觉研究人员通常使用预训练 CNN 来生成新任务的表示,其中数据集可能不够大,无法从头开始训练整个 CNN。另一个常见的策略是采用在 ImageNet 上预训练好的网络,然后通过微调整个网络来适应新任务。

这里提出的例子受启于 Francois Chollet 写的关于 Keras 的一个非常有名的博客(https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html)。
这个想法是使用在像 ImageNet 这样的大型数据集上预先训练的 VGG16 网络。注意,训练的计算量可能相当大,因此使用已经预训练的网络是有意义的:

图 1. 一个 VGG16 网络
如何使用 VGG16 呢?Keras 使其变得容易,因为有一个标准的 VGG16 模型可以作为一个库来使用,预先计算好的权重会自动下载。注意,这里省略了最后一层,并将其替换为自定义层,该层将在预定义的 VGG16 的顶部进行微调。

例如,下面将学习如何分类 Kaggle 提供的狗和猫的图片:

  1. 从 Kaggle(https://www.kaggle.com/c/dogs-vs-cats/data)下载狗和猫的数据,并创建一个包含两个子目录(train 和 validation)的数据目录,每个子目录有两个额外的子目录,分别是 dogs 和 cats。

  2. 导入稍后将用于计算的 Keras 模块,并保存一些有用的常量:

  3. 加载 ImageNet 上预训练的 VGG16 网络,省略最后一层,因为这里将在预建的 VGG16 网络的顶部添加自定义分类网络,并替换原来 VGG16 的分类层:

上述代码的输出如下:

  1. 冻结预训练的 VGG16 网络的一定数量的较低层。在这里决定冻结最前面的 15 层:

  2. 为了分类,添加一组自定义的顶层:

  3. 自定义网络应该单独进行预训练,为了简单起见,这里省略了这部分,将此任务交给读者:

  4. 创建一个新的网络,这是预训练的 VGG16 网络和预训练的定制网络的组合体:

  1. 重新训练组合的新模型,仍然保持 VGG16 的 15 个最低层处于冻结状态。在这个特定的例子中,也使用 Image Augumentator 来增强训练集:

  1. 在组合网络上评估结果:

解读分析
一个标准的 VGG16 网络已经在整个 ImageNet 上进行了预训练,并且使用了预先计算好的从网上下载的权值。这个网络和一个已经被单独训练的定制网络并置在一起。然后,并置的网络作为一个整体被重新训练,同时保持 VGG16 的 15 个低层的参数不变。

这个组合非常有效。它可以节省大量的计算能力,重新利用已经工作的 VGG16 网络进行迁移学习,该网络已经在 ImageNet 上完成了学习,可以将此学习应用到新的特定领域,通过微调去完成分类任务。

根据具体的分类任务,有几条经验法则需要考虑:

• 如果新的数据集很小,并且与ImageNet数据集相似,那么可以冻结所有的VGG16网络,并仅重新训练定制网络。这样,也可以最小化组合网络过度拟合的风险。
可运行代码 base_model.layers:layer.trainable=False 冻结所有低层参数。
• 如果新数据集很大,并且与ImageNet数据集相似,那么可以重新训练整个并置网络。仍然保持预先计算的权重作为训练起点,并通过几次迭代进行微调:
可运行代码 model.layers:layer.trainable=True 取消冻结所有低层的参数。
• 如果新数据集与ImageNet数据集有很大的不同,实际上仍然可以使用预训练模型的权值进行初始化。在这种情况下,将有足够的数据和信心通过整个网络进行微调。更多信息请访问http://cs231n.github.io/transfer-learning/。

VGG16迁移学习实现相关推荐

  1. VGG16迁移学习,实现医学图像识别分类工程项目

    向AI转型的程序员都关注了这个号

  2. 用 X 光检测新冠肺炎?也许孪生网络+迁移学习是更好的选择!

    始于2019年的新冠肺炎仍然肆虐全球,快速低成本检测该疾病成为了医学技术领域最热门的话题,早已有专家发现,核酸+胸部医学影像检测相结合是更可信的检测手段. 胸部X光影像是低成本的检测技术,但深度学习往 ...

  3. 手把手带你从0完成医疗行业影像图像检测三大经典模型InceptionV3-RestNet50-VGG16(附python源代码及数据库)——改变世界经典人工智能项目实战(一)手把手教学迁移学习

    手把手带你从0完成医疗行业影像图像检测三大经典模型InceptionV3-RestNet50-VGG16 1.迁移学习简介 2.项目简介 3.糖尿病视网膜病变数据集 4.考虑类别不平衡问题 5.定义模 ...

  4. Pytorch实现迁移学习

    迁移学习 迁移学习是一种机器学习的方法,指的是一个预训练的模型被重新用在另一个任务中,它专注于存储已有问题的解决模型,并将其利用在其他不同但相关问题上.例如我在A的场景下训练了一个模型,而B.C.D等 ...

  5. 手动搭建的VGG16网络结构训练数据和使用ResNet50微调(迁移学习)训练数据对比(图像预测+前端页面显示)

    文章目录 1.VGG16训练结果: 2.微调ResNet50之后的训练结果: 3.结果分析: 4.实验效果: (1)VGG16模型预测的结果: (2)在ResNet50微调之后预测的效果: 5.相关代 ...

  6. 零基础实战迁移学习VGG16解决图像分类问题

    文章目录 1 前言 2 Transfer Learning 3 How to transfer? 4 代码实战:基于迁移学习对猫狗图片进行辨识 5 参考 1 前言 本文涉及到的代码均已开源,读者可自行 ...

  7. 1、VGG16 2、VGG19 3、ResNet50 4、Inception V3 5、Xception介绍——迁移学习

    ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构 本文翻译自ResNet, AlexNet, VGG, Inception: Understanding va ...

  8. DL之VGG16:基于VGG16(Keras)利用Knifey-Spoony数据集对网络架构进行迁移学习

    DL之VGG16:基于VGG16(Keras)利用Knifey-Spoony数据集对网络架构迁移学习 目录 数据集 输出结果 设计思路 1.基模型 2.思路导图 核心代码 更多输出 数据集 Datas ...

  9. 【Pytorch实战6】一个完整的分类案例:迁移学习分类蚂蚁和蜜蜂(Res18,VGG16)

    参考资料: <深度学习之pytorch实战计算机视觉> Pytorch官方教程 Pytorch官方文档 本文是采用pytorch进行迁移学习的实战演练,实战目的是为了进一步学习和熟悉pyt ...

最新文章

  1. MapReduce编程实例之自定义排序
  2. 基于R的混合线性模型的实现
  3. biztalk adapter for mysql_BizTalk Schedule Adapter的使用
  4. vs调用堆栈窗口怎么弄出来_从零开始(1)栈帧、调用约定
  5. python读取配置文件使用_python 使用 ConfigParser 读取和修改INI配置文件
  6. 被吹的神乎其神的Python到底都能干什么
  7. CentOS 6.5装配第三方软件库epel
  8. 【实习之T100开发】T100 双档程序开发流程
  9. 多线程并发-java内存模型和计算机基础
  10. 简明python教程-Python简明教程
  11. java column_@Column注解属性详解
  12. linux安装 web2py,TurnkeyLinux上用于Web2Py到MySQL的DAL连接字符串
  13. 人脸识别训练集/验证集/测试集
  14. SpringMVC初学--hello world
  15. 美团后端一面准备——面试模板
  16. 数据中心机房物理建设
  17. Hadoop第五天--HDFS详解
  18. 权重初始化——Torch和Keras的方法
  19. i7 1255u和i5 1135G7哪个好
  20. LED屏显示模块的组成及工作原理介绍

热门文章

  1. rancher部署项目Validation failed in API: Deployment.apps“”must be no more than 63 characters问题原因及解决方法
  2. 数据结构(01)— 算法复杂度概念及常见的复杂度计算
  3. C++ 笔记(32)— 预处理、文件包含include、宏替换define、条件包含ifndef、define
  4. C++ 笔记(31)— 类继承
  5. leetcode 567. Permutation in String 字符串的排列 滑动窗口法
  6. MySQL解压版安装
  7. 机器学习常用术语词汇表
  8. 什么是采样层(pooling)
  9. 2021 年音视频技术与发展
  10. DSP与CEVA芯片