前言:
最近在学习深度学习时发现各类经典网络成为高频词,比如AlexNet、VGG、GoogLeNet、Inception、Xception、ResNet、MobileNet、SENet、CBAM、DenseNet、NASNet等等。快速整理了如下内容,为大家快速了解经典网络的结构特点提供一个参考。
由于博主能力有限,内容大多引自网络博客,并未严格考证如有错误之处望予以指出,后续也会逐步修正和补充一些实现后的代码。

经典卷积神经网络

  • 背景
  • Keras.applications
    • VGG16
      • 背景 (2014)
      • 网络结构
      • 结果
      • 讨论
      • 参考
    • VGG19
      • 网络结构
      • TF2.0代码复现
      • 参考
    • ResNet
      • 背景(2015)
      • 网络结构
      • 结果
      • 讨论
      • TF2.0代码复现
      • 参考
    • InceptionV3
      • 背景 (2015)
      • 网络结构
      • 结果
      • 讨论
      • 参考
    • InceptionResNetV2
      • 背景 (2016)
      • 网络结构
      • 结果
      • 讨论
      • TF2.0代码复现
      • 参考
    • Xception
      • 背景 (2017)
      • 网络结构
      • 结果
      • 讨论
      • 参考
    • MobileNet
      • 背景(2017)
      • 网络结构
      • 结果
      • 讨论
      • [TF2.* 代码实现](https://blog.csdn.net/Forrest97/article/details/106216395)
      • 参考
    • DenseNet
      • 背景(2018)
      • 网络结构
      • 结果
      • 讨论
      • TF2.0代码复现
      • 参考
    • NASNet
      • 背景(2018)
      • 网络结构
      • 结果
      • 讨论
      • 参考
    • MobileNetV2
      • 背景(2019)
      • 网络结构
      • 结果
      • 讨论
      • [TF2.* 代码实现](https://blog.csdn.net/Forrest97/article/details/106223297)
      • 参考
    • SENet & CBAM
  • 总结
  • 迁移学习
    • 使用keras.application代码实现
    • 使用keras team GitHub
    • 使用Tensorflow slim

背景

自2012至今近十年的深度学习发展中,机器视觉领域涌现了一大批性能突出的深度卷积神经网络结构。这些经典网络就好比我们在烹饪深度学习这道美食的不可获取的重要食材,了解并掌握不同结构的特点和基本原理,为我们活学活用卷积神经网络,快速应用于实践中,能够起到事半功倍的效果。
但由于大型神经网络规模巨大,个人电脑难以实现大规模数据集合的模型训练。Tensorflow.Keras.applications中便提供了不少基于ImageNet完成训练的经典网络模型和权值。基于大规模图像数据集训练的卷积神经网络被认为具有突出的图像特征提取的功能,被广泛应用于图像分类、语义分割、人脸识别和目标检测等实际场景中。
希望借此文,方便大家一窥经典深度卷积网络,并站在经典网络的肩膀上迅速开展自己的研究。

Keras.applications

如下,Keras官网提供了近二十组经典网络模型和权重参数。借此内容按照时间顺序展开进行介绍。

官网链接

VGG16

背景 (2014)

VGG是Oxford的Visual Geometry Group的组提出的(大家应该能看出VGG名字的由来了)在2014年提出来的模型。当这个模型被提出时,由于它的简洁性和实用性,马上成为了当时最流行的卷积神经网络模型。它在图像分类和目标检测任务中都表现出非常好的结果。
VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5)。对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核是优于采用大的卷积核,因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)

网络结构



VGG16包含了16个隐藏层(13个卷积层和3个全连接层)
VGG网络的结构非常一致,从头到尾全部使用的是3x3的卷积和2x2的max pooling

结果

讨论

VGG优点

  • VGGNet的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)。
  • 几个小滤波器(3x3)卷积层的组合比一个大滤波器(5x5或7x7)卷积层好
  • 验证了通过不断加深网络结构可以提升性能。

VGG缺点

VGG耗费更多计算资源,并且使用了更多的参数(这里不是3x3卷积的锅),导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层。VGG可是有3个全连接层啊!

参考

论文:Very Deep Convolutional Networks for Large-Scale Image Recognition.
代码的github链接:https://github.com/liuzhuang13/DenseNet
参考博文: https://github.com/machrisaa/tensorflow-vgg

VGG19

网络结构



VGG19包含了19个隐藏层(16个卷积层和3个全连接层)

TF2.0代码复现

https://blog.csdn.net/Forrest97/article/details/106135431

参考

论文:Very Deep Convolutional Networks for Large-Scale Image Recognition.
参考博文: https://github.com/machrisaa/tensorflow-vgg

ResNet

背景(2015)

