1 Lenet

7层:卷积+下采样+卷积+下采样+全连接+全连接+全连接
可以很好的进行数字识别
第一次运用卷积神经网络
参考:(39条消息) 详解深度学习之经典网络架构(一):LeNet_chenyuping333的博客-CSDN博客_lenet网络结构详解
https://blog.csdn.net/chenyuping333/article/details/82177677

1 Alexnet

5层卷积+3层全连接

参考:
(39条消息) 图像识别-AlexNet网络结构详解_算法之美-CSDN博客_alexnet网络结构详解
https://blog.csdn.net/weixin_44222014/article/details/106250687

3 VGG16

13个卷积层+3个全连接层

4 GoogleNet模块化的开端

(1) 最终的架构包含了这些叠在一起的初始模块的多个。甚至在GoogleNet中,训练也略有不同,因为大多数最顶层都有自己的输出层。这种细微差别有助于模型更快地收敛,因为对于层本身有联合训练和并行训练。

(2) 在 GoogLeNet 上开始出现了分支,而不是一条线连到底,这是最直观的差异,也被称作 Inception module,如下图所示。从图中可以看到, 每个 module 中采用了不同 size 的 kernel,然后在将特征图叠加(用的是通道维度的结合,不是相加),实际上起到了一个图像金字塔的作用,即 所谓的 multiple resolution。

(3) 有很多 1x1 的卷积核,这里的1x1的卷积操作与之前讲到是不一样的,这里利用它来改变 output 的 channel, 具体说这里是减少 channel 数,从而达到减少计算的目的。

(4) 用 Global Ave Pool 取代 FC。下图可以看到,对于 FC ,超参数的个数为 7x7x1024x1024=51.3M,但是换成 Ave Pool之后,超参数变为0,所以这里可以起到防止过拟合的作用,另外作者发现采用 Ave Pool 之后,top-1的精度提高了大概0.6%。但是需要注意的是,在 GoogLeNet 中并没有完全取代 FC。

(5) 采用了辅助分类器。整个模型有三个 output(之前的网络都只有一个 output),这里的多个 output 仅仅在训练的时候用,也就是说测试或者部署的时候仅仅用最后一个输出。在训练的时候,将三个输出的loss进行加权平均,weight=0.3, 通过这种方式可以缓解梯度消失,同时作者也表示有正则化的作用。其实这个思想有点类似于传统机器学习中的投票机制,最终的结果由多个决策器共同投票决定,这个在传统机器学习中往往能提升大概2%的精度。

[1] (39条消息) 深度学习中的经典基础网络结构(backbone)总结_生命在于折腾!-CSDN博客_backbone网络
https://blog.csdn.net/kuweicai/article/details/102789420?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_v2~rank_aggregation-4-102789420.pc_agg_rank_aggregation&utm_term=%E7%BB%8F%E5%85%B8%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%A8%A1%E5%9E%8B%E7%BB%93%E6%9E%84%E6%80%BB%E7%BB%93&spm=1000.2123.3001.4430

5 Resnet

(1) 我们之前提 ResNet 将深度学习推到了新的高度,因为它首次将错误率降到比人类还低的水平,网络深度甚至达到1202层,所以它具有里程碑式的意义。文章中作者提出了多种不同深度的结构,其中50,101和152层的网络后来用的比较多。

(2) ResNet 的核心思想是采用了 identity shortcut connection。前面我们提到,已经得出了结论,加深网络深度有助于提高模型精度,那什么不直接干到几千几万层?这里的原因很多,抛开计算资源和数据集的原因,还有一个很重要的原因是梯度消失。在最开始,比如在 LeNet 那个年代,也就几层网络,当网络更深的时候便会出现精度不升反降的现象,后来我们知道是因为梯度下降导致学习率下降甚至停滞,而到了 VGG 和 GoogLeNet 的年代,我们有了 ReLU,有了更好的初始化方法,有了 BN,但是如下面第一幅图所示,当深度达到50多层时,问题又出现了了,所以激活函数或者初始化方法仅仅是缓解了梯度消失,让网络的深度从几层推移到了二十多层,而如何让网络更深,正是 ResNet 被提出的原因。GoogLeNet 中我们提到采用辅助分类器的方式来解决梯度消失的问题,而 ResNet 是另一种思路,虽然这个思路并非由凯明首创,但是确实取得了很好的效果。

