写在前面:此文只记录了下本人感觉需要注意的地方,不全且不一定准确。详细内容可以参考文中帖的链接,比较好!!!

经典的CNN:Inception v1\v2\v3\v4、Resnet、Resnext、DensNet、SeNet…
1、时间轴

2、关于模型改进的一些总结:
1. Inception系列,从网络宽度角度入手。v1提出了1种Inception结构;v2提出BN;v3提出使用 3x3 卷积核代替 5x5 和 7x7、分解卷积核 nxn->1xn,nx1;v4提出3种Inception结构。
2. Resnet,从网络深度角度入手,提出参差结构
3. Resnext,从宽度和深度两方面入手,提出cardinality【组卷积】
4. Densenet,将每层都与输入层和loss层相连
5. Senet,attention应用在feature map的channel上

文章目录

  • 1. AlexNet
  • 2. VGG16
  • 3. Inception v1
  • 2. Inception v2
  • 3. Inception v3
  • 4. Inception v4
  • 5. ResNet
  • 6. ResNext
  • 7. DenseNet
  • 8. SENet

1. AlexNet

参考:卷积神经网络之AlexNet

  • Alexnet的特点
  1. 更深的网络结构
  2. 使用层叠的卷积层,即卷积层+卷积层+池化层来提取图像的特征
  3. 使用Dropout抑制过拟合
  4. 使用数据增强Data Augmentation抑制过拟合
  5. 使用Relu替换之前的sigmoid的作为激活函数
  6. 多GPU训练

2. VGG16

参考:深入理解VGG16模型

  • VGG16特点:
  1. 通过增加深度(3x3卷积代替)和宽度(高维通道数)能有效地提升性能;
  2. 最佳模型:VGG16,从头到尾只有3x3卷积与2x2池化,简洁优美;
  3. 卷积可代替全连接,测试阶段可适应各种尺寸的图片。

3. Inception v1

  1. 11卷积核作用:
    a) 整合多通道信息,而不会改变输入大小(14
    146->1414);
    b) 升降维,可以任意增减输出的通道数;
    c) 减少计算量
  2. inception block结构作用:用1*1卷积核降低参数量,比常规低了78倍
  3. 辅助分类器(拿中间的输出去做回归):更有效回传梯度,扮演regularizer角色(训练初期无明显作用,训练结束时开始有用)
  4. 使用average pooling代替全连接层,减少参数


    Inception v1参考

2. Inception v2

  1. 相比于Inception v1,加入了BN层减少Internal Covariate Shift问题。
    (Internal Covariate Shift:在训练过程中,随着各层参数的不断变化,各层的输出会向某一个趋势不断变化,即隐层的输入分布也会向某一个趋势在不断变化,会越来越接近激活函数的两端值,导致产生梯度消失,模型收敛速度变慢,难以训练,这个就叫Internal Covariate Shift。)

3. Inception v3

  1. 卷积核分解:
    a) 用两个3∗33*33∗3卷积核代替5∗55*55∗5,减少了28%的计算量
    b) 用1∗31*31∗3 和3∗13*13∗1代替一个3∗33*33∗3,节省33%(12-20层加较好)
  2. 减小feature map的size,增加channel保持信息无损
    Inception v3参考

4. Inception v4

  1. 提出了3种Inception module,三种模块间有Reduction模块起pool作用;
  2. 同时借鉴了Resnet的参差结构,在Inception v3/v4加入了参差结构
    Inception v4参考

5. ResNet

  1. 为什么ResNet可以解决“随着网络加深,准确率不下降”的问题:答:理论上,Resnet提供了两种选择方式,也就是identity mapping 和 residual mapping,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。
  2. ResNet的两种设计:
  3. bottleneck design中1∗11*11∗1的作用:
    a)减少计算与参数量(约17倍)
    b)神经网络层数曾多,可以更好的拟合非线性模型
    ResNet

6. ResNext

  1. 在resnet的基础上,借助Inception的splite-transform-merge思想,将参差结构扩展成 cardinality,其中每一个子结构都相同,改善了Inception模型超参数较多,鲁棒性较差,精度方面较Resnet有提高。
    Resnext

7. DenseNet

核心:create short paths from early layers to later layers

  1. DenseNet 的本质:每一层的输入均来自前面所有层的输出

  2. DenseNet-BC网络结构
    DenseNet-BC 较 DenseNet 多了 bottleneck layer(B)和 Translation layer(C),接下来详细介绍一下两者的作用:

    • bottleneck layer 即 Dense Block中的1∗11*11∗1卷积,可以大大减少计算量。以 DensNet-169 中的 Dense Block(3)为例,第 32 层的输入为前 31 层输出进行concat,如果不做 bottleneck layer ,假设每层输出的channel 为 32(growth rate,文中超参),则第 32 层的输入为32 * 31 + 上一个transition layer的输出channel (合共约1000)。如果做 bottleneck layer ,1∗11*11∗1 的channel 为 128(growth rate*4),大大减少了计算量;
    • transition layer,也是用来减少计算量的。还拿 DensNet-169 中的 Dense Block(3)为例,第32层的输出为32(growth rate),concate前31层的输出及上个Dense Block的输出为此Dense Block的输出(channel也是1000左右),transition layer有个参数reduction(范围是0到1),表示将这些输出缩小到原来的多少倍,默认是0.5,这样传给下一个Dense Block的时候channel数量就会减少一半,这就是transition layer的作用。文中还用到dropout操作来随机减少分支,避免过拟合。
  3. DenseNet的优点:
    a. 减轻了梯度消失:DenseNet网络的设计相当于将每一层的input和loss直接相连。
    b. 极致利用feature达到更好的效果
    c. 一定程度上减少了参数量及防治过拟合(bottleneck layer,Translation layer以及较小的growth rate选择)
    DenseNet参考

