AlexNet
当时成功的原因: 合理的模型(算法);GPU(算力);大量的数据(算料);
数据集
| 类别 | 训练数据 | 测试数据 | 图片格式 | 分辨率 | |
|---|---|---|---|---|---|
| Minist | 10 | 50000 | 10000 | Gray | 28*28 |
| Cifar-10 | 10 | 50000 | 10000 | RGB | 32*32 |
| ILSVRC-2012 | 1000 | 1200000 | 150000 | RGB | ?00*?00 |
ILSVRC:大规模图像识别挑战赛
ImageNet Large Scale Visual Recognition Challenge 是李飞飞等人于2010年创办的图像识别挑战赛,自 2010起连续举办8年,极大地推动计算机视觉发展
比赛项目涵盖:图像分类(Classification)、目标定位(Object localization)、目标检测(Object detection)、视频目标检测(Object detection from video)、场景分类(Scene classification)、场景解析(Scene parsing)
竞赛中脱颖而出大量经典模型: alexnet,vgg,googlenet,resnet,densenet等
ILSVRC 与 ImageNet 的关系
ImageNet 数据集包含 21841 个类别, 14,197,122 张图片
其通过 WordNet 对类别进行分组,使数据集 的语义信息更合理,非常适合图像识别
ILSVRC-2012 从ImageNet中挑选 1000 类的 1,200,000 张作为训练集
什么是 top-1 error top-5 error ?
top-1 error:就是你预测的 label 取最后概率向量里面最大的那一个作为预测结果 ,如过你的预测结果中概率最大的那个分类正确,则预测正确,否则预测错误;
top-5 error:就是最后概率向量最大的前五名中,只要出现了正确概率即为预测正确,否则预测错误。
研究成果
模型集成提升指标的思路

研究意义
- 打开卷积神经网络统治计算机视觉领域序幕
- 加速计算机视觉应用落地

比如鸢尾花分类:传统机器学习领域基于特征工程,需要进行鸢尾花各项人工尺度特征的收集。深度学习领域端对端(end to end)
网络的结构

网络结构在最新的pytorch工程中有如下变化:
- 接受 4D 张量
- 弃用LRN
- 增加 AdaptiveAvgPool2d (重要)
- 卷积核的数量有所改变 | | Conv1 | Conv2 | Conv3 | Conv4 | Conv5 | | —- | —- | —- | —- | —- | —- | | paper | 96 | 256 | 384 | 384 | 256 | | Pytorch | 64 | 192 | 384 | 256 | 256 |
创新点
- ReLU Nonlinearity
- Training onMultiple GPUs
- Local Respones Normalization
- Overlapping Pooling
- Data Augmentation
- Dropout
ReLU 具有哪些优点?(重要)
加速网络的训练;缓解梯度消失;使网络具有稀疏性;
什么是 Local Respones Normalization,它的效果是什么?
局部响应标准化,用于提高泛化能力,提高准确率。
启发于细胞侧抑制,现在已经有更新的trick。细胞分化为不同时,会对周围的细胞产生抑制信号,阻止它朝着相同的方向分化,最终表现细胞的命运不同。
在神经网络中,特征图同一位置,不同通道之间的
%7D%5E%7B%5Cmin(N-1%2Ci%2Bn%2F2)%7D(a%5Ej%7Bx%2Cy%7D)%5E2)%5E%5Cbeta%0A#card=math&code=b%5Ei%7Bx%2Cy%7D%3Da%5Ei%7Bx%2Cy%7D%2F%28k%20%2B%20%5Calpha%20%5Csum%7Bj%3D%5Cmax%280%2Ci-n%2F2%29%7D%5E%7B%5Cmin%28N-1%2Ci%2Bn%2F2%29%7D%28a%5Ej_%7Bx%2Cy%7D%29%5E2%29%5E%5Cbeta%0A)
其中, :代表通道
:平方累加索引
:像素的索引
:代表 feature map 某个位置像素,第
个通道的值
:表示通道的总数量。
什么是 Overlapping Pooling ,它的效果是什么?
当 时被称为 Overlapping Pooing,采样时会有像素共享。通常是
不存在像素共享。
提升泛化能力,提升准确率。
如何做 Data Augmentation,它的效果是什么(重要)?
提高了泛化能力,增强了神经网络对位置和颜色的鲁棒性。
方法一:针对位置
训练阶段:
- 图片统一缩放至 256*256
- 随机位置裁剪出224*224
- 随机水平翻转
测试阶段:
- 图片统一缩放至 256*256
- 裁剪出5个 224*224 区域
- 进行水平翻转,共得到 10 张 224*224 图片
方法二:针对颜色
进行颜色扰动,效果有限
什么是 Dropout,它的效果是什么?(重要)
提高了神经网络的泛化能力,防止过拟合。
训练阶段:
以概率 随机保留一些节点,被丢弃的值权重设置为 0
测试阶段:
测试阶段为了保持期望的相同,每个节点的输出值,都要乘以 概率
启发点
- 深度宽度决定网络的能力
- 更强的 GPU 和更多的数据可以提升模型的能力
- 图片缩放,先对短边进行缩放
- ReLU 不需要进行标注化防止饱和现象,而 sigmoid 和 tanh 有必要进行标准化
- 卷积核可以学习到频率、方向和颜色特征
- 相似的图片具有“相近”的高级特征
- 图像检索可基于高级特征,效果应该优于基于原始图像
- 网络结构具有相关性,不可轻易移除某一层
- 采用视频数据可能有新突破
VGGNet
Very deep convolutional networks for large-scale image recognition
ICLR 2015
研究背景、意义
ILSVRC:大规模图像识别挑战赛
相关研究
- Alexnet:ILSVRC-2012分类冠军,里程碑的 CNN 模型
- ZFnet:ILSVRC-2013分类冠军,对 Alexnet 做改进
- Overfeat:ILSVRC-2013定位冠军,集分类、定位和检测于一体的卷积神经网络 | 模型 | 时间 | top-5 | | —- | —- | —- | | Alexnet | 2012 | 15.3% | | ZFnet | 2013 | 13.5% | | VGG | 2014 | 7.3% |
思路借鉴:
- AlexNet:借鉴卷积模型结构
- ZFNet:借鉴小卷积核思想
- OverFeat:借鉴全卷积,实现高效稠密(Dense)预测
- NIN:尝试
1*1卷积
研究意义:
- 开启了小卷积核时代,
3*3卷积称为主流 - 作为各种图像任务的骨干网络结构:分类、定位、检测、分割一系列的图像任务的大都有 VGG 作为骨干网络的尝试
模型结构
VGG 11~19 的演变结构如图所示

