LeNet

CNN的开山之作,是LeCun在98年解决手写是数字识别任务时提出的,从那时起CNN的基本架构就定下来了:卷积、池化、全连接层。

网络结构


AlexNet

2012 年 ImageNet Challenge 大赛上横空出世的 AlexNet 刷新了 Image Classificationde 记录,也正式引领了深度学习的热潮。

论文:http://202.119.24.249/cache/9/03/papers.nips.cc/40659828b5f8741d01b4efeb826c7f06/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

特点

网络结构

如图 3.3 所示, AlexNet 采用的是两台 GPU 服务器,分为上下两组,该模型一共分为八层,五个卷积层以及三个全连接层,在每一个卷积层中包含了激励函数 ReLU 以及局部响应归一(LRN)处理,然后在经过降采样(pool 处理)。

  1. 第一层 conv1 卷积层,输入的原始图像是 227x227x3 的 3 通道 RGB 图像,原始图像被 96 个 11x11x3 的卷积核进行卷积运算,卷积过程的步长为 4,所以生成了[(227-11) /4+1]x[(227-11)/4+1]=55x55 尺寸的 feature map, 共有 96个,分为 2 组每组 48 个 55x55 特征映射,经过 relu 单元激活生成仍是 2 组55x55x48 特征映射;再经由 Max pooling 池化运算尺度为 3x3,步长为 2,因此池化后的尺寸为[(55-3) /2+1]x[(55-3) /2+1]=27x27,分在 2 个 GPU 上,每组为 27x27x48 feature map;
  2. 第二层 conv2 卷积层,输入数据为前一层的27x27x96,为了后续处理,每幅特征映射左右上下各填充 2 个像素,每组被 48 通道的 5x5 卷积模板进行卷积运算,第二层共有 256 个卷积核,卷积后得到[(27-5+2x2) /1+1]x[(27-5+2x2) /1+1]=27x27; 共有 256 个 27x27 的 feature map, 分在 2 个 GPU,每组各 128 个; 经由 relu 单元激活后送入 Max pooling, 依旧是步长为 2 的 3*3 池化尺度,得到[(27-3) /2+1]x[(27-3) /2+1]=13x13 的特征映射,分在 2 个 GPU,每组 128 个 13x13 的 feature map;
  3. 第三层 conv3 卷积层,输入数据为前一层的 13x13x256,为了后续处理,每幅特征映射左右上下两边都要填充 1 个像素;每组被 256 通道的 3x3 卷积模板,第三层共有 384 个卷积核,卷积后得到[(13-3+1x2) /1+1]x[(13-3+1x2)
    /1+1]=13x13;共有 384 个 13x13 的 feature map, 分在 2 个 GPU,每组各 192个;经由 relu 单元送入第四层;
  4. 第四层 conv4 卷积层,输入数据为前一层的 13x13x384,为了后续处理,每幅特征映射左右上下两边都要填充 1 个像素,每组被 192 通道的 3x3 卷积模板,第四层共有 2 组 192 共 384 个卷积核,卷积运算后得到[(13-3+1x2)/1+1]x[(13-3+1x2) /1+1]=13x13;共有 384 个 13x13feature map, 分在 2 个GPU,每组各 192 个;经由 relu 单元送入第五层;
  5. 第五层 conv5 卷积层,输入数据为前一层的 13x13x384,为了后续处理,每幅特征映射左右上下各填充 1 个像素, 每组被 192 通道 3x3 卷积模板,第五层共有 256 个卷积核,卷积后得到[(13-3+1x2) /1+1] x[(13-3+1x2)/1+1]=13x13; 共有 256 个 13x13 的 feature map,分在 2 个 GPU,每组各 128个;经由 relu 单元送入池化,池化尺度为 3x3,步长为 2,池化得到尺寸(13-3) /2+1=6,得到了 2 组 6x6x128 个 feature map;
  6. 第六层 fc6 全连接层,输入数据为 6x6x256,采用 6x6x256 尺寸滤波器进行卷积运算,每次卷积运算生成一个运算结果,通过一个神经元输出,共有 4096个 6x6x256 尺寸的滤波器对输入数据进行运算,通过 4096 个神经元输出,经过relu 单元生成 4096 个值,并通过 drop 运算输出 4096 个结果;
  7. 第七层 fc7 全连接层,第 6 层输出 4096 个数据与第七层 4096 个神经元进行全连接,经由 relu 单元生成 4096 个数据,再经由 dropout7 处理后输出 4096 个数据;
  8. 第八层 fc8 全连接层,第 7 层输出的 4096 个数据与第八层 1000 个神经元进行全连接,经过训练后输出被训练的数值。