(3) 下图对比了 VGG-19 和 34层的 ResNet,可以看到 ResNet 的 kernel channel 比 VGG-19 少很多,另一个就是 ResNet 中已经没有 FC 了, 而是用的 Ave Pool,这点在 GoogLeNet 中已经提到过。下面的 VGG-19 的 FLOPs 是 19.6 biliion, 而下面的 34 层的 ResNet 仅仅只有3.6 billion,即使是152层的 ResNet152 也才 11.6 billion。另外还可以发现在 ResNet 中只有开头和结尾的位置有 pooling 层,中间是没有的,这是因为 ResNet 中间采用了 stride 为2的卷积操作,取代了 pooling 层的作用

(4)另外上图中需要注意的是,shortcut 有虚线和实线之分,实际上虚线的地方是因为用了 stride 为2的conv,因此虚线连接的 input 和 output 的 size 是不一样大的,因此没法直接进行 element wise addition,所以虚线表示并非是直接相连,而是通过了一个 conv 去完成了 resize 的操作,是相加的两个输入有相同的 size。
还一点是,之前在 VGG 和 GoogLeNet 中都采用3x3的conv,但是我们看到在 ResNet 中又用回了7x7的 conv。上图中 VGG-19用的4个 3x3, 而 ResNet 用的一个 7x7, 我觉得主要还是因为 ResNet 的 channel 数比较小,因此大的 kernel size 也不会使计算量变的很大(和 VGG-19 的4个 conv 比,计算量更小),而且可以获得较大的感受野。

(5)两个特征图用的是相加,GoogleNet用的是拼接

[1] (39条消息) 深度学习中的经典基础网络结构(backbone)总结_生命在于折腾!-CSDN博客_backbone网络
https://blog.csdn.net/kuweicai/article/details/102789420?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_v2~rank_aggregation-4-102789420.pc_agg_rank_aggregation&utm_term=%E7%BB%8F%E5%85%B8%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%A8%A1%E5%9E%8B%E7%BB%93%E6%9E%84%E6%80%BB%E7%BB%93&spm=1000.2123.3001.4430

6 轻量化网络实现

7 Squeezenet

通过改变卷积核大小,来降低参数量,实际上计算量没有改变

SqueezeNet 的主要思想如下:

(1)多用 1x1 的卷积核,而少用 3x3 的卷积核。因为 1x1 的好处是可以在保持 feature map size 的同时减少 channel。
(2)在用 3x3 卷积的时候尽量减少 channel 的数量,从而减少参数量。
(3)延后用 pooling,因为 pooling 会减小 feature map size,延后用 pooling, 这样可以使 size 到后面才减小,而前面的层可以保持一个较大的 size,从而起到提高精度的作用。

8 Mobilenet(深度可分离卷积)

用了两步,进下了卷积方面的优化
第一步33进行分组卷积,不改变通道数,参数量331输入channel
第二步11 进行卷积,改变通道数参数量11输入channel输出channel
传统的参数量 33输入channel*输出channel

(1)MobileNet 是通过优化卷积操作来达到轻量化的目的的,具体来说,文中通过 Deepwise Conv(其实是Deepwise Conv + Pointwise Conv)代替原始的卷积操作实现,从而达到减少计算的目的(通常所使用的是 3×3 的卷积核,计算量会下降到原来的九分之一到八分之一)。如下图所示。
(2)这一变换来达到减少参数量和计算量的目的。



9 ShuffleNet(分组卷积)

ShuffleNet 是 Xiangyu Zhang(旷视)等人于2017年在 ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices 中提出来的。ShuffleNet 的核心思想是对卷积进行分组,从而减少计算量,但是由于分组相当于将卷积操作局限在某些固定的输入上,为了解决这个问题采用 shuffle 操作将输入打乱,从而解决这个问题。

12 注意力机制模型Residual Attention Network

注意力就是为正常的CNN前馈过程加一层权重(可以是对应每层CNN),但是没想到本文还融入了残差设计,并解释了为什么只添加mask在深层之后会导致性能下降。
[1] [论文笔记] Residual Attention Network - 知乎
https://zhuanlan.zhihu.com/p/128977244

二 目标识别

1 Faster-RCNN

2 YOLOV4

