网络结构的巧妙设计

大概内容

  • 卷积:如何减小参数个数,且效果更好
  • 池化

池化:

池化是为了将特征压缩,加快收敛,同时也较小了原始图片的效果
如一个224x224的特征,卷积之后为112x112,为了弥补代价,将深度增大两倍,即224 x 224 x C的特征,卷积之后为112 x 112 x 2C

卷积:

感受野receptive field:在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,通俗点的解释是,feature map上的一个点对应输入图上的区域
在这里插入图片描述

交换空间如上图所示,我们采用卷积核C的核大小(kernel size)k=33,填充大小(padding size)p=11,步长(stride)s=22。(图中上面一行)对55的输入特征图进行卷积生成33的绿色特征图。(图中下面一行)对上面绿色的特征图采用相同的卷积操作生成22的橙色特征图。(图中左边一列)按列可视化CNN特征图,如果只看特征图,我们无法得知特征的位置(即感受野的中心位置)和区域大小(即感受野的大小),而且无法深入了解CNN中的感受野信息。(图中右边一列)CNN特征图的大小固定,其特征位置即感受野的中心位置。
原文:https://blog.csdn.net/u010725283/article/details/78593410

现对input=5x5采用3x3的卷积核,stride=1的卷积
分析:

  • 经过第一次的卷积之后,得到的是3x3的feature map(红色区域)
  • 红色区域上的点的值都是由3x3的卷积核得来的,所以这个点的感受野为3x3
  • 在经过第二次卷积,得到1x1的feature map,通俗的说就是这个1x1的特征包含了原始输入5x5所有的特征,所以其感受野大小为5x5

在这里插入图片描述
小结:感受野的大小意味着这个单元能够看到原始图像的大小,它会在这么大的区域提取特征,卷积次数越多,感受野越大,所能在原始图像提取的特征也越多

那这样来说选择越大的卷积核,感受野不是越大,训练得不是越好吗?

对于评价模型的好坏,首先衡量的是模型权重参数的数量,数量过多,难以训练,且容易发生过拟合
下面通过选择7x7和3x3的卷积核,计算参数个数来进行对比:
设输入为H x W x C,C个卷积核

  • 7x7卷积核:
    对于深度为C的输入,也应选择深度为C的卷积核,对于一个卷积核,有77C=N,对于C个卷积核得总的参数个数CN=C(77C)=49C^2

  • 3x3卷积核:
    对于一个卷积核,有33C=N,对于C个卷积核,有CN=C(33C)=9C^2,为了得到与7x7一样多的感受野,需要通过3层卷积,则总的参数个数为:
    3 * 9C^ 2 = 27C^2
    在这里插入图片描述
    通过对比发现

  • 7x7卷积核和3x3卷积核达到相同的感受野,但参数个数却不一样

  • 每经过一层卷积,都要经过relu或者其他函数的变化,使其非线性更好

下面是深度残差网络使用的结果,1x1和3x3的卷积核结合,相同的结果,且参数更少:

在这里插入图片描述

总结:
(1)将较大的卷积核换成较小的3x3卷积核
(2)也可使用1x1的卷积核,最后需通过变换将其还原
(3)可将NxN的卷积核换成1xN和Nx1的卷积核
以上的操作都能够减少参数的个数、计算量和表达能力

猜你喜欢

转载自blog.csdn.net/qq_38016957/article/details/89474216