作者丨zzq

来源丨https://zhuanlan.zhihu.com/p/68411179

编辑丨极市平台

仅作学术分享,不代表本公众号立场,侵权联系删除

CNN基本部件介绍

1. 局部感受野

在图像中局部像素之间的联系较为紧密,而距离较远的像素联系相对较弱。因此,其实每个神经元没必要对图像全局进行感知,只需要感知局部信息,然后在更高层局部信息综合起来即可得到全局信息。卷积操作即是局部感受野的实现,并且卷积操作因为能够权值共享,所以也减少了参数量。

2. 池化

池化是将输入图像进行缩小,减少像素信息,只保留重要信息,主要是为了减少计算量。主要包括最大池化和均值池化。

3. 激活函数

激活函数的用是用来加入非线性。常见的激活函数有sigmod, tanh, relu,前两者常用在全连接层,relu常见于卷积层

4. 全连接层

全连接层在整个卷积神经网络中起分类器的作用。在全连接层之前需要将之前的输出展平

经典网络结构

1. LeNet5

由两个卷积层,两个池化层,两个全连接层组成。卷积核都是5×5,stride=1,池化层使用maxpooling

2. AlexNet

模型共八层(不算input层),包含五个卷积层、三个全连接层。最后一层使用softmax做分类输出

AlexNet使用了ReLU做激活函数;防止过拟合使用dropout和数据增强;双GPU实现;使用LRN

3. VGG

全部使用3×3卷积核的堆叠,来模拟更大的感受野,并且网络层数更深。VGG有五段卷积,每段卷积后接一层最大池化。卷积核数目逐渐增加。

总结:LRN作用不大;越深的网络效果越好;1×1的卷积也很有效但是没有3×3好

4. GoogLeNet(inception v1)

从VGG中我们了解到,网络层数越深效果越好。但是随着模型越深参数越来越多,这就导致网络比较容易过拟合,需要提供更多的训练数据;另外,复杂的网络意味更多的计算量,更大的模型存储,需要更多的资源,且速度不够快。GoogLeNet就是从减少参数的角度来设计网络结构的。

GoogLeNet通过增加网络宽度的方式来增加网络复杂度,让网络可以自己去应该如何选择卷积核。这种设计减少了参数 ,同时提高了网络对多种尺度的适应性。使用了1×1卷积可以使网络在不增加参数的情况下增加网络复杂度。

Inception-v2

在v1的基础上加入batch normalization技术,在tensorflow中,使用BN在激活函数之前效果更好;将5×5卷积替换成两个连续的3×3卷积,使网络更深,参数更少

Inception-v3

核心思想是将卷积核分解成更小的卷积,如将7×7分解成1×7和7×1两个卷积核,使网络参数减少,深度加深

Inception-v4结构

引入了ResNet,使训练加速,性能提升。但是当滤波器的数目过大(>1000)时,训练很不稳定,可以加入activate scaling因子来缓解

5. Xception

在Inception-v3的基础上提出,基本思想是通道分离式卷积,但是又有区别。模型参数稍微减少,但是精度更高。Xception先做1×1卷积再做3×3卷积,即先将通道合并,再进行空间卷积。depthwise正好相反,先进行空间3×3卷积,再进行通道1×1卷积。核心思想是遵循一个假设:卷积的时候要将通道的卷积与空间的卷积进行分离。而MobileNet-v1用的就是depthwise的顺序,并且加了BN和ReLU。Xception的参数量与Inception-v3相差不大,其增加了网络宽度,旨在提升网络准确率,而MobileNet-v1旨在减少网络参数,提高效率。

6. MobileNet系列

V1

使用depthwise separable convolutions;放弃pooling层,而使用stride=2的卷积。标准卷积的卷积核的通道数等于输入特征图的通道数;而depthwise卷积核通道数是1;还有两个参数可以控制,a控制输入输出通道数;p控制图像(特征图)分辨率。

V2

