代替大卷积
在这里,我们解释了级联几个小卷积的作用,在下面的图中,我们有2个3x3卷积层。 如果从右侧的第二层开始,则第二层上的一个神经元具有3x3的接收场,并且第一层上的每个神经元都会在输入上创建5x5的接收场。
因此,用简单的话来说,级联可以用来代表较大的级联。
新的成功模型的新趋势是使用较小的卷积,例如,可以将7x7卷积替换为具有相同深度的3个3x3卷积。 由于第一转换层和输入文件深度之间的深度不匹配,因此无法在第一转换层上进行此替换(除非您的第一层只有3个过滤器)。
在上图中,我们用3个3x3卷积替换了一个7x7卷积,观察到它们之间有relu层,因此我们具有更多的非线性。 同样,我们的权重和乘加运算更少,因此计算速度更快。
替换第一层
如前所述,我们不能在第一层上替代大卷积。 实际上,第一层上的小卷积会导致内存消耗爆炸。
为了说明这个问题,让我们比较一下卷积神经网络的第一层,它是3x3,带有64个滤镜,步幅为1,相同深度的深度为7x7,步幅为2,考虑图像大小为256x256x3。
继续进行3x3替换(Bottleneck)
也可以通过称为瓶颈的机制来简化3x3卷积。 这又将具有正常3x3卷积的相同表示,但参数更少,非线性更多。
请注意,替换是在3x3卷积上进行的,该卷积具有与上一层相同的深度(在这种情况下为50x50x64)
打破3x3xC卷积的另一种方法是使用1x3xC,然后使用3x1xC,这已在剩余的googlenet初始层中使用。
FC->转换层转换
可以将完全连接的层转换为卷积层,反之亦然,但是我们对FC-> Conv转换更感兴趣。 这样做是为了提高性能。
例如,假设一个FC层具有输出K = 4096和输入7x7x512,则转换为:
CONV:内核:7x7,Pad:0,步幅:1,numFilters:4096。
使用2d卷积公式的大小:
在简历中,通过将FC层转换为卷积可以获得的收益:
性能:由于重量分配,计算速度更快
你可以使用比您训练的图像更大的图像,而无需进行任何更改
你将能够在同一图像上检测到2个对象(如果使用更大的图像),则最终输出将比单个行向量更大。
计算感受野
接收场基本上是特定卷积窗口在其输入张量上“看到”的程度。
有时,确切了解输入图像上特定层的每个单元有多少是有用的,这在对象检测系统上尤为重要,因为我们需要以某种方式将一些激活图尺寸与原始图像尺寸进行匹配(标签 图片)。
要注意的一点:
对于第一层(仅),接受字段是内核大小。
这些计算与层的类型(CONV,POOL)无关,例如,步幅为2的CONV与步幅为2的POOL具有相同的接收场。