深度学习视频理解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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模块同时用img卷积层、img卷积层、img卷积层(图2-6中绿色部分)和img最大汇合层(图2-6中黄色部分)提取特征,这样可以同时适应不同的目标大小。Inception模块中不同的卷积层使用填补(Padding)使得输出空间维度一致(通道数可以不一致),最后沿着通道维度进行特征拼接(Concatenation)的结果作为Inception模块的输出,特征拼接操作如图2-7所示。通过Inception模块,可以使输出特征同时融合不同尺寸的感受野,输出特征中的信息也更加丰富。

img

图2-5 GoogLeNet 网络结构图

img

图2-6 GoogLeNet中的Inception模块

img

图2-7 特征拼接示意图

GoogLeNet 包括的关键点如下:

● 设计Inception 模块,GoogLeNet 采用的模块化网络结构设计理念一直被沿用至今。

● img卷积(图2-6中白色部分)的大量使用,img卷积可以在保持特征空间维度不变的情况下降低通道数,从而降低了后续卷积层的计算量,模块整体的计算量也随之降低。此外,由于每个引入的img卷积层后配合使用了ReLU 激活函数,也可以增加网络的非线性变换数量。

● AlexNet 和VGGNet 中全连接层的参数量占据了总参数量中的绝大部分,而 GoogLeNet 使用了全局平均汇合(Global Average Pooling,GAP)替代全连接层,全局平均汇合即卷积核维度为img的平均汇合,将维度为img的输入特征平均汇合得到维度为img的输出特征。GoogLeNet 只在最后保留一层全连接层用于分类,这样大幅减少了网络参数量。GoogLeNet 的参数量只有 AlexNet 的1/12。

● GoogLeNet 有22 层网络比较深,为了帮助深度网络训练,GoogLeNet在inc4a和inc4d 之后各自使用了一个辅助分支,最终3个分支的3个类别预测结果对应 3 个损失函数(Loss Function)用加权和的方式联合在一起进行优化训练。在预测时,这两个辅助分支不起作用。

随后,BN-Inception(Ioffe & Szegedy,2015)在GoogLeNet的基础上,在每个卷积层后增加BN 层,并借鉴VGGNet的思想,将img卷积分解为两个img卷积,并增加了一个Inception模块。