3.3.4 Inception 结构
首先我们要说一下在Network in Network中引入的1 x 1卷积结构的相关作用
3.3.4.1MLP卷积(1 x 1卷积)
目的:提出了一种新的深度网络结构,称为“网络中的网络”(NIN),增强接受域内局部贴片的模型判别能力。
- 做法
- 对于传统线性卷积核:采用线性滤波器,然后采用非线性激活。
- 提出MLP卷积取代传统线性卷积核
- 作用或优点:
- 1、多个1x1的卷积核级联加上配合激活函数,将feature map由多通道的线性组合变为非线性组合(信息整合),提高特征抽象能力(Multilayer Perceptron,缩写MLP,就是一个多层神经网络)
- 2、1x1的卷积核操作还可以实现卷积核通道数的降维和升维,实现参数的减小化
3.3.4.2 1 x 1卷积介绍
从图中,看到1 x 1卷积的过程,那么这里先假设只有3个1x1Filter,那么最终结果还是56x56x3。但是每一个FIlter的三个参数的作用
看作是对三个通道进行了线性组合。
- 我们甚至可以把这几个FIlter可以看成就是一个简单的神经元结构,每个神经元参数数量与前面的通道数量相等。
- 通常在卷积之后会加入非线性激活函数,在这里之后加入激活函数,就可以理解成一个简单的MLP网络了。
3.3.4.3 通道数变化
那么对于1x1网络对通道数的变化,其实并不是最重要的特点,因为毕竟3 x 3,5 x 5都可以带来通道数的变化,
而1x1卷积的参数并不多,我们拿下面的例子来看。
- 保持通道数不变
- 提升通道数
- 减少通道数
3.3.4.4 Inception层
这个结构其实还有名字叫盗梦空间结构。
- 目的:
- 代替人手工去确定到底使用1x1,3x3,5x5还是是否需要max_pooling层,由网络自动去寻找适合的结构。并且节省计算。
特点
- 是每一个卷积/池化最终结果的长、宽大小一致
- 特殊的池化层,需要增加padding,步长为1来使得输出大小一致,并且选择32的通道数
- 最终结果28 x 28 x 256
- 使用更少的参数,达到跟AlexNet或者VGG同样类似的输出结果
3.3.4.5 Inception改进
改进目的:减少计算,如5 x 5卷积那的运算量
- 上面的参数:5 x 5 x 32 x 192 =153600
- 下面的参数:192 x 16 + 5 x 5 x 16 x 32 = 3072 + 12800 = 15872
所以上面的结构会需要大量的计算,我们把这种改进的结构称之为网络的"瓶颈",网络缩小后扩大。
那么这样改变会影响网络的性能和效果吗?
GoogleNet就是如此,获得了非常好的效果。所以合理的设计网络当中的Inception结构能够减少计算,实现更好的效果。
3.3.4.6 GoogleNet结构(了解)
其中包含了多个Inception结构。
完整结构:
3.3.5 卷积神经网络学习特征可视化
我们肯定会有疑问真个深度的卷积网络到底在学习什么?可以将网络学习过程中产生的特征图可视化出来,并且对比原图来看看每一层都干了什么。
可视化案例使用的网络
- 可视化结果
- layer1,layer2学习到的特征基本是颜色、边缘等低层特征
- layer3学习到的特征,一些纹理特征,如网格纹理
- layer4学习到的特征会稍微复杂些,比如狗的头部形状
- layer5学习到的是完整一些的,比如关键性的区分特征
3.3.6 总结
- 掌握LeNet-5 结构计算
- 了解卷积常见网络结构
- 掌握1x1卷积结构作用
- 掌握Inception结构作用