文章目录

  • CNN发展
    • 1. AlexNet
    • 2. VGG
    • 3. GoogleNet
    • 4. Inception
    • 5. ResNet
    • 6. Xception
    • 7. ShuffleNet
    • 8. SENet
    • 9. CNN总结
    • 10. CNN在NLP的应用

CNN发展

1. AlexNet

卷积核一定越大越好吗?-- 小卷积核

分组卷积首先在在AlexNet中出现,还用到一些非常大的卷积核,比如11×11、5×5卷积核,先前的观念是:卷积核越大,receptive field(感受野)越大,获取到的图片信息越多,因此获得的特征越好。但是大的卷积核会导致计算量的暴增,不利于模型深度的增加,计算性能也会降低。

2. VGG

卷积核一定越大越好?-- 3×3卷积核

VGG用小卷积核替代大卷积核,利用2个3×3卷积核的组合比1个5×5卷积核的效果更佳,同时参数(3×3×2 VS 5×5×1)被降低,因此后来3×3卷积核被广泛应用在各种模型中。

3. GoogleNet

每层卷积只能用一种尺寸的卷积核?-- 多尺寸卷积

传统的层叠式网络,基本上都是一个个卷积层的堆叠,每层只用一个尺寸的卷积核,例如VGG结构中使用了大量的3×3卷积层。事实上,同一层feature map可以分别使用多个不同尺寸的卷积核,以获得不同尺度的特征,再把这些特征结合起来,得到的特征往往比使用单一卷积核的要好,谷歌的GoogleNet,或者说Inception系列的网络,就使用了多个卷积核的结构:

GoogleNet优点:一个输入的feature map分别同时经过1×1、3×3、5×5的卷积核的处理,得出的特征再组合起来,获得更佳的特征。

GoogleNet缺点:这个结构会存在一个严重的问题:参数量比单种卷积核要多很多,如此庞大的计算量会使得模型效率低下。

4. Inception

怎样减少卷积层参数量?-- Bottleneck

发明GoogleNet的团队发现,如果仅仅引入多个尺寸的卷积核,会带来大量的额外的参数,受到Network In Network中1×1卷积核的启发,为了解决这个问题,他们往Inception结构中加入了一些1×1的卷积核,如图所示:

即引入了bottleneck结构,在每个卷积核前加上1x1卷积核来降低参数量。

根据上图,我们来做个对比计算,假设输入feature map的维度为256维,要求输出维度也是256维。有以下两种操作:

  1. 256维的输入直接经过一个3×3×256的卷积层,输出一个256维的feature map,那么参数量为:256×3×3×256 = 589,824
  2. 256维的输入先经过一个1×1×64的卷积层,再经过一个3×3×64的卷积层,最后经过一个1×1×256的卷积层,输出256维,参数量为:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69,632。足足把第一种操作的参数量降低到九分之一!

1×1卷积核也被认为是影响深远的操作,往后大型的网络为了降低参数量都会应用上1×1卷积核。

5. ResNet

越深的网络就越难训练吗?– ResNet残差网络

传统的卷积层层叠网络会遇到一个问题,当层数加深时,网络的表现越来越差,很大程度上的原因是因为当层数加深时,梯度消散得越来越严重,以至于反向传播很难训练到浅层的网络。

为了解决这个问题,何凯明大神想出了一个“残差网络”,使得梯度更容易地流动到浅层的网络当中去,而且这种“skip connection”能带来更多的好处。

残差网络ResNet设计的残差模块,如下图所示,可以训练更深的网络。

参考:

极深网络(ResNet/DenseNet): Skip Connection为何有效及其它

为什么ResNet和DenseNet可以这么深?一文详解残差块为何能解决梯度弥散问题

6. Xception

卷积操作时必须同时考虑通道和区域吗?-- DepthWise操作

标准的卷积过程可以看上图,一个2×2的卷积核在卷积时,对应图像区域中的所有通道均被同时考虑,问题在于,为什么一定要同时考虑图像区域和通道?我们为什么不能把通道和空间区域分开考虑?

Xception网络就是基于以上的问题发明而来。我们首先对每一个通道进行各自的卷积操作,有多少个通道就有多少个过滤器。得到新的通道feature maps之后,这时再对这批新的通道feature maps进行标准的1×1跨通道卷积操作。这种操作被称为 “DepthWise convolution” ,缩写“DW”。

