inception v1 v2 v3 v4总结

    xiaoxiao2023-10-26  184

    转载于:https://blog.csdn.net/qq_14845119/article/details/73648100

    Inception v1的网络

    主要提出了Inceptionmodule结构(1*1,3*3,5*5的conv和3*3的pooling组合在一起),最大的亮点就是从NIN(Network in Network)中引入了1*1 conv,结构如下图所示,代表作GoogleNet。它能够适应不懂窗口的目标。

    假设previous layer的大小为28*28*192,则,

    a的weights大小,1*1*192*64+3*3*192*128+5*5*192*32=387072

    a的输出featuremap大小,28*28*64+28*28*128+28*28*32+28*28*192=28*28*416

    b的weights大小,1*1*192*64+(1*1*192*96+3*3*96*128)+(1*1*192*16+5*5*16*32)+1*1*192*32=163328

    b的输出feature map大小,28*28*64+28*28*128+28*28*32+28*28*32=28*28*256

    写到这里,不禁感慨天才般的1*1 conv,从上面的数据可以看出一方面减少了weights,另一方面降低了dimension。

    Inception v1的亮点总结如下:

    (1)卷积层共有的一个功能,可以实现通道方向的降维和增维,至于是降还是增,取决于卷积层的通道数(滤波器个数),在Inception v1中1*1卷积用于降维,减少weights大小和feature map维度。

    (2)1*1卷积特有的功能,由于1*1卷积只有一个参数,相当于对原始feature map做了一个scale,并且这个scale还是训练学出来的,无疑会对识别精度有提升。

    (3)增加了网络的深度

    (4)增加了网络的宽度

    (5)同时使用了1*1,3*3,5*5的卷积,增加了网络对尺度的适应性

    下图为googlenet网络结构:

    这里有2个地方需要注意:

    (1)整个网络为了保证收敛,有3个loss

    (2)最后一个全连接层之前使用的是global average pooling,全局pooling使用的好了,还是有好多地方可以发挥的  

     Inception v2网络

    Inception v2的网络,代表作为加入了BN(Batch Normalization)层,并且使用2个3*3替代1个5*5卷积的改进版GoogleNet。

    Inception v2的亮点总结如下:

    (1)加入了BN层,减少了InternalCovariate Shift(内部neuron的数据分布发生变化),使每一层的输出都规范化到一个N(0, 1)的高斯,增加了模型的鲁棒性,可以以更大的学习速率训练,收敛更快,初始化操作更加随意,同时作为一种正则化技术,可以减少dropout层的使用。

    (2)用2个连续的3*3 conv替代inception模块中的5*5,从而实现网络深度的增加,网络整体深度增加了9层,缺点就是增加了25%的weights和30%的计算消耗。

    Inception v3网络

    nception v3网络,主要在v2的基础上,提出了卷积分解(Factorization),代表作是Inceptionv3版本的GoogleNet。

    Inception v3的亮点总结如下:

    (1) 将7*7分解成两个一维的卷积(1*7,7*1),3*3也是一样(1*3,3*1),这样的好处,既可以加速计算(多余的计算能力可以用来加深网络),又可以将1个conv拆成2个conv,使得网络深度进一步增加,增加了网络的非线性,更加精细设计了35*35/17*17/8*8的模块。

    (2)增加网络宽度,网络输入从224*224变为了299*299。

    Inception v4网络

    Inception v4主要利用残差连接(Residual Connection)来改进v3结构,代表作为,Inception-ResNet-v1,Inception-ResNet-v2,Inception-v4

    resnet中的残差结构如下,这个结构设计的就很巧妙,简直神来之笔,使用原始层和经过2个卷基层或者3个卷积层的feature map做Eltwise。

    首先介绍几个概念,左边的3*3+3*3(ResNet18,ResNet34)和1*1+3*3+1*1(ResNet50,ResNet101,ResNet152)称为瓶颈单元(bootlenect,因为输入为256,中间为64,输出为256,宽窄宽的结构,像瓶子的颈部)。右面的直线,有的实现是直线中有1*1卷积,称为shortcut。整个bootlenect+shortcut称为Residual uint。几个Residual uint的叠加称为Residual block。Resnet结构都是由4个Residual block组成的。

    Inception-ResNet的改进就是使用上文的Inception module来替换resnet shortcut中的bootlenect。  

    Inception v4的亮点总结如下:

    (1)将Inception模块和ResidualConnection结合,提出了Inception-ResNet-v1,Inception-ResNet-v2,使得训练加速收敛更快,精度更高。

    ILSVRC-2012测试结果如下(single crop),

    (2)设计了更深的Inception-v4版本,效果和Inception-ResNet-v2相当。

    (3)网络输入大小和V3一样,还是299*299

     

    最新回复(0)