【文献速读】Inception发展和1X1卷积核
速读Inception
认识1X1卷积核
在速读文章前,我们要认识一下1X1卷积核。常用的卷积核有1X1,3X3,5X5(奇数)。根据一些文章的经验,更大的卷积核没有太大的意义。
卷积层输入输出形状的计算公式:
N
=
(
W
−
F
+
2
P
)
/
S
+
1
N = (W − F + 2P )/S+1
N=(W−F+2P)/S+1
卷积核的形状为1X1,令步长
S
=
1
S=1
S=1,令
p
a
d
d
i
n
g
=
1
padding=1
padding=1即
N
=
(
W
−
1
+
2
×
0
)
/
1
+
1
=
W
N = (W −1 + 2\times 0)/1+1=W
N=(W−1+2×0)/1+1=W
输入与输出等宽等长,输出的通道数等于卷积核的个数。因此,1X1卷积核只改变通道数,不改变原图像测的长宽,较好的保留了原图像的特征图的尺度。这里考虑两种情况。1X1卷积核的通道数小于输入的通道数时,卷积层发挥了降维的作用(为什么在network in network中要降维,当然是减少卷积核参数,降低运算复杂度。这里涉及到卷积核参数计算的公式
F
×
F
×
C
i
n
×
C
o
u
t
F \times F\times C_{in}\times C_{out}
F×F×Cin×Cout 。);反之,升维。由于1X1卷积核只在输入图像的通道上做线性组合,实现了通道间的信息交互。
回到Inception V1的文献 Going Deeper with Convolutions (2014)
图像中突出部分的大小差别很大。按照前期之前的前馈CNNs,在同一层相同大小的卷积核不太可能提取到有效特征。以下图的狗狗图像为例,在不同图片中,“狗”的位置,“狗”所占据区域的像素大小都不同。有没有一种网络结构可以在每次特征提取(相同层级)中提取不同不同尺寸的特征呢?因此Inception V1产生了。
左图为原始的Inception模块(最大池化是为了将子层的输入级联起来),为了减少卷积核参数,节约计算资源,又进一步提出了右图的结构。
a图 | b图 |
---|---|
Inception V2
文献:Rethinking the Inception Architecture for Computer Vision
提出问题:
- 减少特征的表征性瓶颈。直观上来说,当卷积不会大幅度改变输入维度时,神经网络可能会执行地更好。过多地减少维度可能会造成信息的损失,这也称为「表征性瓶颈」。
- 使用更优秀的因子分解方法,卷积才能在计算复杂度上更加高效。
解决办法:
从Inception V1到Inception V2,使用2个3x3的卷积代替5x5的卷积,这样既可以获得相同的视野(经过2个3x3卷积得到的特征图大小等于1个5x5卷积得到的特征图),还具有更少的参数,还间接增加了网络的深度,如下图。
将大的卷积核进一步分解成小的卷积核是否在增加深度的同时,进一步减少了参数总量呢?因此文章引入了几个堆叠1Xn和nX1的非对称卷积来替代3X3卷积核。