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 性能對比