5个网络的共性:
- 都有 5 个 maxpool 层,DownSample 只发生在 pool 层,采样的倍数是 stride = 2
- maxpool 后通道数量都会增加
- maxpool 层之间使用卷积层进行特征提取,
- 3 个 FC 层进行分类输出
网络的特性:
- 堆叠
3*3用于增加感受野
如图所示,两个 3*3 等价于一个 5*5 ,三个 3*3 等价于一个 7*7


堆叠 3*3 有如下优势:
- 大感受野
- 增加非线性激活函数,增强非线性表达能力
- 减少训练参数
- 可以看成
7*7卷积核的正则化,进行分解 3 个3*3
- 尝试
1*1卷积
受启发于 NIN
训练测试技巧
- 数据增强(data augmentation)
方法一:针对位置和尺寸 (尺度扰动)
训练阶段:
- 按比例缩放图片最小边为 S
- 随机位置裁剪出
224*224区域 随机进行水平翻转
方法二:针对颜色
修改 RGB 通道的像素值,实现颜色扰动S 设置方法:
固定值:固定为 256 或者 384
- 随机值:每个 batch 在 S 在
,实现尺度扰动
- 模型的初始化(已经过时)
现在 BN 层,Xavier 初始化方法出现,不需要再进行过于细致的模型参数初始化
- 深度加深时,用浅层网络初始化
B,C,D,E 用 A 模型初始化 - Multi-scale 训练时,用小尺度初始化
S = 384时,用 S = 256 初始化
S 在时,用 S = 384 初始化模型
- 多尺度测试
等比例缩放图像最短边为 Q,一共有两种缩放方式。
方法一:当 S 为固定尺寸
方法二:当 S 为随机值时%2CS%7Bmax%7D%5D#card=math&code=Q%20%3D%20%5BS%7Bmin%7D%2C0.5%2A%28S%7Bmin%7D%2BS%7Bmax%7D%29%2CS_%7Bmax%7D%5D)
测试方法:
ILSVRC:大规模图像识别挑战赛
相关研究:
NIN、赫布理论、多尺度滤波器
NIN 首个采用 1*1 卷积的卷积神经网络,并且提出全局平局池化 GAP,舍弃了全连接层,大大减少了网络参数;
启发于 Gabor 多尺度滤波器提取特征,用多个尺度的卷积核提取特征;
赫布理论,一起激活的神经元连接在一起;
意义:
开启了多尺度卷积时代、1*1 、GoogleNet 系列
| 模型 | 时间 | top-5 |
|---|---|---|
| Alexnet | 2012 | 15.3% |
| ZFnet | 2013 | 13.5% |
| VGG | 2014 | 7.3% |
| GoogleNet | 2014 | 6.6% |
模型结构
Inception module
特点:
- 多尺度
1*1卷积降维度,信息融合3*3max pooling 保留了特征图的数量
为什么要使用 1*1 卷积核,降低通道数量,减少参数个数

