相关文章推荐
沉着的水桶  ·  Videojs Context Menu·  5 月前    · 
帅气的甜瓜  ·  炸裂!加拿大男篮名单出炉!美国队,你们真不稳 ...·  1 年前    · 
冷冷的电梯  ·  商圈支付结果通知解密失败javax.cryp ...·  1 年前    · 
强悍的蘑菇  ·  《温暖的抱抱》剧情介绍高清-电影温暖的抱抱 ...·  2 年前    · 
胆小的鼠标  ·  多版本对象权限_对象存储服务 ...·  2 年前    · 
Code  ›  基本卷积神经网络(CNN) —— AlexNet,VGG-Net,Inception系列,ResNet,DenseNet等_计算alexnet、vgg19、resnet152三个网络中的神经元数目及可
卷积 resnet alexnet googlenet
https://blog.csdn.net/ft_sunshine/article/details/90950048
飘逸的甜瓜
1 年前
    • 概要介绍
    • 基本卷积神经网络(CNN)
      • AlexNet
      • ZF-Net
      • VGG-Net
      • Inception系列
        • Inception-V1:GoogLeNet
        • Inception-V2:An Improved Version of Inception-V1
        • Inception-V3:Factorizing NxN into 1xN and Nx1
        • Inception-V4:Inception with skip connections
      • ResNet
      • DenseNet
    • References

    本文主要讲解到目前为止一些经典的 卷积神经网络 (CNN),这些网络或其衍生网络经常作为其他复杂网络的 backbone ,因此,熟悉这些常见的基本网络还是非常有必要的。本文主要关注的是卷积神经网络的设计哲学,不仅仅局限于某一种网络,还会介绍每一种网络相比之前网络的改进以及为什么要这么做。总之,本文的主要内容就是: ConvNets Design Philosophy - From AlexNet to DenseNet

    声明,本文的部分内容摘自CS231n的课件,我一年多前做的一个PPT和一些其他博主的优秀博客,在文章的最后会给出参考链接。

    本篇文章需要一些预备知识:基本的微积分,基本的机器学习知识(比如线性分类器,损失函数,过拟合,欠拟合等),基本的优化方法(如SGD等),反向传播等。

    首先给出本文的介绍内容
    在这里插入图片描述
    在介绍基本卷积神经网络之前,我们先来简单回顾一下CNN的基本知识和计算方法,下图是 卷积操作 的示意图:
    在这里插入图片描述
    如果还不是特别清楚,见下面的动图(这个图是当年帮助我入门的图,哈哈哈哈哈哈):
    在这里插入图片描述
    在了解了什么是卷积操作之后,我们还要知道与卷积操作有关的一些 计算 ,如下:已知输入数据为 2 8 ∗ 2 8 ∗ 5 ,计算过程如下:
    在这里插入图片描述
    那么对于每个神经元(例子中为5个),其参数量为多少呢?
    在这里插入图片描述
    好了,在了解了基本卷积过程和其运算之后,下面我们开始具体介绍一些基本的卷积神经网络。

    基本卷积神经网络(CNN)

    AlexNet

    AlexNet(2012)的主要贡献就是在2012年的ImageNet比赛中一举以碾压优势夺冠,开启了用卷积神经网络做图像处理的先河。

    AlexNet的 网络结构 如下:
    在这里插入图片描述
    下面还是来关注一下有关AlexNet的卷积操作计算问题(按照上面给出的计算方法是可以算出来的)

    layer1: 卷积层
    在这里插入图片描述
    layer2: 最大池化层 (注意:池化层是没有参数的,这一层的参数量为0!)
    在这里插入图片描述
    下面是AlexNet的详细结构图和参数,以及AlexNet当时的一些创新点
    在这里插入图片描述

    ZF-Net

    ZF-Net(2013),额。。。。这个实在没啥好讲的,其只是对AlexNet做了一点小小的改进。比如将AlexNet的卷积核改小,增加每一层的神经元个数等。
    在这里插入图片描述
    上图中的16.4% -> 11.7%代表的是卷积神经网络在ImageNet数据集上的错误率(人类在这个数据集上的错误率大概为5%)

    VGG-Net

    其实VGG-Net(2014)也算是一个小里程碑,VGG-Net现在也很常见,其对比与Alex-Net的主要改进为: 更小的卷积核,更深的网络 ,VGG-Net的网络架构如下:
    在这里插入图片描述
    那么现在有个问题,VGG-Net的两个改进,为什么会能提高网络的性能呢?

    使用更小的卷积核是当前在保证网络精度的情况下,减少参数的趋势之一,在VGG16中,使用了 5 ∗ 5 卷积核。使用更小的卷积核 堆叠 来代替一个大的卷积核,这样做的主要目的是:

    • 在保证相同感受野的情况下
    • 提升网络的深度
    • 提升网络的非线性表达能力(层数多)
    • 降低网络模型的参数量

    以下简单地说明一下小卷积( x ,下面主要介绍以下四部分:
    在这里插入图片描述

    Inception-V1:GoogLeNet

    在GoogLeNet(2014)之前,网络的设计思路是一直在stack(堆叠)层数,当时的假设是网络越deeper,网络的performance越好。到了2014年,GoogLeNet横空出世,GoogLeNet改变了这个假设:除了增加 深度 ,还增加了网络的 宽度 。GoogLeNet的结构如下:
    在这里插入图片描述

    下面我们一步步来推倒出 Inception module 的设计,先来看初始版本的 Naive Inception module 。Naive Inception module就是对同一个输入,用不同大小的卷积核去卷积,然后分别把它们的结果给concatenate(注意这里要求不同卷积操作输出的feature map的大小要相同,不然没法特征拼接呀)起来。但这样有个问题:计算量太大了!
    在这里插入图片描述
    注:上图 p a d d i n g = 2 (为保证不同卷积操作输出的特征图大小一样,以便于后面的特征拼接)

    Naive Inception module的计算量的计算过程如下,可见Naive Inception module的计算量是相当大的(这还只是一层)。
    地方

    那么我们应该如何减少计算量呢?用的是什么理念和思想呢?

    这就不得不提到从2014年一直延续至今的神经网络设计思想: bottleneck 。使用 bottleneck (即

    所以到这里,Naive Inception module就升级为了 Inception module 。
    在这里插入图片描述

    此时这一个Inception module的计算量为358M ops,相比之前的854M ops,使用“bottleneck”的Inception module的计算量降低了一半多!
    在这里插入图片描述

    到这里,Inception module的结构就介绍完了,而GoogLeNet的架构就是多个Inception module一层一层地stack( 堆叠 )出来的,下面是GoogLeNet的整体架构的介绍。
    在这里插入图片描述
    注:上图中可以看到有三个分类输出头,为什么要用三个classifier呢?结合GoogLeNet的论文,我个人认为有以下几点原因:

    • 一般认为深度越深,越有可能产生梯度消失的问题。这里深度不同的三个classifier可以有效缓解梯度消失问题,即浅层的classifier也可以回传误差,缓解梯度消失问题。
    • CNN深度越深的层,提取的特征语义信息越丰富,深度越浅的层提取的特征更基础,包含更多的位置信息,所以并不是深度越深的层提取的特征一定好于较浅层提取的特征。这里在不同深度的层上面都加了一个output layer,可以做一个模型的ensemble,这可能会提升模型的效果。
    Inception-V2:An Improved Version of Inception-V1

    Inception-V2主要有两点改进:

    1. Add Batch Normalization based on Inception-V1.
    2. Replace 5x5 and 7x7 conovolutional kernels with 3x3.

    其结构如下:

    Inception-V4:Inception with skip connections
    • Inception-V4 introduces skip connections (ResNet) compared with previous Inception series.

    即Inception-V4大概就相当于之前的 Inception + ResNet ,因为后面马上就要介绍ResNet,所以这里就不再详细介绍Inception-V4了,只给出其结构图,如下:
    在这里插入图片描述

    ResNet

    • Very deep networks using residual connections

    ResNet(2016)之后,CNN真正到了层数能超过100层(常用ResNet 50,101,152)的时代(甚至训了一个1202层的ResNet,,,吓人)。训练很深的神经网络有一个问题,深度太深,梯度回传困难,很容易发生梯度消失或者爆炸的问题,就是这个原因一直阻碍人们stack更深的网络(因为训不了),很深的模型在模型优化的时候会非常难。

    那么如何解决deeper model训练优化困难的问题呢?
    solution: 引入残差,使模型训练更easy => 更深的模型性能表现更好这个愿望终于实现了!

    Residual Block 的结构如下:
    在这里插入图片描述

    如上所示,ResNet实际上并没有直接学 F ( x ) = H ( x ) − x 。如果了解BP算法(反向传播算法)的话,可能比较好理解反向传播的本质就是链式求导,而ResNet学习的是残差,这样的话在求偏导时就不会出现导数为0的情况(学了一个残差,所以要对残差求偏导)。所以使用ResNet,我们可以训练更深的网络。

    ResNet的结构如下:
    在这里插入图片描述

    当然,想优化还可以继续优化……
    在这里插入图片描述

    下面是以上所讲网络模型的性能分析图:
    在这里插入图片描述

    DenseNet

    终于到最后一个了,为啥CSDN不能发表情包!难以表达我现在的心情(手动笑哭 * 50)

    现在我们有三种方式来处理不同卷积层之间的特征图:

    • Standard Connectivity
    • Residual/Skip Connectivity
    • Densenet: Dense Connectivity

    这三种方式的图示如下:

    Standard Connectivity Residual/Skip Connectivity Densenet: Dense Connectivity

    DenseNet的思想是某一层的输入是其前面每一层的输出,即将不同层得到的特征图进行融合作为某一层的输入,这样CNN的每一层就可以得到前面不同层提取的特征(浅层位置等基础信息,深层语义信息),这样网络的表达能力会更好。图示如下:
    在这里插入图片描述

    大家看到这里可能会想,如果每一层的特征图都这样堆叠下去,那么特征图的层数不就无限增长了吗,这样特征的维度就会爆炸!
    solution: 用之前提到的 1 ∗ 1 卷积啊!bottleneck降维
    在这里插入图片描述

    下图是 Dense Blocks 的结构图,在每个Dense Blocks内部,每层的feature map的大小是一致的(方便特征融合),不同Dense Blocks之间有Pooling层用于减小feature map的大小。
    在这里插入图片描述

    至此,DenseNet也算介绍完了,上面就是目前较为常见的基础CNN网络的介绍,重点关注每种网络的设计理念和思想。

    欢迎大家有问题积极讨论,谢谢。

    References

    • http://cs231n.stanford.edu/
    • https://arxiv.org/pdf/1608.06993.pdf
    文章目录概要介绍基本卷积神经网络(CNN)AlexNetZF-NetVGG-NetInception系列Inception-V1:GoogLeNetInception-V2:An Improved Version of Inception-V1Inception-V3:Factorizing NxN into 1xN and Nx1Inception-V4:Inception with skip...
    ResNet 由Kaiming He(何凯明)等发明(论文下载:Deep Residual Learning for Image Recognition),获得了2015年ILSVRC挑战赛的冠军,一度将TOP-5错误率降至3.6%。参加2015年挑战赛区的 ResNet 网络 深度达到 152 层,比起以前的 卷积神经网络 ,深度越来越深,但 参数 越来越少。 ResNet 使用了一种叫做残差学习(residual learning)的方法,即将输入越过几层直接添加到后面层的输出上,此时模型不再是简单地拟合目标函数h(x),
    输出feature map大小:2828 (32-5+1)=28 神经元 数量:28286 可 训练 参数 :(55+1) * 6(每个滤波器55=25个unit 参数 和一个bias 参数 ,一共6个滤波器) 连接数:(55+1)62828=12230 您需要设置两个数据集文件以进行 训练 和验证。 格式必须如下所示: /absolute/path/to/image1.jpg class_index /absolute/path/to/image2.jpg class_index class_index必须从0开始。 可以在和找到样本数据集文件。 不要忘了通过--num_classes运行时,标志finetune.py脚本。 亚历克斯网 进入 alexnet 文件夹 cd alexnet 如果您以前没有下载过砝码,请下载。 ./download_we
    乳腺肿瘤 计算 机辅助诊断(CAD)系统在医学检测和诊断 中 的应用日益重要。为了区分核磁共振图像(MRI) 中 肿瘤与非肿瘤,利用深度学习和迁移学习方法,设计了一种新型乳腺肿瘤CAD系统:1)对数据集进行不平衡处理和数据增强;2)在MRI数据集上,利用 卷积神经网络 ( CNN )提取 CNN 特征,并利用相同的支持向量机分类器, 计算 每层 CNN 的特征图的分类F1分数,选取分类性能最高的一层作为微调节点,其后维度较低层为连接新 网络 节点;3)在选取的 网络 接入节点,连接新设计的两层全连接层组成新的 网络 ,利用迁移学习,对新 网络 载入权重;4)采用固定微调节点前的 网络 层不可 训练 ,其余层可 训练 的方式微调。分别基于深度卷积 网络 ( VGG 16)、 Inception V3、深度残差 网络 ( ResNet 50)构建的CAD系统,性能均高于主流的CAD系统,其 中 基于 VGG 16和 ResNet 50搭建的系统性能突出,且二次迁移可以提高 VGG 16系统性能。
    五、 VGG 、 AlexNet 、 ResNet 网络 (超详细哦)1、 VGG 网络 1.1、 VGG 网络 结构1.2、理解 VGG 16( 19 )卷积 网络 2、 AlexNet 网络 2.1、 AlexNet 网络 结构2.2、理解 AlexNet 网络 2.3、 Alexnet 网络 中 各层的作用3、 ResNet 网络 1、 VGG 网络 1.1、 VGG 网络 结构 下面是 VGG 网络 的结构( VGG 16和 VGG 19 都在): • VGG 16包含...
    在 CNN 网络 结构的进化过程 中 ,出现过许多优秀的 CNN 网络 ,如:LeNet, AlexNet , VGG -Net,GoogLeNet, ResNet ,DesNet. 主要方向: 网络 加深,增强卷积模块 1、LeNet: LeNet诞生于 19 98年, 网络 结构比较完整,包括卷积层、pooling层、全连接层。被认为是 CNN 的鼻祖。 输入32*32*1 卷积层3个:卷积的主要目的是...
    深度残差 网络 ResNet 是2015年ILSVRC的冠军,深度达 152 层,是 VGG 的8倍,top-5错误率为3.6%。 ResNet 的出现使上百甚至上千层的神经 网络 的 训练 成为可能,且 训练 的效果也很好,利用 ResNet 强大的表征能力,使得图像分类、 计算 机视觉(如物体检测和面部识别)的性能都得到了极大的提升。 一、残差学习 根据无限逼近定理(Universal Approximation The...
    1、 CNN 的架构模型 CNN 是一种前馈 网络 ,即信息流从输入到输出都是单向的。正如人工神经 网络 (ANN)是受生物学启发的, CNN 也是。大脑的视觉皮层由简单细胞和复杂细胞交替组成(Hubel & Wiesel, 19 59, 19 62),这激发了他们对 CNN 架构的设计。 CNN 的架构有多种变体,通常,它们由卷积层和池化层(subsampling)组成,这些层被分组成模块。在前馈 网络 中 ,最后会连接一层或多层全连接层。这些模块通常堆叠在一起,形成一个深层模型。   图像直接输入到 CNN 网络 中 ,接下来是几个
    AlexNet 是经典的 卷积神经网络 模型架构之一,由Alex Krizhevsky等人在2012年提出。相比于之前LeNet模型, AlexNet 在深度、 参数 量和 计算 量上都有所提升,使其在图像分类等任务上取得了突破性的成果。 AlexNet 模型包含5个卷积层和3个全连接层,其 中 卷积层之间使用了最大池化操作进行下采样,最后的全连接层作为分类器输出模型的预测结果。模型 中 使用ReLU激活函数来增加非线性,使用Dropout来减轻过拟合问题,使用数据增强来扩充 训练 数据集。 除了 AlexNet 之外,还有一些其他经典的 CNN 模型架构,如 VGG 、GoogleLeNet、 ResNet 等,它们都在不同的任务上表现出色。 VGG 模型采用了更深的 网络 结构,GoogleLeNet使用了 Inception 模块来有效地减少 参数 量, ResNet 则采用了残差连接来解决深度 网络 中 的梯度消失问题。这些模型为深度学习在 计算 机视觉领域的应用奠定了基础。
 
推荐文章
沉着的水桶  ·  Videojs Context Menu
5 月前
帅气的甜瓜  ·  炸裂!加拿大男篮名单出炉!美国队,你们真不稳!_世界杯_约基奇_塞尔维亚
1 年前
冷冷的电梯  ·  商圈支付结果通知解密失败javax.crypto.AEADBadTagException: Tag? | 微信开放社区
1 年前
强悍的蘑菇  ·  《温暖的抱抱》剧情介绍高清-电影温暖的抱抱 - 哔哩哔哩
2 年前
胆小的鼠标  ·  多版本对象权限_对象存储服务 OBS_BrowserJS_多版本控制_华为云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号