NIN

NIN改进了传统的CNN,采用了少量参数就取得了超过AlexNet的性能,AlexNet网络参数大小是230M,NIN只需要29M

论文:https://arxiv.org/pdf/1312.4400.pdf

网络结构

如图 所示,网络总共四层,3mlpconv + 1global_average_pooling,主要创新在于 MLP 以及全局均匀池化部分,通过增强卷积模块的方式加强了模型的分类能力。

传统的卷积网络用卷积提取特征,然后得到的特征再用FC+softmax逻辑回归分类层进行分类。
使用全局平均池化层,每个特征图作为一个输出。这样参数量大大减小,并且每一个特征图相当于一个输出特征(表示输出类的特征)。

特点

以前的卷积层,局部感受野运算仅仅是是一个单层的神经网络(线性滤波器对图像进行内积运算,跟着一个非线性激活函数),mlpconv层可以看成局部感受野上进行conv运算之前,还进行mlp运算,而MLP网络中,常见的使用三层的全连接结构,等效于普通卷积后,再添加一个1:1的卷积和Relu函数

优点:

  • 提供了网络层间映射的一种新可能;
  • 增加了网络卷积层的非线性能力。
  • 提出了全局平均池化代替全连接层,除了能够强化特征图与类别的关系,最重要的是不需要训练参数,可以避免过拟合,主要通过对于每一个特征图求出平均数,然后再将平均数组成特征向量输入 softmax 层中进行分类。

Global Average Pooling主要为了解决全连接层参数过多的问题,早期对于分类问题,最后一个卷积层的 Feature Map 通常与全连接层连接,最后通过 softmax 逻辑回归分类。全连接层带来的问题就是参数空间过大,容易过拟合。早期 Alex 采用了Dropout 的方法,来减轻过拟合,提高网络的泛化能力,但依旧无法解决参数过多问题。
全连接层的存在有以下缺点:

  • 全连接层是传统的神经网络形式,使用了全连接层是因为卷积层只是作为特征提取器来提取图像的特征,而全连接层是不可解释的,从而CNN也不可解释了。全连接层中的参数往往占据CNN整个网络参数的一大部分,从而使用全连接层容易导致过拟合。

Global Average Pooling的做法是将全连接层去掉,在最后一层,将卷积层设为与类别数目一致,然后全局pooling,从而直接输出各个类别结果。

使用全局平均 pooling 代替全连接层,使得最后一个多层感知卷积层获得的每一个特征图能够对应于一个输出类别,优点如下:

  • 全局平均池化更原生的支持于卷积结构,通过加强特征映射与相应分(种)类的对应关系,特征映射可以很容易解释为分类映射
  • 全局平均池化一层没有需要优化的参数,减少大量的训练参数有效避免过拟合
  • 全局平均池化汇总(求和)空间信息,因此其对空间变换是健壮的

VGG

VGGNet 在 AlexNet 的基础上提出了加深网络深度的方法来提高模型分类的能力,并一举获得了 ILSVRC 2014 的亚军。(冠军为GoogLeNet)
论文:https://arxiv.org/pdf/1409.1556.pdf

特点

  • 加深了网络的深度,由 AlexNet8 层加深到了 19 层,提高了模型的分类能力;
  • 利用多个小卷积核来代替大卷积核;例如用 3 个 3x3 的卷积层,层与层之间有非线性激活函数,可以获得 7x7 卷积层的感受野,但是对于 7x7 卷积核需要 7x7xcxc=49c^2 个参数,而对于 3 个 3x3 的卷积层组合,则只需要 3x( 3x3) x c x c=27c^2 个参数;