这种操作是相当有效的,在imagenet 1000类分类任务中已经超过了InceptionV3的表现,而且也同时减少了大量的参数,我们来算一算,假设输入通道数为3,要求输出通道数为256,两种做法:

  1. 直接接一个3×3×256的卷积核,参数量为:3×3×3×256 = 6,912

  2. DW操作,分两步完成,参数量为:3×3×3 + 3×1×1×256 = 795,又把参数量降低到九分之一!

因此,一个depthwise操作比标准的卷积操作降低不少的参数量,同时论文中指出这个模型得到了更好的分类效果。

7. ShuffleNet

分组卷积能否对通道进行随机分组?-- ShuffleNet

在AlexNet的Group Convolution当中,特征的通道被平均分到不同组里面,最后再通过两个全连接层来融合特征,这样一来,就只能在最后时刻才融合不同组之间的特征,对模型的泛化性是相当不利的。为了解决这个问题,ShuffleNet在每一次层叠这种Group conv层前,都进行一次channel shuffle,shuffle过的通道被分配到不同组当中。进行完一次group conv之后,再一次channel shuffle,然后分到下一层组卷积当中,以此循环。

ShuffleNet引入逐点分组卷积(pointwise group convolution)和通道混洗(channel shuffle),改进AlexNet中的Group Convolution。

经过channel shuffle之后,Group conv输出的特征能考虑到更多通道,输出的特征自然代表性就更高。另外,AlexNet的分组卷积,实际上是标准卷积操作,而在ShuffleNet里面的分组卷积操作是depthwise卷积,因此结合了通道洗牌和分组depthwise卷积的ShuffleNet,能得到超少量的参数以及超越mobilenet、媲美AlexNet的准确率!

8. SENet

通道间的特征都是平等的吗? – SEnet

无论是在Inception、DenseNet或者ShuffleNet里面,我们对所有通道产生的特征都是不分权重直接结合的,那为什么要认为所有通道的特征对模型的作用就是相等的呢?

SENet对特征权重重分配,使得特征显著性增强。

一组特征在上一层被输出,这时候分两条路线,第一条直接通过,第二条首先进行Squeeze操作(Global Average Pooling),把每个通道3维的特征压缩成一个1维,从而得到一个特征通道向量(每个数字代表对应通道的特征)。然后进行Excitation操作,把这一列特征通道向量输入两个全连接层和sigmoid,建模出特征通道间的相关性,得到的输出其实就是每个通道对应的权重,把这些权重通过Scale乘法通道加权到原来的特征上(第一条路),这样就完成了特征通道的权重分配。

论文:Squeeze-and-Excitation Networks
论文链接:https://arxiv.org/abs/1709.01507
代码地址:https://github.com/hujie-frank/SENet
PyTorch代码地址:https://github.com/miraclewkf/SENet-PyTorch
论文解读:https://www.jianshu.com/p/59fdc448a33f
参考资料:专栏 | Momenta详解ImageNet 2017夺冠架构SENet
参考资料:https://blog.csdn.net/liqiming100/article/details/82111115

9. CNN总结

  1. CNN模型的发展趋势:从巨型网络到轻量化网络。现在工业界追求的重点已经不是准确率的提升(因为都已经很高了),都聚焦于速度与准确率的trade off,都希望模型又快又准。因此从原来AlexNet、VGGnet,到体积小一点的Inception、Resnet系列,到目前能移植到移动端的MobileNet、ShuffleNet(体积能降低到0.5mb!)。

  2. 卷积核:

    1. 大卷积核用多个小卷积核代替;
    2. 单一尺寸卷积核用多尺寸卷积核代替;
    3. 固定形状卷积核趋于使用可变形卷积核;
    4. 使用1×1卷积核(bottleneck结构)。
  3. 卷积层连接:

    1. 使用skip connection,让模型更深;
    2. densely connection,使每一层都融合上其它层的特征输出(DenseNet)
  4. 卷积层通道:

    1. 标准卷积用depthwise卷积代替;
    2. 使用分组卷积;
    3. 分组卷积前使用channel shuffle;
    4. 通道加权计算。
  5. 启发

    类比到通道加权操作,卷积层跨层连接能否也进行加权处理?bottleneck + Group conv + channel shuffle + depthwise的结合会不会成为以后降低参数量的标准配置?

10. CNN在NLP的应用

  • TextCNN

欢迎各位关注我的个人公众号:HsuDan,我将分享更多自己的学习心得、避坑总结、面试经验、AI最新技术资讯。