网络结构
- 三阶段:conv-pool-conv-pool 快速降低分辨率;堆叠Inception;FC层分类输出
- 堆叠使用Inception Module,达22层
- 增加两个辅助 loss 缓解梯度消失(中间特征具有分类能力)(后面版本去掉了)

训练技巧
学习率下降策略:
每 8 个 epoch 下降 4% 可见下降的速度是相当缓慢的, ,总共的 epoch 的数量应该是相当大的。
这么做会使得,loss 图像和准确率图像十分平滑。学习率的下降幅度大,会导致函数曲线的波动也会变大。
数据增强:
- 图像尺度均匀分布在 8%~100% 之间
- 长宽比在
之间
- Photometric distortions 有效,如亮度、饱和度、对比度等
测试技巧
Multi-Crop
一张图边为 张图
Step1: 等比例缩放短边至256, 288, 320, 352,四种尺寸。 一分为四
Step2: 在长边上裁剪出3个正方形,左中右或者上中下,三个位置。 一分为三
Step3: 左上,右上,左下,右下,中心,全局resize,六个位置。 一分为六
Step4: 水平镜像。 一分为二
Model Fusion
7 模型仅仅是在图像的采样 和 顺序上有差异;使用相同的初始化方式,学习率策略。
GoogleNetv2
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
2015
背景、成果和意义
GoogleNetv2 在 GoogleNetv1 的基础上加入 BN 层,同时借鉴了 VGG 小卷积核的思想, 将 5*5 卷积核替换为 2 个 3*3 的卷积核。
| 模型 | 时间 | top-5 |
|---|---|---|
| Alexnet | 2012 | 15.3% |
| ZFnet | 2013 | 13.5% |
| VGG | 2014 | 7.3% |
| GoogleNet | 2014 | 6.6% |
| GoogleNet-V2 | 2015 | 4.9% |
ICS(Internal Covariate Shift,内部协变量偏移)
训练的过程中,权重的不断更新,导致神经网络后面的隐藏层分布发生变化,导致模型训练困难,对神经网络音响极大

白化(whitening)
白化,去除数据的冗余信息,使得数据特征之间的相关性降低,所有的特征具有相同的方差。
依概率论:%3D%5Cfrac%7Bx-mean%7D%7Bstd%7D#card=math&code=N%28x%29%3D%5Cfrac%7Bx-mean%7D%7Bstd%7D) ,使得
变为 0 均值,1 标注差。
研究成果
- 提出了 BN 层加快了模型的收敛,比 goolgenet-v1 块数十倍,获得更优的结果。
- ILSVRC 分类任务 SOTA
BN层优点:
- 可以用更大的学习率,加速模型的收敛(设置较小的学习率,缓解这个问题)
- 可以不用精心设计权值初始化(也是在做权重特征分布的稳定)
- 可以不用 dropout 或者较小的 dropout
- 可以不同 L2 或者较小的 weight decay(BN 有一定的正则效果,保留了相对差异,缩小了绝对差异,有了一定的约束)
- 可以不同 LRN (local response normalization)
研究意义:
- 加快了深度学习的发展
- 开启了神经网络设计的新时代,标准化层 已成为深度神经网咯的标配
在 Batch Normalization 基础上扩展出了一系列标准化网络层,如 Layer Normalization (LN),Instance Normalization (IN),Group Normalization (GN)
之间的相同点:
都会进行标准化计算,线性偏置计算
不同点:
标准化所用到的均值和方差计算的方法不同