8. SENet

核心:对特征的通道之间加入类似attention机制考虑

  1. se block原理图:
    a. Squeeze:对channel进行了squeeze,通过ave pooling 将feature map([W, H, C])变为[1,1,C]。【顺着空间维度进行压缩,将每个二维的特征通道[W,H]变成一个实数,该实数某种程度上具有该通道全局的特征】
    b. Excitation:对得到的squeeze后的feature map,使用sigmoid函数进行excitation,得到每个通道的权重
    c. Reweight:根据b得到的权重与原feature map加权
  2. se block结构图:
    SeNet参考

总体参考

经典卷积神经系列(Inception v1\v2\v3\v4、ResNet、ResNext、DenseNet、SENet)相关推荐

  1. PyTorch 实现经典模型7:YOLO (v1, v2, v3, v4)

    YOLO (v1, v2, v3, v4) 网络结构 YOLO v3 网络结构 代码 Ref <机器爱学习>YOLO v1深入理解 <机器爱学习>YOLOv2 / YOLO90 ...

  2. 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2

    from:https://blog.csdn.net/qq_14845119/article/details/73648100 Inception v1的网络,主要提出了Inceptionmodule ...

  3. DeepLab系列(v1,v2,v3,v3+)总结

    U-net: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation 语义分割面临的挑战 1. DeepLab ...

  4. android V1,V2,V3,V4签名详解

    前言 最近帮测试做了一点关于签名的需求,今天就和各位同学简单聊一聊关于签名的那些事儿. 如果问到 Android 为什么需要签名?大家都可能想到官网的解释: ❝ Android 系统要求所有 APK ...

  5. 论文记录1_YOLO系列(v1 v2 v3 v4)

    注:此文为阅读笔记,参考了很多论文,博客,如有侵权请联系,我附上原出处. 文章目录 准备知识: YOLO V1 创新点 grid cell 置信度 例子 网络架构 Backbone Neck Head ...

  6. UUID-五个版本-v1|v2|v3|v4|v5-使用说明

    1.UUID概要 UUID 的全称是 Universally Unique Identifier,中文为通用唯一识别码. 构成:由一组32位数的16进制数字所构成. 格式:以连字号分为五段,表现形式为 ...

  7. Android Apk签名修改V1,V2,V3,V4

    Unity游戏打出 Android Apk 包,默认签名方式是V1,V2方式的. 但是九游要求只能用V1签名方式.那就对生成的 Andorid Apk包重新签名就OK了. 改签环境 改签 Androi ...

  8. android v3签名格式,Android Apk签名修改V1,V2,V3,V4

    Unity游戏打出 Android Apk 包,默认签名方式是V1,V2方式的. 但是九游要求只能用V1签名方式.那就对生成的 Andorid Apk包重新签名就OK了. 改签环境 改签 Androi ...

  9. SQL组合查询:(字段1, 字段2) in ((v1, v2),(v3, v4))

    目录 优化前 优化后 场景:数据库表两个字段组成唯一键,需要批量用唯一键查询记录 UNIQUE KEY `uk_channel_org` (`channel`, `org`), 优化前 for (Ch ...

最新文章

  1. 目标跟踪之卡尔曼滤波---理解Kalman滤波的使用
  2. 2021年斯坦福AI指数报告重磅出炉!中国AI期刊影响力首超美国,视频处理是新风口...
  3. PythonNET网络编程3
  4. wxWidgets:wxCalculateLayoutEvent类用法
  5. leetcode 153. 寻找旋转排序数组中的最小值(二分查找)
  6. Struts2 ( 二 )
  7. 虚拟现实设备排行榜(2016年3月27日)
  8. Linux如何清除系统密码,如何消除LINUX系统密码
  9. word2vec词向量建立
  10. Java高级工程师面试题总结及参考答案
  11. 【Java面试题】这道分布式面试题一定要拿下,说说你对CAP的理解?看看高手如何回答
  12. PS 将图片渐变透明
  13. 悉尼大学的计算机专业叫什么,申请悉尼大学计算机专业怎么样?你想知道的都在这里...
  14. android的otg功能,Android实现OTG功能
  15. 浓缩书应用 Blinkist - 令人惊艳的商业策略
  16. Linux命令:ls -l(ll)结果解析
  17. PHP的电子邮件列表替代方法:使用Mailgun的List API
  18. 《别让这种习惯毁掉你的一生,改变他!》
  19. ElasticSearch实战系列02:中文+拼音混合检索,并高亮显示
  20. 系统程序员成长计划-管道过滤器(Pipe-And-Filter)模式

热门文章

  1. 【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优...
  2. .NET回归 HTML----超文本标记语言(暂时无图)
  3. mybatis的动态sql及模糊查询
  4. 服务应用监控健康检测
  5. 今天开始学习QT for sysbiam 1
  6. CROC-MBTU 2012, Elimination Round (ACM-ICPC) H DP题目
  7. 关于读《ajax后退解决方案(一)》笔记
  8. ab 服务器压力测试工具 使用详解
  9. redis 所有模糊key 查询_写完这篇Redis由浅入深剖析快自闭了!
  10. 统计学硕士做了3年表格,多次跳槽失败,只因学不会数据工具