相比v1有三点不同:1.引入了残差结构;2.在dw之前先进行1×1卷积增加feature map通道数,与一般的residual block是不同的;3.pointwise结束之后弃用ReLU,改为linear激活函数,来防止ReLU对特征的破环。这样做是因为dw层提取的特征受限于输入的通道数,若采用传统的residual block,先压缩那dw可提取的特征就更少了,因此一开始不压缩,反而先扩张。但是当采用扩张-卷积-压缩时,在压缩之后会碰到一个问题,ReLU会破环特征,而特征本来就已经被压缩,再经过ReLU还会损失一部分特征,应该采用linear。

V3

互补搜索技术组合:由资源受限的NAS执行模块集搜索,NetAdapt执行局部搜索;网络结构改进:将最后一步的平均池化层前移并移除最后一个卷积层,引入h-swish激活函数,修改了开始的滤波器组。

V3综合了v1的深度可分离卷积,v2的具有线性瓶颈的反残差结构,SE结构的轻量级注意力模型。

7. EffNet

EffNet是对MobileNet-v1的改进,主要思想是:将MobileNet-1的dw层分解层两个3×1和1×3的dw层,这样 第一层之后就采用pooling,从而减少第二层的计算量。EffNet比MobileNet-v1和ShuffleNet-v1模型更小,进度更高。

8. EfficientNet

研究网络设计时在depth, width, resolution上进行扩展的方式,以及之间的相互关系。可以取得更高的效率和准确率。

9. ResNet

VGG证明更深的网络层数是提高精度的有效手段,但是更深的网络极易导致梯度弥散,从而导致网络无法收敛。经测试,20层以上会随着层数增加收敛效果越来越差。ResNet可以很好的解决梯度消失的问题(其实是缓解,并不能真正解决),ResNet增加了shortcut连边。

10. ResNeXt

基于ResNet和Inception的split+transform+concate结合。但效果却比ResNet、Inception、Inception-ResNet效果都要好。可以使用group convolution。一般来说增加网络表达能力的途径有三种:1.增加网络深度,如从AlexNet到ResNet,但是实验结果表明由网络深度带来的提升越来越小;2.增加网络模块的宽度,但是宽度的增加必然带来指数级的参数规模提升,也非主流CNN设计;3.改善CNN网络结构设计,如Inception系列和ResNeXt等。且实验发现增加Cardinatity即一个block中所具有的相同分支的数目可以更好的提升模型表达能力。

11. DenseNet

DenseNet通过特征重用来大幅减少网络的参数量,又在一定程度上缓解了梯度消失问题。

12. SqueezeNet

提出了fire-module:squeeze层+expand层。Squeeze层就是1×1卷积,expand层用1×1和3×3分别卷积,然后concatenation。squeezeNet参数是alexnet的1/50,经过压缩之后是1/510,但是准确率和alexnet相当。

13. ShuffleNet系列

V1

通过分组卷积与1×1的逐点群卷积核来降低计算量,通过重组通道来丰富各个通道的信息。Xception和ResNeXt在小型网络模型中效率较低,因为大量的1×1卷积很耗资源,因此提出逐点群卷积来降低计算复杂度,但是使用逐点群卷积会有副作用,故在此基础上提出通道shuffle来帮助信息流通。虽然dw可以减少计算量和参数量,但是在低功耗设备上,与密集的操作相比,计算、存储访问的效率更差,故shufflenet上旨在bottleneck上使用深度卷积,尽可能减少开销。

V2

使神经网络更加高效的CNN网络结构设计准则:

输入通道数与输出通道数保持相等可以最小化内存访问成本

分组卷积中使用过多的分组会增加内存访问成本

网络结构太复杂(分支和基本单元过多)会降低网络的并行程度

element-wise的操作消耗也不可忽略

14. SENet

15. SKNet

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

