CNN经典网络:Inception系列

InceptionV1

论文:https://arxiv.org/pdf/1409.4842.pdf
代码:参考Tensorflow/slim

特点

  • 用多个尺度的卷积核组合来获得不同大小的感受野,最后拼接成不同尺度的融合,来近似局部最优的结构;
    在这里插入图片描述

如图 3.7 所示,卷积核大小分别采用 1, 3 和 5,设定卷积步长为 1 后,只要设定填充分别为 0、 1、 2,卷积和得到相同维度的特征,就可以拼接在一起了,比如前一层输入为 100x100,那么经过 1x1 卷积核得到( 100-1) /1+1=100,100x100feature map; 经过 3*3 卷积核得到(100-3+1x2) /1+1=100,也是 100x100的 feature map ; 经 过 5x5 卷 积 核 得 到 ( 100-5+2x2 ) /1+1=100 ; 仍 然 是100x100feature map;

在这里插入图片描述

借鉴 NIN 中 11 卷积核来进行降维,比如前一层输入为 100x100x128,要经过 256 个 55 卷 积 层 ( 步 长 为 1 , 填 充 为 2 ); 那 么 需 要 的 参 数 为128x5x5x256=819200;而如果先经过 32 个 1x1 卷积层,再经过 256 个 5x5 卷积层 , 那 么 得 到 的 输 出 仍 然 是 100x100x256 , 但 是 需 要 的 参 数 就 变 成 了128x1x1x32+32x5x5x256=208896,参数大大减少了,在 GoogleNet 中运用的就是增加了 1x1 卷积核的模块

  • 采用模块化的结构,便于增添和修改;
  • 借鉴 NIN 的思想用全局均匀池化来代替全连接层;但是最后还是加了一个全连接层,方便微调;
  • 增加了 2 个辅助的 softmax 分类器用于向前传导梯度。

网络结构

在这里插入图片描述

  • 第一个卷积层输入数据为 224x224x3,卷积核为 7x7,步长为 2,填充为 3,因此输出为(224-7+2x3+1) /2=112,得到 112x112,经过 3x3 Max pooling, 步长为 2,填充为 1,得到(112+2x1-3+1) /2=56, 56x56 的 feature map;
  • 第二、三个卷积层先经过 11 降维再经过 33 卷积层得到(56+1x2-3)/1=56,56x56 尺寸特征映射经过 3x3Max pooling, 得到(56+2x1-3+1) /2=28,得到 28x28的 feature map, 送入模块;
  • 第一个 Inception 模块,输入数据为 28x28x192,经过 4 条支线,
    • 第一部分, 1x1 卷积层,输出(28-1+1) =28,输出为 28x28x64;
    • 第二部分,先经过 1x1 卷积层,输出为 28x28x96,再经过 3x3 卷积层,得到(28+1x2-3+1) =28,输出为 28x28x128;
    • 第三部分,先经过 1x1 卷积层,输出为 28x28x32,再经过 5x5 卷积层,得到(28+2x2-5+1) =28,输出为 28x28x32;
    • 第四部分, 3x3 的 pooling 层,得到(28+1x2-3+1) =2,输出为 28x28x32;因此整个模块拼接后 64+128+32+32=256,整个模块输出为 28x28x256。

InceptionV2

论文:https://arxiv.org/pdf/1502.03167.pdf
代码:参考Tensorflow/slim

特点

InceptionV2就没什么好说的了,主要就是提出了BN层,将一个batch内的数据都减去batch的均值,再除以方差,将数据拉回到了激活函数的线性区域,加速了网络的收敛速度。
贴一张BN的算法伪代码在这里插入图片描述

网络结构

就是加了BN层,其他基本一样。

InceptionV3

论文:https://arxiv.org/pdf/1512.00567.pdf
代码:Tensorflow/slim

特点

主要是通过集中卷积分解的方式

  • 使用两个3x3卷积核代替5x5卷积核,三个3x3卷积核代替7x7卷积核,减少参数量,加快计算。(两个3x3与一个5x5作用是一样的,其感受野都是5)
    在这里插入图片描述
  • 进一步将nxn卷积核分解为1xn和nx1卷积核:
    在这里插入图片描述
  • 一维卷积进一步加宽:
    在这里插入图片描述
  • 增加通道数时减少网格宽度
    在这里插入图片描述

网络结构

在这里插入图片描述
上述几种Inception模块的级联。

InceptionV4

论文:https://arxiv.org/pdf/1602.07261.pdf
代码:Tensorflow/slim

特点

基于inception v3的基础上,引入残差结构,提出了inception-resnet-v1和inception-resnet-v2,并修改inception模块提出了inception v4结构。基于inception v4的网络实验发现在不引入残差结构的基础上也能达到和inception-resnet-v2结构相似的结果,从而认为何凯明等人认为的:“要想得到深度卷积网络必须使用残差结构”这一观点是不完全正确的。

网络结构

InceptionV4和Inception-ResNet-v2网络的输入部分
在这里插入图片描述

InceptionV4

  • Inception-A block
    在这里插入图片描述
  • Inception-B block

在这里插入图片描述

  • Inception-C block
    在这里插入图片描述
  • Ruduce-A
    在这里插入图片描述
  • Ruduce-B
    在这里插入图片描述
  • All
    在这里插入图片描述

Inception-ResNet-v1

  • Input
    在这里插入图片描述
  • Inception-ResNet-v1-A在这里插入图片描述
  • Inception-ResNet-v1-B
    在这里插入图片描述
  • Inception-ResNet-v1-C
    在这里插入图片描述
  • Inception-ResNet-v1-Rudece-B
    在这里插入图片描述
  • All
    在这里插入图片描述

Inception-ResNet-v2

  • Inception-ResNet-v1-A
    在这里插入图片描述
  • Inception-ResNet-v1-B
    在这里插入图片描述
  • Inception-ResNet-v1-C
    在这里插入图片描述
  • Inception-ResNet-v1-Rudece-B
    在这里插入图片描述

对比

  • 在inception-resnet-v1与inception v3的对比中,inception-resnet-v1虽然训练速度更快,不过最后结果有那么一丢丢的差于inception v3;
  • 在inception-resnet-v2与inception v4的对比中,inception-resnet-v2的训练速度更块,而且结果比inception v4也更好一点。所以最后胜出的就是inception-resnet-v2。
    在这里插入图片描述

版权声明:本文为qq_39382877原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。