BN 层在训练和推理的流程
BN 层介于神经元输出 和 激活函数之间。
Batch Normalization:批标准化
批是指一批数据:通常为 mini-batch
标准化:使得分布 mean = 0,std = 1
%7D%3D%5Cfrac%7Bx%5E%7B(k)%7D-%5Cmathrm%7BE%7D%5Cleft%5Bx%5E%7B(k)%7D%5Cright%5D%7D%7B%5Csqrt%7B%5Coperatorname%7BVar%7D%5Cleft%5Bx%5E%7B(k)%7D%5Cright%5D%7D%7D%0A#card=math&code=%5Cwidehat%7Bx%7D%5E%7B%28k%29%7D%3D%5Cfrac%7Bx%5E%7B%28k%29%7D-%5Cmathrm%7BE%7D%5Cleft%5Bx%5E%7B%28k%29%7D%5Cright%5D%7D%7B%5Csqrt%7B%5Coperatorname%7BVar%7D%5Cleft%5Bx%5E%7B%28k%29%7D%5Cright%5D%7D%7D%0A)
上面的公式表示的是单个神经元输出值在 batch_size 中的标准化,其中, 表示维度。每个特征图的标准化,发生在每个神经元,单个维度上。而不是对整张特征图所有维度统一进行计算。
整个特征图上的描述公式如下:
其中 表示一批次中特征图的 index。
但是,仅仅是进行标准化还是存在一些问题,使得神经元输出的值在 sigmoid 线性区域,削弱了神经网络的非线性表达能力。于是,采用了可以学习的参数,进行线性偏置计算。下面是单个神经元,单个维度的表示:%7D%3D%5Cgamma%5E%7B(k)%7D%20%5Cwidehat%7Bx%7D%5E%7B(k)%7D%2B%5Cbeta%5E%7B(k)%7D%0A#card=math&code=y%5E%7B%28k%29%7D%3D%5Cgamma%5E%7B%28k%29%7D%20%5Cwidehat%7Bx%7D%5E%7B%28k%29%7D%2B%5Cbeta%5E%7B%28k%29%7D%0A)
整个特征图上的描述公式:%0A#card=math&code=y%7Bi%7D%20%5Cleftarrow%20%5Cgamma%20%5Cwidehat%7Bx%7D%7Bi%7D%2B%5Cbeta%20%5Cequiv%20%5Cmathrm%7BB%7D%20%5Cmathrm%7BN%7D%7B%5Cgamma%2C%20%5Cbeta%7D%5Cleft%28x%7Bi%7D%5Cright%29%0A)
这使得 BN 层也提供了恒等映射的可能,不改变神经元输出值。
总结:
Step1. 在 mini-batch 上计算机均值;
Step2. 在 mini-batch 上计算标准差;
Step3. 减去均值,除以标准差( 防止分母为 0)
Step4. 线性变化,乘以 加上
,实现缩放与平移

存在问题:
mini-batch size 过小的时候,计算出的每个 batch 的均值和方差,与整体的均值和方差,有一定的误差。
注意事项:
- BN 的前一层不要加偏置,就算是加了偏置,在标准化时也会被抵消,同时 BN 层的最后一步也提供了偏置;
- 卷积神经网络中,是针对特征图进行 BN 的,并且在多个输出通道上分别计算,即 2D 的 BN 操作;
- BN 层在训练和推理的流程是不一样的,训练时会有可以学习参数,训练阶段均值和方差采用相应 batch 进行计算;测试阶段图片一张一张输入e,均值是各训练时批次均值的期望,是无偏估计,方差是各 batch 方差的无偏估计 ,这也是为什么 Pytorch 为什么要调整训练
model.train()或者评估模式model.eval()的原因之一。
为什么会这样计算无偏估计量,softmax 属于极大似然估计。
模型结构的变化
相对于 v1 的改进:
- 激活函数前,加入 BN
5*5卷积替换为,两个3*3卷积- 增加了 Inception Module 模块的数量
- 增加了出处通道的数量
- Down sample 使用的是 stride = 2 的卷积层
GoogleNetv3
Rethinking the Inception Architecture for Computer Vision
CVPR 2016
背景、成果和意义
ILSVRC:大规模图像识别挑战赛
Googlenetv1 采用多尺度卷积核,1*1 操作,辅助损失函数,实现更深的 22 层卷积神经网络,夺的 ILSVRC 2014 分类和检测冠军,定位亚军
Googlenetv2 在 v1 的基础上加入了 BN 层,并将 5*5 卷积全面替换为 2 个 3*3 卷积堆叠形式,进一步提高模型能力
VGG 网络模型大,参数多,计算量大,不适用于真实的场景,主要原因是在 fc 层
| 模型 | 时间 | top-5 |
|---|---|---|
| Alexnet | 2012 | 15.3% |
| ZFnet | 2013 | 13.5% |
| VGG | 2014 | 7.3% |
| GoogleNet | 2014 | 6.6% |
| GoogleNet-V2 | 2015 | 4.9% |
| GoogleNet-V3 | 2015 | 3.5% |
研究成果:
- 提出了 Inception-V2 和 Inception-V3 其中 V3 获得 ILSVRC 分类任务 SOTA
- 提出了 4 个模型设计准则
- 提出了卷积分解、高效降低特征图分辨率方法和标签平滑正则化技巧,提高网络速度和精度(应该有更新的方法迭代?)
网络设计准则
4 个网络设计准则
- 尽量避免信息瓶颈,通常发生在池化层,即特征图变小,信息量减少
- 采用更高维的方法能够更容易处理网络的局部信息
- 大的卷积核可以分解为数个小的卷积核,且不会降低网络能力
- 把握好深度和宽度的平衡
卷积分解
Factorizing Convolutions
- 大的卷积核分解为小的卷积核堆叠
1 个5*5卷积分解为 2 个3*3卷积堆叠,参数减少%2F25%20%3D%2028%25#card=math&code=1%20-%20%289%2B9%29%2F25%20%3D%2028%25)


- 分解为非对称卷积(Asymmetric Convolutions)
一个 n*n 卷积分解为 1*n 卷积和 n*1 卷积的堆叠
对于 3*3 而言,参数减少 %2F9%20%3D%2033%25#card=math&code=1%20-%20%283%2B3%29%2F9%20%3D%2033%25)
注意事项:非对称卷积在后半段使用效果才好,特别是特征分辨率在 12-20 之间,本文在分辨率为 17*17 使用非对称卷积分解