深度学习网络结构大全相关推荐

  1. 跨年之际,中文版畅销书《TensorFlow深度学习实战大全》分享,直接送!

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 跨年之际,给大家一份福利,赠书抽奖,一共4本!感兴趣的同学可以参与一下,奖品是新书&l ...

  2. 深度学习损失函数大全

    深度学习损失函数大全 比focal loss好的GHM 常见损失函数汇总 - 知乎 有图展示,效果还可以: 激活函数/损失函数汇总 - 知乎 这个也不错: 损失函数汇总(全网最全) - WSX_199 ...

  3. Github 上近万星的深度学习模型大全!

    点击我爱计算机视觉标星,更快获取CVML新技术 今天跟大家分享一个Github上的热门项目,深度学习模型大全: https://github.com/rasbt/deeplearning-models ...

  4. 【总目录】人工智能、机器学习、深度学习总结大全----目录.未完待续...

    文章目录 @[toc] 一.Python 二.爬虫 三.Mysql 四.MongoDB 五.Numpy 六.Scipy 七.Pandas 八.其他常用工具 九.可视化工具Matplotlib 十.数理 ...

  5. 图解3种常见的深度学习网络结构:FC、CNN、RNN

    导读:深度学习可以应用在各大领域中,根据应用情况的不同,深度神经网络的形态也各不相同. 常见的深度学习模型主要有全连接(Fully Connected,FC)网络结构.卷积神经网络(Convoluti ...

  6. c++ 实现深度学习网络结构【附源码】

    文章目录 前言 一.基本函数定义 1.高低配置电脑一些不同 2.数字转换成字符串 3.将两个字符串相连 二.数据加载 1.结构体设计 2.读取图像 3.读取标签 4.将结构体图像转为图片文件 三.矩阵 ...

  7. 收藏 | 深度学习损失函数大全(附代码实现)

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 来源:机器学习与数学 Tensorflow 和 PyTorch 很多都是相似的,这里以 PyT ...

  8. 干货丨2017年AI与深度学习要点大全

    2017已经正式离我们远去~ ~ ~ 博客WILDML的作者.曾在Google Brain做了一年Resident的Denny Britz,就把他眼中的2017年AI和深度学习的大事,进行了一番梳理汇 ...

  9. 新年快乐!这是份值得收藏的2017年AI与深度学习要点大全

    若朴 夏乙 编译自 WILDML 量子位 出品 | 公众号 QbitAI 2017已经正式离我们远去. 过去的一年里,有很多值得梳理记录的内容.博客WILDML的作者.曾在Google Brain做了 ...

最新文章

  1. 经典 | 深度学习的7大实用技巧
  2. php fatal class ziparchive not found,php中Fatal error: Class ZipArchive not found的解决办法
  3. scikit-learn kmeans++
  4. WPF新手实践7:MVVM Light Toolkit(七、Messenger)
  5. 如何判断是否丢掉用户请求
  6. 深度解密Go语言之pprof
  7. halcon模板匹配学习(一) Matching 初印象
  8. Codeforces Global Round 12 D. Rating Compression 思维 + 贪心
  9. 索引---B+Tree
  10. 如何查看服务器文件进程,如何查看服务器上的所有进程
  11. linux搜索含多个字符串,关于linux:使用grep搜索多个字符串
  12. H3C DHCP特点
  13. vSAN其实很简单-Quickstart是一件很炫的东西
  14. Web前端JavaScript笔记(7)ECMA6新增数组方法
  15. 手把手教你由TensorFlow上手PyTorch(附代码)
  16. win10系统开启扫描仪服务器,win10通用扫描仪安装步骤
  17. python下拉框二级联动_Excel数据规范输入技巧 | 二级联动下拉菜单
  18. 高效实现统计分析(按日,月,周)查询功能
  19. 【obs】libobs-winrt :CreateDispatcherQueueController
  20. UDP重传,似牛非马。。。

热门文章

  1. 外地户籍应届毕业生落户上海申请及办理流程(2017更新)
  2. python int 函数用法
  3. spark hint中Broadcast Hints、COALESCE and REPARTITION Hints
  4. JavaWeb 01 JavaWeb概述
  5. Vue mounted方法中使用data变量
  6. windows10添加开机自启动项在哪设置?电脑开机自启动怎么设置
  7. 强化学习:Actor-Critic、SPG、DDPG、MADDPG
  8. compareAndSwapObject
  9. 厉害了!这群95后正在用三维成像技术让科幻变成现实
  10. 网络基础--搭建一个简单的网络