1. GoogleNet
1.1. 介绍
- 2014竞赛第一
- 进化顺序:Inception V1->Inception V2->Inception V3->Inception V4
- 目的:提升性能
- 降参,降计算
- 加宽,深度
1.2. Inception V1网络:
- 核心组件 Inception Architecture-稀疏连接结构
- Split-Merge->1×1卷积,3×3卷积,5×5卷积,3×3池化;
- 增加网络对多尺度的适应性,提高多尺度特征,输出通道多尺度(感受野)化
- 增加网络宽度
- 串接合并所有分支输出
- Bottleneck Layer->使用NiN的1×1卷积进行特征降维,解决多尺度代理的高额参数&计算
- 大幅降低计算量10×
- Split-Merge->1×1卷积,3×3卷积,5×5卷积,3×3池化;
- 取消全连接
- 参数量大,减负,全连接层占用大量参数
- AlexNet:58.6M(6×6×256×4096+4096×4096+4096×4096)
- VGG:72M(7×7×256×4096+4096×4096+4096×1000)
- 本质上是全尺寸卷积层
- 由全局平均池化替代(Global average pooling)
- 输入 7×7×1024
- 输出 1×1×1024
- 参数量大,减负,全连接层占用大量参数
3. 辅助分类器
- 解决前几层梯度消失问题
- 有效加速收敛,测试阶段不可用
1.3. Inception V2网络
- 核心组件
- Batch Normalization(批归一化)
- 解决Internal Covariate Shift问题(内部neuron数据分布发生变化)
- 白化:使每一层输出都规范化到N(0,1)
- 允许较高学习率
- 取代部分Dropout
- 在batch范围内,对每个特征通道分别进行归一化
- 5×5卷积核->2个3×3卷积核
- 位置:卷积-》BN->ReLU
- 配对使用scale&shift
- 添加一组你算子:scale乘子,bias偏置
- 这组参数需要学习
- Batch Normalization(批归一化)
1.4 Inception V3 网络
- 核心组件
- 非对称卷积:N×N分解成1×N->N×1
- 降低参数数量和计算量
- 高效的降尺寸
- 避免表达瓶颈
- 降尺寸前增加特征通道
- 2个并行分支
- 卷积分支+池化分支
- 串接分支结果
- 避免表达瓶颈
-
- 取消浅层辅助分类器
- 完全无用
- 深层辅助分类器只在训练后期有用
- 加上BN和Dropout,主分类器Top1性能提升0.4%
- 正则化作用
- 用在最后一层17*17后
- 取消浅层辅助分类器
-
- 不增加计算量
- 避免表达瓶颈
- 增强结果(表达力)
- 宽度
- 深度
- 不增加计算量
1.5 ResNet残差网络
- 核心组件Skip/shortcut connection
- Plain net:可以拟合出任意目标映射H(x)
- Residual net
- 可以拟合出任意目标映射F(x), H(x)=F(x)+x
- F(x)是残差映射,相对于identity来说
- 当H(x)最优映射接近identity时,很容易捕捉到小的扰动。
- 其他设计
- 全是3×3卷积核
- 卷积步长2取代池化
- 使用Batch Normalization
- 取消
- Max池化
- 全连接层
- Dropout
- 更深网络:根据Bootleneck优化残差映射网络
- 原始:3×3×256×256 -> 3×3×256×256
- 优化:1×1×256×4 -> 3×3×64×634 -> 1×1×64×256
1.6 Inception V4网络
1.7 ResNeXt网络
1.8 CNN设计准则
1.9 准确性&执行效率
1.10 性能对比