辅助分类层再探讨
Auxiliary Classifer
在 GoogleNet V1 中用于提升低层特征提取能力,缓解梯度消失。
- 辅助分类层在初期不起作用,后期才能提升网络性能
- 移除第一个辅助分类层不影响精度
- 辅助分类层可以辅助低层特征提取是不正确的,思考可能的原因是:特征提取还是 low level 很难做分类任务
- 辅助分类层对模型起到正则作用
- Googlenet-v3 在
17*17特征图结束输入辅助分类层
高效的特征图下降策略
特征图下降策略
传统的池化方法存在信息表征瓶颈(representional bottleneck),违反设计准则1,在中间层特征图信息变少,如下图左侧所示。

简单的解决办法:先用卷积将特征图通道数翻倍,在进行池化,如上图右侧所示。但是存在问题,计算量过大。
针对上述方法计算量大的问题,用卷积得到一半的特征图,再用池化得到另外一半的特征图。具体如下图所示。
用较少的计算量获得获得更多的信息,避免信息表征瓶颈

应用场景:
Inception Moudle 中用于 35*35 下降至 17*17 ,以及从 17*17 下降至 8*8
标签平滑
Label Smooth
传统的 One-Hot 编码存在问题:过度自信,容易导致过拟合
标签平滑,把 One-Hot 中概率为 1 的哪一项进行衰减,避免过度自信,衰减那部分 confidence 平均分到每一个类别中
举例:4 分类任务中,#card=math&code=%5Ctext%7BLabel%7D%3D%280%2C1%2C0%2C0%29)
%3D(0.00025%2C9.99925%2C0.00025%2C0.00025%2C)#card=math&code=%5Ctext%7BLabel%20Smoothing%7D%20%3D%20%28%5Cfrac%7B0.001%7D%7B4%7D%2C1-0.001%2B%5Cfrac%7B0.001%7D%7B4%7D%2C%5Cfrac%7B0.001%7D%7B4%7D%2C%5Cfrac%7B0.001%7D%7B4%7D%29%3D%280.00025%2C9.99925%2C0.00025%2C0.00025%2C%29)
标签平滑公式:
交叉熵(Cross Entropy):%3D-%5Csum%5E%7BK%7D%7Bk%3D1%7D%5Ctext%7Blog%7D(p_k)q%7Bk%7D#card=math&code=H%28q%2Cp%29%3D-%5Csum%5E%7BK%7D%7Bk%3D1%7D%5Ctext%7Blog%7D%28p_k%29q%7Bk%7D)
为 one-hot 向量
Label Smoothing:将 进行标签平滑为
,让模型输出
去逼近
%3D(1-%5Cepsilon)%20%5Cdelta%7Bk%2C%20y%7D%2B%5Cepsilon%20u(k)%0A#card=math&code=q%5E%7B%5Cprime%7D%28k%20%5Cmid%20x%29%3D%281-%5Cepsilon%29%20%5Cdelta%7Bk%2C%20y%7D%2B%5Cepsilon%20u%28k%29%0A)
其中,#card=math&code=u%28k%29) 是均匀分布
%3D(1-%5Cepsilon)%20%5Cdelta%7Bk%2C%20y%7D%2B%5Cfrac%7B%5Cepsilon%7D%7BK%7D%0A#card=math&code=q%5E%7B%5Cprime%7D%28k%29%3D%281-%5Cepsilon%29%20%5Cdelta%7Bk%2C%20y%7D%2B%5Cfrac%7B%5Cepsilon%7D%7BK%7D%0A)
标签平滑后的交叉熵损失函数%3D-%5Csum%7Bk%3D1%7D%5E%7BK%7D%20%5Clog%20p(k)%20q%5E%7B%5Cprime%7D(k)%3D(1-%5Cepsilon)%20H(q%2C%20p)%2B%5Cepsilon%20H(u%2C%20p)%0A#card=math&code=H%5Cleft%28q%5E%7B%5Cprime%7D%2C%20p%5Cright%29%3D-%5Csum%7Bk%3D1%7D%5E%7BK%7D%20%5Clog%20p%28k%29%20q%5E%7B%5Cprime%7D%28k%29%3D%281-%5Cepsilon%29%20H%28q%2C%20p%29%2B%5Cepsilon%20H%28u%2C%20p%29%0A)
Inception 结构
Inception V2 相对于 Inception V1 做出了如下的变化:
- 采用 3 个
3*3卷积替换 1 个7*7卷积,并且在第一个卷积就采用 stride=2 来降低分辨率 - 第二个 3个
3*3卷积在第二个卷积才下降分辨率 - 在第一个 block 增加一个 Inception-moudle,第一个 Inception-moudle 只是将
5*5卷积替换为2个3*3 - 第二个 block ,处理
17*17特征图,采用非对称卷积 - 第三个 block,处理
8*8特征图,遵循准则2,提出扩展卷积 - 最后输出 2048 个神经元,V1 是 1024 个


