目录
GoogLeNet结构
Inception块
GoogLeNet吸收了
NiN
中串联⽹络的思想,并在此基础上做了改进。这篇论⽂的⼀个重点是解决了什么样⼤小的卷积核最合适的问题。毕竟,以前流⾏的⽹络使⽤小到 1
×
1
,⼤到
11
×
11
的卷积核。本⽂的⼀个观点 是,有时使⽤不同⼤小的卷积核组合是有利的。
在
GoogLeNet
中,基本的卷积块被称为
Inception
块(
Inception block
)。
![](https://img-blog.csdnimg.cn/5f1749547e754480be9134c6e0dfef0f.png)
Inception
块由四条并⾏路径组成。前三条路径使⽤窗口⼤小为
1
×
1
、
3
×
3
和
5
×
5
的卷积
层,从不同空间⼤小中提取信息。中间的两条路径在输⼊上执⾏
1
×
1
卷积,以减少通道数,从而降低模型 的复杂性。第四条路径使⽤ 3
×
3
最⼤汇聚层,然后使⽤
1
×
1
卷积层来改变通道数。这四条路径都使⽤合适 的填充来使输⼊与输出的⾼和宽⼀致,最后我们将每条线路的输出在通道维度上连结,并构成Inception
块的 输出。在Inception
块中,通常调整的超参数是每层输出通道的数量。
不同的滤波器(
filter
)的组合,意味着不同⼤小的滤波器可以有效地识别不同范围的图像细节。同时,我们可以为不同的滤波器分配不同数量的参数。
完整结构
第⼀个模块使⽤
64
个通道、
7
×
7
卷积层;
第⼆个模块使⽤两个卷积层:第⼀个卷积层是
64
个通道、
1
×
1
卷积层;第⼆个卷积层使⽤将通道数量增加 三倍的 3
×
3
卷积层。这对应于
Inception
块中的第⼆条路径。
第三个模块串联两个完整的
Inception
块。第⼀个
Inception
块的输出通道数为
64 + 128 + 32 + 32 = 256
,四 个路径之间的输出通道数量⽐为 64 : 128 : 32 : 32 = 2 : 4 : 1 : 1
。第⼆个和第三个路径⾸先将输⼊通道的数量 分别减少到 96/192 = 1/2
和
16/192 = 1/12
,然后连接第⼆个卷积层。第⼆个
Inception
块的输出通道数增 加到 128 + 192 + 96 + 64 = 480
,四个路径之间的输出通道数量⽐为
128 : 192 : 96 : 64 = 4 : 6 : 3 : 2
。第⼆条 和第三条路径⾸先将输⼊通道的数量分别减少到 128/256 = 1/2
和
32/256 = 1/8
。
第四模块更加复杂,它串联了
5
个
Inception
块,其输出通道数分别是
192 + 208 + 48 + 64 = 512
、
160 + 224 + 64 + 64 = 512 、
128 + 256 + 64 + 64 = 512
、
112 + 288 + 64 + 64 = 528
和
256 + 320 + 128 + 128 = 832
。 这些路径的通道数分配和第三模块中的类似,⾸先是含 3
×
3
卷积层的第⼆条路径输出最多通道,其次是仅含 1×
1
卷积层的第⼀条路径,之后是含
5
×
5
卷积层的第三条路径和含
3
×
3 最⼤汇聚层的第四条路径。其中第⼆、 第三条路径都会先按⽐例减小通道数。这些⽐例在各个
Inception
块中都略有不同。
第五模块包含输出通道数为
256 + 320 + 128 + 128 = 832
和
384 + 384 + 128 + 128 = 1024
的两个
Inception
块。 其中每条路径通道数的分配思路和第三、第四模块中的⼀致,只是在具体数值上有所不同。需要注意的是,第 五模块的后⾯紧跟输出层,该模块同 NiN
⼀样使⽤全局平均汇聚层,将每个通道的⾼和宽变成
1
。最后我们将输出变成⼆维数组,再接上⼀个输出个数为标签类别数的全连接层。
总结:
- Inception 块相当于⼀个有4条路径的⼦⽹络。它通过不同窗口形状的卷积层和最⼤汇聚层来并⾏抽取 信息,并使⽤ 1×1 卷积层减少每像素级别上的通道维数从而降低模型复杂度。
- GoogLeNet将多个设计精细的Inception块与其他层(卷积层、全连接层)串联起来。其中Inception块的通道数分配之⽐是在 ImageNet 数据集上通过⼤量的实验得来的。
- GoogLeNet 和它的后继者们⼀度是 ImageNet 上最有效的模型之⼀:它以较低的计算复杂度提供了类 似的测试精度。
参考
李沐 《动手学深度学习》