常用的卷积神经网络-2-经典CNN模型相关推荐

  1. 基于卷积神经网络的句子分类模型【经典卷积分类附源码链接】

    https://www.toutiao.com/a6680124799831769603/ 基于卷积神经网络的句子分类模型 题目: Convolutional Neural Networks for ...

  2. 一网打尽深度学习之卷积神经网络的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)

    看过的最全最通俗易懂的卷积神经网络的经典网络总结,在此分享,供更多人学习. 一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/articl ...

  3. 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)

    1. CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 2. LeNet-5网络 输入尺寸: ...

  4. 2020-12-09 深度学习 经典CNN模型计算量与内存需求分析

    经典CNN模型计算量与内存需求分析 表1 CNN经典模型的内存,计算量和参数数量对比 AlexNet VGG16 Inception-v3 模型内存(MB) >200 >500 90-10 ...

  5. 基于卷积神经网络的目标检测模型的研究_黄咨_2014_上海交大

    一.传统检测模型和卷积神经网络对比 传统检测模型:采用人工特征提取方法获取目标的特征描述.然后输入到一个分类器中学习分类规则. 人工特征提取方法的缺点: (1)对设计者提出比较高的学术要求, (2)提 ...

  6. 神经网络和卷积神经网络,常用的卷积神经网络

    前馈神经网络.BP神经网络.卷积神经网络的区别与联系 一.计算方法不同1.前馈神经网络:一种最简单的神经网络,各神经元分层排列.每个神经元只与前一层的神经元相连.接收前一层的输出,并输出给下一层.各层 ...

  7. DeepLearning | 经典卷积神经网络Alex_Net (完整模型与tensorflow代码讲解,附数据集)

    最近复现了几个经典的卷积网络,拿自己的数据集试了了试,不得不承认的是卷积神经网络在图像处理方面确实有着得天独厚的优势,写这篇博客讲述早期最经典的卷积神经网络Alex_Net以及附上一些自己的理解 20 ...

  8. plt保存图片_人工智能Keras CNN卷积神经网络的图片识别模型训练

    CNN卷积神经网络是人工智能的开端,CNN卷积神经网络让计算机能够认识图片,文字,甚至音频与视频.CNN卷积神经网络的基础知识,可以参考:CNN卷积神经网络 LetNet体系结构是卷积神经网络的&qu ...

  9. 深度卷积神经网络学习(CNN)

    什么是卷积神经网络 CNN:神经网络在前面的学习中我们已经了解过很多了,其本质就是多层感知机,卷积神经网络其实也一样,但是我们可以将其看成多层感知机的变种.它成功的原因在于其所采用的局部连接和权值共享 ...

最新文章

  1. 双目视觉惯性里程计的在线初始化与自标定算法
  2. OpenCV最基本的测试代码-图像的读取与显示
  3. 嵌入式系统开发入门一:必备基础知识
  4. 高密自智,体小量大,希捷Exos Corvault存储系统为数据洞察赋能
  5. STM32之外部中断原理
  6. Linux查找大文件 (find的用法)
  7. ajax提示弹出dev,windows git pull或者push代码时弹出安全框解决办法
  8. 如何强制卸载edge_如何卸载微软Windows10自带的Edge浏览器?试试这个方法
  9. Android选项卡TabHost功能和用法
  10. 浅论汽车电子行业的汽车开放系统架构AUTOSAR
  11. (搞笑)经典!一些很彪悍的句子
  12. 【转】欧盟物联网研究战略路线图(4)
  13. 一键下载网页所有图片,把美丽存下来
  14. 万网空间 php伪静态,百度云虚拟主机zblogphp在Nginx环境下设置伪静态规则,极为重要...
  15. MRT批处理 MODIS影像
  16. 海思lowlevel_init.S简单分析
  17. Minio(一) | 搭建Minio服务器(单节点)
  18. 计算机、网络安全、CTF资源总结-The_Growth_Path_Of_A_Pwner(一名安全从业者的成长之路)
  19. power supply frameware 框架
  20. STM32双轴摇杆控制空心杯电机

热门文章

  1. 【Linux】一步一步学Linux——readelf命令(253)
  2. http 请求头大小写的问题
  3. face detection[DSFD]
  4. Manjaro 安装以后的配置
  5. 自然语言处理中的文本分类
  6. week4-Histogram Equalization数字图像处理(DIP)
  7. linux下tar命令
  8. turtle.seth()
  9. 布局类(02):【纲】Layout Management [官翻]
  10. Linux-stty