Inception V3 相比于 Inception V2 有哪些修改:
- 采用 RMSProp 优化方法
- 采用 Label Smooth 正则化方法
- 采用非对称卷积提取
17*17特征图 - 采用带 BN 的辅助分类层
低分辨率图像分类策略
文中方案如下:
将第一个卷积层 stride = 2 改为 stride = 1,用于处理 151*151 图像
将第一个卷积层 stride = 2 改为 stride = 1,移除第一个池化层,用于处理 79*79 图像
借鉴思路:修改网络模型头部 stride 和 池化,来处理低分辨率图片,竟可能的保留原网络模型结构,损失网络精度

ResNet
Deep Residual Learning for Image Recognition
CVPR 2016
研究背景和意义
背景
ILSVRC-2015
相关研究
- Residual Respresentations
- Highway Network
成果
- ILSVRC 分类、定位、检测冠军及coco分割、检测冠军
- 成功训练了 1202 层卷积神经网络
意义
神经网络历史的有一里程碑,引入了shortcut,shortcut成为卷积神经网络的标配
神经网络退化问题
从理论上讲神经网络随着层数的加深,它的拟合能力会更强,然而由于缺乏有效的优化方法,深层次的网络难以训练,出现精度下降的情况。残差网络的出现,残差的出现就是为了解决这个问题。
残差结构
Architecture of Residual Learning
启发:既然深层次的网络会退化,那么先确保,深层次网络和浅层次的网络效果相同,即构建“恒等映射”,再恒等映射的基础上进行学习“残差”。Residual block 如下下图所示:

%3DW_2%20%5Ccdot%20Relu%20%5Ccdot%20W_1%20%5Ccdot%20x%20%5C%5C%0AH(x)%3DF(x)%2Bx%3DW_2%20%5Ccdot%20Relu%20%5Ccdot%20W_1%20%5Ccdot%20x%20%2B%20x%0A#card=math&code=F%28x%29%3DW_2%20%5Ccdot%20Relu%20%5Ccdot%20W_1%20%5Ccdot%20x%20%5C%5C%0AH%28x%29%3DF%28x%29%2Bx%3DW_2%20%5Ccdot%20Relu%20%5Ccdot%20W_1%20%5Ccdot%20x%20%2B%20x%0A)
若 %3D0#card=math&code=F%28x%29%3D0), 则
%3Dx#card=math&code=H%28x%29%3Dx),网络实现恒等映射。
Shortcut mapping strategy
当 的维度和
#card=math&code=F%28x%29) 维度不匹配时论文中的策略有如下:
Identity 与 #card=math&code=F%28x%29) 的结合方式:
- A-全零填充:维度增加的部分采用零来填充
- B-网络层映射:当维度发生变化时通过网络层进行映射(例如:
1*1卷积)特征图置相同的位置 - C- 所有的 Shortcut 均通过网络层进行映射
Shortcut mapping 有利于梯度的传播
这个也是网络能够加深的原因,缓解了梯度消失问题。
ResNet 结构
划分为 6 个stage
- 头部迅速的降低分辨率
- 4 阶段残差结构堆叠,每个阶段开始的第一个层 strid = 2 进行降采样
- 全局平均池化 + Fc层输出

残差结构堆叠方式
- Basic:两个
3*3卷积核 - Bottlenneck:利用
1*1卷积减少计算量

预热训练
warmup
避免一开始较大的学习率导致模型的不稳定,因而一开始时就使用较小的学习率训练一个epochs ,然后恢复正常的学习率。
GoogleNetv4
Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
AAAI 2017
研究背景和意义
背景
ILSVRC,相关研究:Residual Connections、GoogleNet-v1\v2\v3
- GoogleNet-V1 (Inception-V1):
1*1卷积,Inception模块 - GoogleNet-V2 :Batch Normalization,小卷积核叠加代替大卷积核
- GoogleNet-V3 (Inception-V2 Inception-V3):四个模型设计准则、两种卷积分解方式、特征图下降策略
- ResNet
成果
ILSVRC 超越 ResNet-152;将 Inception 和 ResNet 结合;
| 模型 | 时间 | top-5 |
|---|---|---|
| AlexNet | 2012 | 15.3% |
| ZFNet | 2013 | 13.5% |
| VGG | 2014 | 7.3% |
| GoogleNet | 2014 | 6.6% |
| Googlenetv2 | 2015 | 4.9% |
| GoogleNetv3 | 2015 | 3.6% |
| ResNet-152 | 2015 | 3.6% |
| GoogleNetv4 | 2016 | 3.1% |
提供创新思路
强强联手 A+B=AB
Inception-v4
借鉴意义:stem 模块快速的下降特征图分辨率,便于后面的堆叠。

