2.1.4 GoogLeNet
GoogLeNet(Szegedy et al.,2015)是2014年ImageNet 竞赛分类任务的冠军网络,网络结构如图2-5所示。GoogLeNet 网络深度达到22 层,但是参数量只有500万个,比AlexNet和VGGNet 都要小很多,但是错误率是最低的,还不到AlexNet的一半。GoogLeNet 取名源自作者所处的谷歌(Google),其中L 大写是为了向LeNet 致敬,GoogLeNet 也被称为Inception V1,而Inception的名字来源于《盗梦空间》(Inception)电影中的“We need to go deeper”。
GoogLeNet 看似很复杂,实际上是由9个Inception模块构成的,本书插图中的模块(包括 Inception、残差模块等)用紫色表示。Inception模块的具体结构如图2-6所示,由于图像中的目标大小不一,小的目标适用于使用小卷积核,大目标适用于使用大卷积核,因此Inception模块同时用卷积层、卷积层、卷积层(图2-6中绿色部分)和最大汇合层(图2-6中黄色部分)提取特征,这样可以同时适应不同的目标大小。Inception模块中不同的卷积层使用填补(Padding)使得输出空间维度一致(通道数可以不一致),最后沿着通道维度进行特征拼接(Concatenation)的结果作为Inception模块的输出,特征拼接操作如图2-7所示。通过Inception模块,可以使输出特征同时融合不同尺寸的感受野,输出特征中的信息也更加丰富。
图2-5 GoogLeNet 网络结构图
图2-6 GoogLeNet中的Inception模块
图2-7 特征拼接示意图
GoogLeNet 包括的关键点如下:
● 设计Inception 模块,GoogLeNet 采用的模块化网络结构设计理念一直被沿用至今。
● 卷积(图2-6中白色部分)的大量使用,卷积可以在保持特征空间维度不变的情况下降低通道数,从而降低了后续卷积层的计算量,模块整体的计算量也随之降低。此外,由于每个引入的卷积层后配合使用了ReLU 激活函数,也可以增加网络的非线性变换数量。
● AlexNet 和VGGNet 中全连接层的参数量占据了总参数量中的绝大部分,而 GoogLeNet 使用了全局平均汇合(Global Average Pooling,GAP)替代全连接层,全局平均汇合即卷积核维度为的平均汇合,将维度为的输入特征平均汇合得到维度为的输出特征。GoogLeNet 只在最后保留一层全连接层用于分类,这样大幅减少了网络参数量。GoogLeNet 的参数量只有 AlexNet 的1/12。
● GoogLeNet 有22 层网络比较深,为了帮助深度网络训练,GoogLeNet在inc4a和inc4d 之后各自使用了一个辅助分支,最终3个分支的3个类别预测结果对应 3 个损失函数(Loss Function)用加权和的方式联合在一起进行优化训练。在预测时,这两个辅助分支不起作用。
随后,BN-Inception(Ioffe & Szegedy,2015)在GoogLeNet的基础上,在每个卷积层后增加BN 层,并借鉴VGGNet的思想,将卷积分解为两个卷积,并增加了一个Inception模块。