深度卷积网络在图像分类任务上取得了一系列突破。深度网络通过多层端到端的方式,集成了低中高三个层次的特征和分类器,并且这些特征的数量还可以通过堆叠层数来增加。在ImageNet数据集上获胜的网络揭示了网络深度的重要性。
随着网络层数的增加,训练的问题随之凸显。比较显著的问题有梯度消失/爆炸,这会在一开始就影响收敛。收敛的问题可以通过正则化来得到部分的解决。
在深层网络能够收敛的前提下,随着网络深度的增加,正确率开始饱和甚至下降,称之为网络的退化(degradation)问题。 示例可见Figure 1. 显然,56层的网络相对于20层的网络,不管是训练误差还是测试误差都显著增大。

很明显,这些退化并不是过拟合造成的。在给定的网络上增加层数会增大训练误差。 网络的退化说明不是所有的系统都很容易优化。考虑一个浅层的网络架构和在它基础上构建的深层网络,在极端条件下,如果增加的所有层都是前一层的直接复制(即y=x),这种情况下深层网络的训练误差应该和浅层网络相等。因此,网络退化的根本原因还是优化问题。 为了解决优化的难题,提出了残差网络。

网络结构

ResNet 通过在卷积层的输入和输出之间添加Skip Connection 实现层数回退机制,如下
图 所示,输入

深度学习 机器视觉 经典卷积神经网络 Tensorflow2.0 keras.applications相关推荐

  1. 深度学习——02、深度学习入门——经典卷积神经网络架构实例——RNN

    RNN 对比 传统神经网络 递归神经网络 RNN网络的特点:能够实现记忆功能 RNN的正向传播和反向传播 缺陷:储存量巨大,信息有冗余. 应用:自然语言处理

  2. 深度学习——02、深度学习入门——经典卷积神经网络架构实例——VGGNet

    Case Study:VGGNet

  3. 深度学习——02、深度学习入门——经典卷积神经网络架构实例——AlexNet

    Case Study:AlexNet

  4. 深度学习教程(10) | 卷积神经网络解读(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...

  5. 深度学习算法中卷积神经网络的应用

    下面一起来探讨一下关于深度学习算法中卷积神经网络的基本概念和应用: 1.卷积神经网络基本概念 卷积神经网络也是在传统人工神经网络的基础上发展起来的,它与 BP 神经网络有很大的相似之处,但也有很大的区 ...

  6. 深度学习21天——卷积神经网络(CNN):天气识别(第5天)

    目录 一.前期准备 1.1 设置GPU 1.2 导入数据 1.2.1 np.random.seed( i ) 1.2.2 tf.random.set_seed() 1.3 查看数据 二.数据预处理 2 ...

  7. 吴恩达.深度学习系列-C4卷积神经网络-W2深度卷积模型案例

    吴恩达.深度学习系列-C4卷积神经网络-W2深度卷积模型案例 (本笔记部分内容直接引用redstone的笔记http://redstonewill.com/1240/.原文整理的非常好,引入并添加我自 ...

  8. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

    原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron  python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...

  9. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR

    原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression  python源代码(GitHub下载 CSDN免费下载) ...

  10. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

最新文章

  1. 【原】YUI压缩与CSS media queries下的bug
  2. 17秋 软件工程 第六次作业 Beta冲刺 总结博客
  3. 玩cf出现outofmemory_CF从女主播秀腿到假赛被罚,还能站在电竞上吗?
  4. android手机系统的启动流程-secureboot流程(以MTK平台为例)
  5. java dbtype_java 动态操作数据库
  6. 原创《SQL基础知识第2版》PDF高清版,限时下载!
  7. sketch放入app组件_使用Sketch App设计CSS网格
  8. es6 Iterator(迭代器)的概念
  9. java逆向框架,Android逆向之逆向框架层
  10. 4个开源 TCP/IP 栈被曝33个漏洞,数百万智能和工业设备受影响
  11. 解决css中height:100%失效的问题
  12. 链表相关的面试题型总结
  13. Android Studio实现记事本项目
  14. 银河麒麟系统下安装Kingbase数据库
  15. 路由器概述(作用功能、工作过程、内部组成【RAM、ROM区别】、接口)
  16. Apache POI 设置Excel单元格的宽度和高度
  17. Teamviewer过期,获取免费版
  18. CF545C Woodcutters
  19. FutureTask源码学习
  20. 最新口红机系统源码下载+自定义支付接口

热门文章

  1. Freemarker数字格式化总结
  2. 技术类应届生面试技巧(牛客网)
  3. 安卓AndroidStudio设计计算器实现简单的计算
  4. 小技巧2:Python 实现阿拉伯数字转化为中文数字
  5. PyCharm插件安装
  6. Pic3D裸眼3D贴膜诞生
  7. js日期减一个月_正正正国庆!折上再减!三亚/香格里拉/稻城/拈花湾,最低499元…...
  8. RadioButton下划线效果的使用
  9. Android保存图片到本地或者数据库,并通知相册更新
  10. 变频无线发射机系统电路设计详解