Inception-Residual

激活值缩放
Scaling of Residuals
激活值的缩放有利于模型的“稳定”,对于通道数量特别高的时候,论文中发现很多神经元是“死”的,值为0。即没有进行参数的更新。所以缩小残差网络的输出值,防止网络输出过大造成不稳定。
类似的方法,在 residul networks 中也有体现,进行 warmup 小学习率的预训练。
ResNeXt
Aggregated Residual Transformations for Deep Neural Networks (CVPR2017)
背景、成果和意义
背景
ILSVRC-2016
- VGG: 代码块堆叠block,结构简洁,高度可调节
- ResNet:Residual Connection
- Inception系列:split-transform-merge 思想,缺点超参多泛化性能差
成果
- ILSVRC-2016 分类亚军
- ImageNet-5K和COCO超越ResNet
意义
- 提炼
split-transform-merge思想 - 提炼
block堆叠思想 - 引入
cardinal指标,为 CNN 模型提供新思路 | 模型 | 时间 | top-5 | | —- | —- | —- | | AlexNet | 2012 | 15.3% | | ZFNet | 2013 | 13.5% | | VGG | 2014 | 7.3% | | GoogleNet | 2014 | 6.6% | | Googlenetv2 | 2015 | 4.9% | | GoogleNetv3 | 2015 | 3.6% | | ResNet-152 | 2015 | 3.6% | | GoogleNetv4 | 2016 | 3.1% | | ResNeXt | 2016 | 3.0% |
聚合变换
Aggregated Transformations
一个神经元的操作
- Splitting: X 分解为D个元素,可以理解为低维嵌入(D->1)
- Transforming: 每个元素进行变换,在此仅仅做了乘法
- Aggregating: 对D个变换后的结果进行聚合(求和)

Inception 也可以理解为做了聚合变换
ResNeXt 中的聚合变换
与Inception想比较 ResNeXt 可以减少过度适应性风险,模型的泛化能力更强。
- Splitting: 通过,
1*1卷积实现低维嵌入,256通道变成4个通道,总共32个分支(cardinality=32) - Transforming: 每个分支进行变化(用网络层对数据进行操作)
- Aggregating: 对32个分支得到的变换结果—特征图,进行聚合(求和)

ResNeXt Block 三种等效形式

分组卷积
将特征图进行分组,每组内部进行正常卷积,然后通道拼接,得到输出特征图,AlexNex因为条件限制,所以实施的就是分组卷积
分组卷积有利于减少参数的个数,可以采用更多的卷积核,同时也有利于不同的分组学习到不同的特征,提高分组数量(即 cardinality)更加有利于提高网络的性能

参数计算方法:
- 未进行分组的计算:
- 进行分组后的计算:
*3%20%3D%20216#card=math&code=%28%5Cfrac%7B12%7D%7B3%7D%2A3%2A3%2A2%29%2A3%20%3D%20216)
容易得到分组卷积相比于未分组小了 ,其中
是分组的组数,也是cardinality。
ResNext 网络结构

DenseNet
Densely Connected Convolutional Networks (CVPR 2017)
背景、意义和研究成果
相关研究
- ResNet: 沿用VGG的简洁结构设计,同时堆叠的 Building Block 采用残差结构
- Short Paths :Highway Net,Fractalnet,ResNet。深度神经网络中存在信息流通不畅的问题—输入数据消失一级梯度消失
- 多级特征复用:FCN,Multi-scale recognition with DAG_CNNs。优点:无需额外计算,可得到底层、中层和高层的特征来进行分类,使得模型更加鲁棒
- 结构相近的研究
成果
- ImageNet-1k 数据集上全面超越了 ResNet,精度相同时,参数普遍减半
- Cifar-10 和 SVHN,Cifar-100 全面超越 ResNet ,且参数更少 三分之一
- CVPR2017 Best Paper
研究意义
对神经网络中 short path 和 feature resuse 发挥到极致,让研究者重新思考认识 short path 和 feature resuse 的意义
DenseNet基本组件
- Dense connectivity
稠密链接:在每一个 Block 中,每一层的输入来自于它前面所有层的特征图,每一层的输出都会直接连接到后面所有层的输入
#card=math&code=%5Cmathbf%7Bx%7D%7B%5Cell%7D%3DH%7B%5Cell%7D%5Cleft%28%5Cleft%5B%5Cmathbf%7Bx%7D%7B0%7D%2C%20%5Cmathbf%7Bx%7D%7B1%7D%2C%20%5Cldots%2C%20%5Cmathbf%7Bx%7D_%7B%5Cell-1%7D%5Cright%5D%5Cright%29) ,在
层的网络中
%2F2#card=math&code=L%2A%28L%2B1%29%2F2)个连接。