卷积神经网络结构发展整理(全)相关推荐

  1. 卷积神经网络结构优化综述

    卷积神经网络结构优化综述 人工智能技术与咨询 来源:<自动化学报> ,作者林景栋等 摘 要 近年来,卷积神经网络(Convolutional neural network,CNNs)在计算 ...

  2. 几种常见卷积神经网络结构

    卷积神经网络 图像特征的提取与分类一直是计算机视觉领域的一个基础而重要的研究方向.卷积神经网络( Convolutional Neural Network,CNN) 提供了一种端到端的学习模型,模型中 ...

  3. 信号处理之卷积神经网络结构

    信号处理之卷积神经网络结构 图像特征的提取与分类一直是计算机视觉领域的一个基础而重要的研究方向.卷积神经网络( Convolutional Neural Network,CNN) 提供了一种端到端的学 ...

  4. 【卷积神经网络结构专题】经典网络结构之VGG(附代码实现)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第三篇文章,前面我们先后介绍了LeNet和A ...

  5. 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义 ...

  6. 【卷积神经网络结构专题】一文详解LeNet(附代码实现)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 近期,公众号将推出卷积神经网络结构系列专题文章,将深入浅出的为大家介绍从1998年 ...

  7. 深度学习之卷积神经网络(2)卷积神经网络结构

    深度学习之卷积神经网络(2)卷积神经网络结构 1. 单通道输入和单卷积核 2. 多通道输入和单卷积核 3. 多通道输入.多卷积核 4. 步长 5. 填充  卷积神经网络通过充分利用局部相关性和权值共享 ...

  8. 机器学习——深度学习之卷积神经网络(CNN)——LeNet卷积神经网络结构

    目录 一.卷积神经网络 1.卷积神经的作用 2.LeNet 1)数据库准备--minst 2)模型· 二.关于卷积神经网络结构的一些术语定义 1.特征图(Feature map) 2.height(长 ...

  9. 深度学习 | MATLAB实现CNN卷积神经网络结构及参数概述

    深度学习 | MATLAB实现CNN卷积神经网络结构及参数概述 目录 深度学习 | MATLAB实现CNN卷积神经网络结构及参数概述 基本介绍 模型描述 训练过程 计算函数 参考资料 基本介绍 卷积神 ...

最新文章

  1. 成功的产品 = 做得好 + 卖得好
  2. Eclipse中快速为类提供构造器、get()、set()方法、重写toString()、hasCode()、equals()等
  3. vim 格式化json
  4. pyspark的rdd直接写入mysql
  5. python添加时间戳_在python中添加时间戳
  6. LeetCode 265. 粉刷房子 II(DP)
  7. RuoYi-Cloud 进阶篇_01( Seata 单机环境搭建)
  8. Tableau可视化学习笔记:day13-14
  9. mysql索引数据结构图解_干货:mysql索引的数据结构
  10. HorizontalScrollView实现侧滑效果
  11. OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章)和varying,uniform,attribute修饰范围...
  12. STM32CubeIDE 下载与安装步骤(一)
  13. 金仓数据库KingbaseES数据库概念(六)--数据库对象管理
  14. The captain题目回顾
  15. MongoDB数据库开发环境搭建与配置,Windows环境下
  16. .NET平台机器学习资源汇总,有你想要的么?(转)
  17. 刘天栋:开源是打破内卷的最好方式
  18. JAVA SE程序设计及实践
  19. 考研数学-三角函数与反三角函数图像
  20. Oracle的dual是什么东西啊

热门文章

  1. java实现快速读取文件内容
  2. rational java_Java初学-Rational类
  3. 毕业设计 单片机循迹机器人小车
  4. LeetCode659:分割数组为连续子序列
  5. 通过 html2canvas对video视频点击按钮进行截取视频图片,获取base64图片
  6. python 小说下载_Python下载网络小说实例代码
  7. MySQL 实战总结:MySQL 元数据锁(MDL)
  8. 基因间相互作用、基因与GO之间的关系怎么查?
  9. <a>标签(超链接)
  10. window.print打印时设置打印布局(纵向、横向)