GoogLeNet(Inception v1)讲解
Inception v2讲解
论文地址:
Rethinking Inception Architecture for Computer Vision(Inception v3)
Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
设计深度神经网络的几个准则
- 尽量避免表达瓶颈,尤其是在网络中比较靠前的地方。比如网络前几层,如果过早的把特征图变的太小或者特征不够,之后的学习将很难达到很好的效果。
- 网络中,高维的特征更容易被处理。即channel增多,对于网络的训练有好处。
- 在神经网络的浅层对embeddings做空间上的融合不会导致太大的精度损失,embeddings这里在文中的意思我想和NLP中所讲的embeddings是一样,总之就是代表输入数据的某种表示方式,以图片为例,输入的是RGB三通道的数据,经过几个卷积操作后数据依然是HWC的格式,即相当于是把原数据换了一种数学上的表示方式,也就是数据的embeddings,实际上指的就是浅层的卷积神经网络的输出。
- 平衡网络的深度和广度。
Inception v3中的新结构
Inception v3基本框架还是从v2继承过来的,最大的变化还有三个:
1. 5*5的filter都被两个3*3 filter替换了
从下图可以看出一个5*5的卷积可以被两个连续的3*3的卷积替换,这样做主要是为了节约计算量和参数个数。如果卷积前后特征图大小不变,那么一个5*5的卷积的运算量是5*5*m*m*k,其中m是特征图大小,k是特征图维度,因此两个连续的3*3的卷积的计算量只有其18/25=72%。当然,既然只是为了替代5*5的卷积,那么显然两个连续3*3的卷积之间是不需要非线性层的,但是作者通过实验发现还是在他们之间加上ReLu比较好
所以,Inception的模块就从图4变成了图5
2. 引入了非对称的卷积
这一点实际上是对上一个的拓展,既然5*5的filter能被两个3*3 filter替代,那能不能进一步把3*3的变成更小的呢,实验发现倒是可以引入非对称的卷积,这样比把3*3变成2*2更能节省计算量,非对称卷积即卷积核不是一个方阵,而是一个矩形,如下图:
3. 变换了增加特征图维度的方式
以往特征图再进行pool之前都要把维度升起来保证模型的表达能力不受影响,如下图,35*35变成17*17的时候就要把特征图的维度变成2倍,但是这样的操作太耗时了,尤其是当特征图数量翻倍的时候,应该文中提出了一种使得特征图翻倍的方式,其中,下图中左侧是普通的卷积,步长为2,右侧是pool,通过两种方式分别得到320个filter,然后再把两者拼起来即可。
Inception v3整体架构
可以看到,从上到下已经没有大的卷积核了,表格中的卷积如果没有声明指的都是没有padding的卷积。Inception模块的样子文中上面已经给出了图5、6、7,三种不同的Inception模块在衔接时特征图都变多了,用的就是上一部分第3点所述的方式来增加的,其中,图10左右两部分分别是17*17到8*8和35*35到17*17所用的增加特征图维度的方式。
Inception v4
Inception v4中引入了Residual模块,文中一共缔造了三种网络,分别叫Inception-v4、Inception-ResNet-v1以及Inception-ResNet-v2,其中Inception-v4中没有使用残差模块,但是网络深度比原来更深了。后两个网络则引入的残差模块,但是在设计上还是略有不同。这篇文章基本不讲道理,就是各种尝试,最后的实验结果也还算不错,网络的具体结构文章中有非常多的图,也比较简单,有了Inception-v1~v3的铺垫,理解还是比较顺畅的,有兴趣的可以去看看。
网友评论