那么问题来了,2个3x3的卷积核可以替代一个5x5的卷积核吗?
当然可以,我们举一个最简单的栗子:
假设我们卷积核的步长为1,padding为0,输入的图形高度为n,那么我们用5x5的卷积核做一轮卷积运算,得到的图形高度为((n−5+1)/1=n−4。现在我们用3x3的卷积核对这个相同的输入进行卷积运算:1,第一次卷积得到的高度为((n−3+1)/1=n−2),现在我们对这个结果再进行一次卷积运算,卷积核依然为3x3,此时得到的卷积高度为:(n−2−3+1)/1=n−4) 显然,两次卷积结果是一样的。

  • 采用 Pre-trained 方法利用浅层网络的训练参数初始化深层网络参数,加速收敛;
  • 采用 Multi-Scale 方法进行数据增强,通过将图像缩放到不同尺寸随机剪裁,获得多个版本的数据,增加了很多数据量,防止过拟合;

网络结构

  1. A: 8 个卷积层, 3 个全连接层,共计 11 层;
  2. B:在 A 的 stage2 和 stage3 分别增加一个 3x3 的卷积层, 10 个卷积层,总计 13 层;
  3. C:在 B 的基础上, stage3, stage4, stage5 分别增加 1x1 的卷积层, 13 个卷积层,总计 16 层;
  4. D:在 C 的基础上, stage3, stage4, stage5 分别增加 3x3 的卷积层, 13 个卷积层,总计 16 层;
  5. E:在 D 的基础上, stage3, stage4, stage5 分别增加 3x3 的卷积层, 16 个卷积层,总计 19 层。\

1,首先我们输入一副图片,这个图片的像素尺寸是224x224,由于是彩色图片,有3个通道,因此实际输入尺寸为224x224x3

2,我们引入卷积核,卷积核的大小为3x3,根据我们对卷积核的了解,由于输入是一个3通道的张量,因此卷积核的深度也是3.所以卷积核的实际尺寸为3x3x3

3,根据图例,我们的第一层卷积为224x224x64,这个大小是如何得到的?

根据问题2,我们知道我们引入的卷积核尺寸为3x3,根据上面的表,我们知道步长为1,此时卷积后得到的张量维度应该为(224-3+1)/1=222,因此不难推测,我们对原始输入模型增加了padding:(224-3+1+2)/1=224. 我们知道,通过3x3x3的卷积核对原始输入进行卷积后得到的张量深度为1,因此,我们采用了64个这样的卷积核,最后得到了深度为64的张量。

