Inception系列之Inception_v1

 

 Inception系列之Inception_v2-v3html

Inception系列之Batch-Normalization网络

目前,神经网络模型为了获得更好的效果,愈来愈深和愈来愈宽的模型被提出。然而这样会带来如下几个问题:google

    1)参数量,计算量愈来愈大,在有限内存和算力的设备上,其应用也就越难以落地。orm

    2)对于一些数据集较少的场景,太大的模型反而容易过拟合,但模型过小则泛化能力不够。htm

    3)容易出现梯度消失的问题。blog

 

    解决这些问题比较直观的方法就是采用稀疏链接来代替全链接层,但很明显,因为底层是经过矩阵计算的,稀疏链接在参数量上减小了,但并无减小计算量。内存

  所以,google提出了Inception系列Inception_v1 ….Inception_v4,使得模型在增长深度和宽度时不会带来参数量的巨大增长,同时也保证了计算量。get

 

    Inception体系结构的主要思想是考虑如何才能经过容易得到的密集组件来近似和覆盖卷积视觉网络的最佳局部稀疏结构。假设平移不变意味着网络将由卷积块构建,那咱们所须要的只是找到最佳的局部构造并在空间上进行重复,最后将它们汇集在一块儿进行输出。为此,刚开始google提出了以下图Figure 1所示的结构io

 

 Figure 1:这里的Filter concatenation是指在通道上叠加。table

 

  正如每一个卷积块表明一块局部区域,在高层的空间集中度将下降(换句话说,感觉野增大),这代表在高层将须要尽量多的使用3x3, 5x5卷积核。所以这个原始版本的Inception模块将会产生一个问题,因为每层都是在通道上堆叠累加,所以在高层时通道数将很是大,即使是少许的5x5的卷积核,也可能在高层带来巨大的计算量,而加入池化层一样会增长巨大的计算量。

    所以,第二个想法为减小通道数。Inception_V1采用了Network-in-Network 中提到的使用1x1 卷积来改变通道数的方法,提出在3x3或5x5卷积前先进行1x1卷积,减小通道数。

    其结构图Figure 2以下:

 

 

  下面的例子说明添加了1x1卷积是如何减小参数的。假设Previous layer为112x112x64, 1x1的尺寸为1x1x64, 取32个这样的1x1x64卷积。而输出的尺寸为112x112x128。则使用1x1卷积后的参数为64x1x1x32+32x5x5x128 = 104448, 而在此以前须要的参数量为64x5x5x128 = 204800,减小了将近一倍的参数。这里减小的倍数接近等于输入通道数与1x1的数量的比值。

    这个结构比较有用的一个方面是,经过1x1卷积的引入,即使在每层显著地增长了单元的数量,也不会在后面的层中形成没法控制的计算量。论文中提到,这个结构比那些非Inception模型快了3-10倍,虽然在精度上比别的模型可能差一点点,但计算量却少了很是多。

 

    完整的网络结构图table 1以下:

 

 table 1: 这里的3x3 reduce,5x5 reduce指的是在其前面添加了1x1。

    其结构图以下:

 

 

Figure3:

      (1)图中有3个softmax输出位置,有两个是在中间位置,这样方便在中间层输出分类,同时经过加权(中间0.3)的方式加到最终的分类结果中。同时,还能给模型增长反向传播的梯度信号,缓解了梯度消失问题,在必定程度上也有正则化的效果。在推理阶段,这两个softmax将会去除。

      (2)使用了平均池化来代替全链接层,论文提到这样能够提升0.6%的准确率,但仍是添加了一层FC,这是为了方便对输出进行调整,而且也使用了Dropout。

      (3)关于table1中的Inception 3a 3b 4a 4b 4c等,区分方式是汇合的MaxPool层和DepthConcat。

      (4)图像输入都通过了去均值,即每一个位置减去总体均值。

 

若有错误或不合理之处,欢迎在评论中指正。

欢迎关注公众号“CV技术指南”,主要进行计算机视觉方向的论文解读,最新技术跟踪,以及CV技术的总结。

 

相关文章
相关标签/搜索