优点:
- 更少的参数得到更多的特征,应为复用会把前面几层的输出,作为输入在通道维度上进行拼接
- 低级特征得以复用
- 更强的梯度流动,跳层连接更多,梯度更容易前向传播
- Composite function
将 BN 层、Relu 层 和3*3卷积层组成一组操作对特征进行提取。为什么 BN,Relu 在 Conv 之前呢?因为在通道维度上叠加的特征图可能来自于不同的分布。 - Pooling Layer
池化层用于降低特征图分辨率,DenseNet 将特征图分辨率下降操作设置为Translation Layer,由 BN,1*1卷积,2*2池化构成。Translation Layer只会发生在 Block 之间,Block 内部需要保持特征图分辨率一致。 - Grown Rate
稠密链接的通道数量会随着层的加深,不断增多,因此要控制特征图的数量,超参数描述每一层输出特征图的通道数量,第
层的通道总数量
#card=math&code=k_0%2Bk%5Ctimes%28l-1%29)
- Bottleneck layers—DensNet-B
降低特征图通道数,减少后续卷积层计算量。将 BN 层、Relu 层 和1*1卷积层,将特征图的通道数量调整为。该结构发生在 Block 内部特征图之间,特征图计算发生其实包含两个 Composite function,第一个, BN 层、Relu 层 和
1*1卷积层,进行降维;第二个,BN 层、Relu 层 和3*3卷积层,进行特征提取计算。 - Compression
为了进一步使得 Desnet 更加的紧凑,在 transition layer 处采用较小的卷积核提取特征,从而压缩特征图通道数,压缩率用表示,通常
,采用了 Compression 的模型称为
DensNet-C。即采用 Bottleneck layer 又采用 Compression的模型被称为DensNet-BC

创新点和缺点总结
创新点:
- 将捷径链接和特征复用思想相互结合,同时借鉴级联结构思想,设计出稠密结构
- 针对稠密结构,提出 DenseNet-BC 结构,分别在 block 内部和 transition 部分采用
1*1卷积,进行参数控制,使得模型紧凑
缺点:
DenseNet 训练时占用显存比较多,需要花费更多的显存,去存储输出特征图
SENet
Squeeze-and-Excitation Networks (CVPR2018)
背景、成果和意义
背景
注意力机制,用一些网络计算出特征图对应的权重值,对特征图进行“注意力”机制
相关研究
- STNet :spatial-transform Net,空间变换网络:提出了 spatial transformer 模块,用于增强 CNN 对图像空间变换的鲁棒性
将形变的位置偏离的图像变换到图像的中间,使得网络对空间变换更加鲁棒 - Attention ResNet:提出一种 Residual Attention Moudle,Bottom-up Top-down 的前向 Attention 机制。其他利用 Attention的网络,往往需要新增一个分支来提取 Attention,并进行单独的训练,而本文提出的模型能够在一个前向过程中就提取模型的 Attention,使得模型训练更加简单。
- CBAM:提出了一种注意力机制,一个针对通道维度,一个针对空间维度,注意力可以分为不同的维度进行。
成果
- CVPR 2018 引用第一的论文
- ILSVRC 2017 分类冠军(最后一届)
- Cifar-10/100,Places365,COCO,ImageNet-1K数据集均超越主流模型 | 模型 | 时间 | top-5 | | —- | —- | —- | | AlexNet | 2012 | 15.3% | | ZFNet | 2013 | 13.5% | | VGG | 2014 | 7.3% | | GoogleNet | 2014 | 6.6% | | Googlenetv2 | 2015 | 4.9% | | GoogleNetv3 | 2015 | 3.6% | | ResNet-152 | 2015 | 3.6% | | GoogleNetv4 | 2016 | 3.1% | | ResNeXt | 2016 | 3.0% | | SENet | | 2.25% |
意义
较早的将注意力机制引入到卷积神经网络,并且该机制是一种即插即用的模块,可以嵌入任意主流的卷积神经网络中,为卷积神经网络模型设计提供新思路—-即插即用模块设计
Squeeze and Excitation

Squeeze : Global Information Embedding
采用全局平均池化,即压缩 H*W 至 1*1 ,利用一个像素来表示一个通道,实现低维嵌入

Excitation : Adaptive Recalibration
第一个全连接层激活函数为 Relu,第二个全连接层激活函数为 Sigmod
重要参数:reduction ratio r 控制第一个全连接层神经元个数,进而影响 SE Block 的参数量

SE Block 嵌入方式
SE Block 只重构不改变原来的特征图


总结
论文可以借鉴的地方 Ablation Study 控制变量法进行实验
通过判断注意力输出权重的方差,查看注意力机制是否起到较大的作用,如果作用不大可以剔除,较少模型参数进行压缩模型