4,我们引入2x2的最大池化层,缩小数组的维度,由224x224x64变为112x112x64(注意,池化层紧紧是缩小模型的长和宽,不会改变模型的深度,因此这里深度依然为64,而非128

1,现在我们的输入从原始图像变成了由第一层卷积之后的输出数组:112x112x64. 我们再次引入和之前相同尺寸的卷积核,但是深度由原来的3变成了64(3x3x64),并且引入了128个这个卷积核,因此经过这一轮卷积运算,数组变成了112x112x128.

2,我们引入2x2的池化层,将数组降维变成56x56x128的数组

1,根据上面的思想,我们现在的输入是56x56x128的数组,我们引入尺寸为3x3x128的卷积核,并且引用了256个,此时数组的大小变为56x56x256

2,我们依然引入2x2的池化层,模型降维成28x28x256

1,我们按照上面的思路,首先把模型变为28x28x512的数组

2,通过池化层,将模型降维变成14x14x512的数组

1,我们引入3x3x512的卷积核,但是不改变输入模型的深度,这句话的意思是这种卷积核我们引入512个。

2,通过2x2的池化操作,我们将模型降维变成7x7x512

这里要注意一下,我们引入了全连接层,那么对于全连接层而言,输入不再是一个7x7x512的矩阵,现在输入可以想象为一个25088的向量(这个25088就是7x7x512的结果),整个全连接层如下图所示:

以上就是VGG16网络的结构。


参考博客

https://blog.csdn.net/qq_39751437/article/details/97622636

https://blog.csdn.net/qq_39382877/article/details/97512087

CNN经典网络:LeNet、AlexNet、NIN、VGG相关推荐

  1. 手撕 CNN 经典网络之 AlexNet(理论篇)

    大家好,我是红色石头! 第一个典型的CNN是LeNet5网络,而第一个大放异彩的CNN却是AlexNet.2012年在全球知名的图像识别竞赛 ILSVRC 中,AlexNet 横空出世,直接将错误率降 ...

  2. CNN经典网络模型:LeNet,Alexnet,VGGNet,GoogleNet,ReSNet

    关于卷积神经网络CNN,网络和文献中有非常多的资料,我在工作/研究中也用了好一段时间各种常见的model了,就想着简单整理一下,以备查阅之需.如果读者是初接触CNN,建议可以先看一看"Dee ...

  3. 手撕 CNN 经典网络之 VGGNet(PyTorch实战篇)

    大家好,我是红色石头! 在上一篇文章: 手撕 CNN 经典网络之 VGGNet(理论篇) 详细介绍了 VGGNet 的网络结构,今天我们将使用 PyTorch 来复现VGGNet网络,并用VGGNet ...

  4. 手撕 CNN 经典网络之 VGGNet(理论篇)

    2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起研发了新的卷积神经网络,并命名为VGGNet.VGGNet是比AlexNet更深的 ...

  5. 图像分类CNN经典网络(一)AlexNet与VGG

    本篇文章总结了CNN领域用于图像分类的两个网络AlexNet与VGGNet. 在图像分类领域,CNN有了很好的应用,下图展示了2012年之后的一些经典的网络架构. AlexNet AlexNet是打开 ...

  6. 深度学习三人行(第10期)----CNN经典网络之LeNet-5和AlexNet

    上一期,我们一起学习了深度学习卷积神经网络中的代码实现,内存计算以及池化层的原理等, 深度学习三人行(第9期)----卷积神经网络实战进阶(附代码) 接下来我们一起学习下关于CNN中比较经典的网络Le ...

  7. CNN经典网络的总结

    本文主要介绍一下CNN的几种经典模型比较.之前自己也用过AlexNet和GoogleNet,网络上关于各种模型的介绍更是形形色色,自己就想着整理一下,以备自己以后查阅方便 LeNet5 先放一张图,我 ...

  8. DNN结构演进History—CNN( 优化,LeNet, AlexNet )

    本文相对于摘抄的文章已经有大量的修改,如有阅读不适,请移步原文. 以下摘抄转自于维基:基于深度学习的图像识别进展百度的若干实践 从没有感知域(receptive field) 的深度神经网络,到固定感 ...

  9. CNN经典网络之残差网络(ResNet)剖析

    残差网络(Residual Network, ResNet)是在2015年继AlexNet.VGG.GoogleNet 三个经典的CNN网络之后提出的,并在ImageNet比赛classificati ...

最新文章

  1. Codevs 1519 过路费(Mst+Lca)
  2. 【常用】2DUI跟随3D物体移动(待修复)
  3. Java 输出链表的第一个和最后一个元素
  4. [Codeforces 487E]Tourists
  5. 表单相关标签之textarea,select
  6. \Process(sqlservr)\% Processor Time 计数器飙高
  7. 【浙江大学PAT真题练习乙级】1009 说反话 (20分)真题解析
  8. 计算机大作业论文意义,重庆大学数理统计大作业——论文
  9. Redis的雪崩,击穿,穿透详解
  10. 绘画和照片编辑:Artstudio Pro for mac
  11. 椰树集团引爆互联网背后的“流量秘密”
  12. lync2013持久聊天服务器如何修复,部署企业版lync2013之四:持久聊天
  13. python Gstreamer 播放不同编码格式的视频文件
  14. 二年级期末计算机基础试题答案,小学二年级语文期末考试卷
  15. Nginx用户访问及密码验证
  16. (原创)Linux设备轮询机制分析
  17. JavaSocket简单通信
  18. 行为识别论文阅读(2)——3D Human Sensing, Action and Emotion Recognition in Robot Assisted Therapy of Children
  19. 电商项目:拼团活动设计及表结构设计
  20. Mac上IDEA无法下载plugins插件

热门文章

  1. 共享雨伞,又一个昙花一现的共享经济?
  2. 我去那个擅长搞事件营销的沸点天下到底收获了什么?
  3. 【大数据开发】SparkCore——统计广告topN、基站停留时间topN、ip地址统计练习
  4. 如何将PDF删除水印?PDF怎么删除水印
  5. 小程序 配置域名 业务域名_使域名成为您的业务
  6. 移动性能测试工具perfDog分享和wifi链接问题
  7. 为了到火星,天问一号究竟有多努力?
  8. java写培根披萨和海鲜披萨_培根海鲜披萨的做法【图解】_培根海鲜披萨的家常做法_培根海鲜披萨怎么做_下午茶...
  9. 如何利用Qt 3D 渲染与 Qt Quick 2D 元素结合创建太阳系行星元素?
  10. CString用法大全