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:就是最后概率向量最大的前五名中,只要出现了正确概率即为预测正确,否则预测错误。

研究成果

模型集成提升指标的思路

CVBaseLine - 图1

研究意义

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

CVBaseLine - 图2

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

网络的结构

CVBaseLine - 图3

网络结构在最新的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。细胞分化为不同时,会对周围的细胞产生抑制信号,阻止它朝着相同的方向分化,最终表现细胞的命运不同。
在神经网络中,特征图同一位置,不同通道之间的

CVBaseLine - 图4%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)

其中,
CVBaseLine - 图5
CVBaseLine - 图6 :代表通道
CVBaseLine - 图7:平方累加索引
CVBaseLine - 图8:像素的索引
CVBaseLine - 图9:代表 feature map 某个位置像素,第 CVBaseLine - 图10 个通道的值
CVBaseLine - 图11:表示通道的总数量。

什么是 Overlapping Pooling ,它的效果是什么?
CVBaseLine - 图12 时被称为 Overlapping Pooing,采样时会有像素共享。通常是 CVBaseLine - 图13 不存在像素共享。
提升泛化能力,提升准确率。

如何做 Data Augmentation,它的效果是什么(重要)?
提高了泛化能力,增强了神经网络对位置和颜色的鲁棒性。
方法一:针对位置
训练阶段:

  • 图片统一缩放至 256*256
  • 随机位置裁剪出224*224
  • 随机水平翻转

测试阶段:

  • 图片统一缩放至 256*256
  • 裁剪出5个 224*224 区域
  • 进行水平翻转,共得到 10 张 224*224 图片

方法二:针对颜色
进行颜色扰动,效果有限

什么是 Dropout,它的效果是什么?(重要)
提高了神经网络的泛化能力,防止过拟合。
训练阶段:
以概率 CVBaseLine - 图14 随机保留一些节点,被丢弃的值权重设置为 0
测试阶段:
测试阶段为了保持期望的相同,每个节点的输出值,都要乘以 概率 CVBaseLine - 图15

启发点

  • 深度宽度决定网络的能力
  • 更强的 GPU 和更多的数据可以提升模型的能力
  • 图片缩放,先对短边进行缩放
  • ReLU 不需要进行标注化防止饱和现象,而 sigmoid 和 tanh 有必要进行标准化
  • 卷积核可以学习到频率、方向和颜色特征
  • 相似的图片具有“相近”的高级特征
  • 图像检索可基于高级特征,效果应该优于基于原始图像
  • 网络结构具有相关性,不可轻易移除某一层
  • 采用视频数据可能有新突破

VGGNet

Very deep convolutional networks for large-scale image recognition
ICLR 2015

研究背景、意义

ILSVRC:大规模图像识别挑战赛
相关研究

  1. Alexnet:ILSVRC-2012分类冠军,里程碑的 CNN 模型
  2. ZFnet:ILSVRC-2013分类冠军,对 Alexnet 做改进
  3. Overfeat:ILSVRC-2013定位冠军,集分类、定位和检测于一体的卷积神经网络 | 模型 | 时间 | top-5 | | —- | —- | —- | | Alexnet | 2012 | 15.3% | | ZFnet | 2013 | 13.5% | | VGG | 2014 | 7.3% |

思路借鉴:

  1. AlexNet:借鉴卷积模型结构
  2. ZFNet:借鉴小卷积核思想
  3. OverFeat:借鉴全卷积,实现高效稠密(Dense)预测
  4. NIN:尝试 1*1 卷积

研究意义:

  1. 开启了小卷积核时代,3*3 卷积称为主流
  2. 作为各种图像任务的骨干网络结构:分类、定位、检测、分割一系列的图像任务的大都有 VGG 作为骨干网络的尝试

模型结构

VGG 11~19 的演变结构如图所示

CVBaseLine - 图16

5个网络的共性:

  1. 都有 5 个 maxpool 层,DownSample 只发生在 pool 层,采样的倍数是 stride = 2
  2. maxpool 后通道数量都会增加
  3. maxpool 层之间使用卷积层进行特征提取,
  4. 3 个 FC 层进行分类输出

网络的特性:

  1. 堆叠 3*3 用于增加感受野

如图所示,两个 3*3 等价于一个 5*5 ,三个 3*3 等价于一个 7*7

CVBaseLine - 图17

CVBaseLine - 图18

堆叠 3*3 有如下优势:

  • 大感受野
  • 增加非线性激活函数,增强非线性表达能力
  • 减少训练参数
  • 可以看成 7*7 卷积核的正则化,进行分解 3 个 3*3
  1. 尝试 1*1 卷积

受启发于 NIN

训练测试技巧

  • 数据增强(data augmentation)
    方法一:针对位置和尺寸 (尺度扰动)
    训练阶段:
  1. 按比例缩放图片最小边为 S
  2. 随机位置裁剪出 224*224 区域
  3. 随机进行水平翻转
    方法二:针对颜色
    修改 RGB 通道的像素值,实现颜色扰动

    S 设置方法:

  4. 固定值:固定为 256 或者 384

  5. 随机值:每个 batch 在 S 在 CVBaseLine - 图19 ,实现尺度扰动
  • 模型的初始化(已经过时)
    现在 BN 层,Xavier 初始化方法出现,不需要再进行过于细致的模型参数初始化
  1. 深度加深时,用浅层网络初始化
    B,C,D,E 用 A 模型初始化
  2. Multi-scale 训练时,用小尺度初始化
    S = 384时,用 S = 256 初始化
    S 在 CVBaseLine - 图20时,用 S = 384 初始化模型
  • 多尺度测试
    等比例缩放图像最短边为 Q,一共有两种缩放方式。
    方法一:当 S 为固定尺寸
    CVBaseLine - 图21
    方法二:当 S 为随机值时
    CVBaseLine - 图22%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)
    测试方法:
    1. Dense Test
      将 Fc 层变为卷积层,实现任意图片的输入,随后进行 Sum Pooling,并计算平均值,得到 shape (1,1000) 出处向量
    2. Multi-scale
      多个位置裁剪出 224*224 区域
    3. 以上两种方法的混合方法,取平均

      GoogleNet

      Going Deeper with Convolutions
      2015 IEEE

      研究背景和意义

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. 多尺度
  2. 1*1 卷积降维度,信息融合
  3. 3*3 max pooling 保留了特征图的数量

为什么要使用 1*1 卷积核,降低通道数量,减少参数个数

CVBaseLine - 图23

网络结构

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

CVBaseLine - 图24

训练技巧

学习率下降策略:
每 8 个 epoch 下降 4% 可见下降的速度是相当缓慢的,CVBaseLine - 图25 ,总共的 epoch 的数量应该是相当大的。
这么做会使得,loss 图像和准确率图像十分平滑。学习率的下降幅度大,会导致函数曲线的波动也会变大。
数据增强:

  1. 图像尺度均匀分布在 8%~100% 之间
  2. 长宽比在 CVBaseLine - 图26 之间
  3. Photometric distortions 有效,如亮度、饱和度、对比度等

测试技巧

Multi-Crop
一张图边为 CVBaseLine - 图27 张图
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,内部协变量偏移)
训练的过程中,权重的不断更新,导致神经网络后面的隐藏层分布发生变化,导致模型训练困难,对神经网络音响极大

CVBaseLine - 图28

白化(whitening)
白化,去除数据的冗余信息,使得数据特征之间的相关性降低,所有的特征具有相同的方差
依概率论:CVBaseLine - 图29%3D%5Cfrac%7Bx-mean%7D%7Bstd%7D#card=math&code=N%28x%29%3D%5Cfrac%7Bx-mean%7D%7Bstd%7D) ,使得 CVBaseLine - 图30 变为 0 均值,1 标注差。

研究成果

  1. 提出了 BN 层加快了模型的收敛,比 goolgenet-v1 块数十倍,获得更优的结果。
  2. ILSVRC 分类任务 SOTA

BN层优点:

  1. 可以用更大的学习率,加速模型的收敛(设置较小的学习率,缓解这个问题)
  2. 可以不用精心设计权值初始化(也是在做权重特征分布的稳定)
  3. 可以不用 dropout 或者较小的 dropout
  4. 可以不同 L2 或者较小的 weight decay(BN 有一定的正则效果,保留了相对差异,缩小了绝对差异,有了一定的约束
  5. 可以不同 LRN (local response normalization)

研究意义:

  1. 加快了深度学习的发展
  2. 开启了神经网络设计的新时代,标准化层 已成为深度神经网咯的标配

在 Batch Normalization 基础上扩展出了一系列标准化网络层,如 Layer Normalization (LN),Instance Normalization (IN),Group Normalization (GN)
之间的相同点:
都会进行标准化计算,线性偏置计算
不同点:
标准化所用到的均值和方差计算的方法不同

CVBaseLine - 图31

BN 层在训练和推理的流程

BN 层介于神经元输出 和 激活函数之间
Batch Normalization:批标准化
批是指一批数据:通常为 mini-batch
标准化:使得分布 mean = 0,std = 1

CVBaseLine - 图32%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 中的标准化,其中,CVBaseLine - 图33 表示维度。每个特征图的标准化,发生在每个神经元,单个维度上。而不是对整张特征图所有维度统一进行计算。
整个特征图上的描述公式如下:
CVBaseLine - 图34

其中 CVBaseLine - 图35 表示一批次中特征图的 index。
但是,仅仅是进行标准化还是存在一些问题,使得神经元输出的值在 sigmoid 线性区域,削弱了神经网络的非线性表达能力。于是,采用了可以学习的参数,进行线性偏置计算。下面是单个神经元,单个维度的表示:
CVBaseLine - 图36%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)
整个特征图上的描述公式:
CVBaseLine - 图37%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. 减去均值,除以标准差(CVBaseLine - 图38 防止分母为 0)
Step4. 线性变化,乘以 CVBaseLine - 图39 加上 CVBaseLine - 图40 ,实现缩放与平移
CVBaseLine - 图41

存在问题:
mini-batch size 过小的时候,计算出的每个 batch 的均值和方差,与整体的均值和方差,有一定的误差。

注意事项:

  1. BN 的前一层不要加偏置,就算是加了偏置,在标准化时也会被抵消,同时 BN 层的最后一步也提供了偏置;
  2. 卷积神经网络中,是针对特征图进行 BN 的,并且在多个输出通道上分别计算,即 2D 的 BN 操作;
  3. BN 层在训练和推理的流程是不一样的,训练时会有可以学习参数,训练阶段均值和方差采用相应 batch 进行计算;测试阶段图片一张一张输入e,均值是各训练时批次均值的期望,是无偏估计,方差是各 batch 方差的无偏估计 ,这也是为什么 Pytorch 为什么要调整训练 model.train() 或者评估模式 model.eval() 的原因之一。

为什么会这样计算无偏估计量,softmax 属于极大似然估计。
CVBaseLine - 图42

模型结构的变化

相对于 v1 的改进:

  1. 激活函数前,加入 BN
  2. 5*5 卷积替换为,两个 3*3 卷积
  3. 增加了 Inception Module 模块的数量
  4. 增加了出处通道的数量
  5. 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%

研究成果:

  1. 提出了 Inception-V2 和 Inception-V3 其中 V3 获得 ILSVRC 分类任务 SOTA
  2. 提出了 4 个模型设计准则
  3. 提出了卷积分解、高效降低特征图分辨率方法和标签平滑正则化技巧,提高网络速度和精度(应该有更新的方法迭代?)

网络设计准则

4 个网络设计准则

  1. 尽量避免信息瓶颈,通常发生在池化层,即特征图变小,信息量减少
  2. 采用更高维的方法能够更容易处理网络的局部信息
  3. 大的卷积核可以分解为数个小的卷积核,且不会降低网络能力
  4. 把握好深度和宽度的平衡

卷积分解

Factorizing Convolutions

  • 大的卷积核分解为小的卷积核堆叠
    1 个 5*5 卷积分解为 2 个 3*3 卷积堆叠,参数减少 CVBaseLine - 图43%2F25%20%3D%2028%25#card=math&code=1%20-%20%289%2B9%29%2F25%20%3D%2028%25)

CVBaseLine - 图44

CVBaseLine - 图45

  • 分解为非对称卷积(Asymmetric Convolutions)

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

CVBaseLine - 图47

辅助分类层再探讨

Auxiliary Classifer
在 GoogleNet V1 中用于提升低层特征提取能力,缓解梯度消失。

  1. 辅助分类层在初期不起作用,后期才能提升网络性能
  2. 移除第一个辅助分类层不影响精度
  3. 辅助分类层可以辅助低层特征提取是不正确的,思考可能的原因是:特征提取还是 low level 很难做分类任务
  4. 辅助分类层对模型起到正则作用
  5. Googlenet-v3 在 17*17特征图结束输入辅助分类层

高效的特征图下降策略

特征图下降策略
传统的池化方法存在信息表征瓶颈(representional bottleneck),违反设计准则1,在中间层特征图信息变少,如下图左侧所示。

CVBaseLine - 图48

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

CVBaseLine - 图49

应用场景:
Inception Moudle 中用于 35*35 下降至 17*17 ,以及从 17*17 下降至 8*8

标签平滑

Label Smooth
传统的 One-Hot 编码存在问题:过度自信,容易导致过拟合
标签平滑,把 One-Hot 中概率为 1 的哪一项进行衰减,避免过度自信,衰减那部分 confidence 平均分到每一个类别中
举例:4 分类任务中,CVBaseLine - 图50#card=math&code=%5Ctext%7BLabel%7D%3D%280%2C1%2C0%2C0%29)
CVBaseLine - 图51%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):CVBaseLine - 图52%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)
CVBaseLine - 图53 为 one-hot 向量
Label Smoothing:将 CVBaseLine - 图54 进行标签平滑为 CVBaseLine - 图55 ,让模型输出 CVBaseLine - 图56 去逼近CVBaseLine - 图57
CVBaseLine - 图58%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)
其中,CVBaseLine - 图59#card=math&code=u%28k%29) 是均匀分布
CVBaseLine - 图60%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)
标签平滑后的交叉熵损失函数
CVBaseLine - 图61%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 做出了如下的变化:

  1. 采用 3 个 3*3 卷积替换 1 个7*7 卷积,并且在第一个卷积就采用 stride=2 来降低分辨率
  2. 第二个 3个3*3 卷积在第二个卷积才下降分辨率
  3. 在第一个 block 增加一个 Inception-moudle,第一个 Inception-moudle 只是将 5*5 卷积替换为2个 3*3
  4. 第二个 block ,处理 17*17 特征图,采用非对称卷积
  5. 第三个 block,处理 8*8 特征图,遵循准则2,提出扩展卷积
  6. 最后输出 2048 个神经元,V1 是 1024 个

CVBaseLine - 图62

CVBaseLine - 图63

Inception V3 相比于 Inception V2 有哪些修改:

  1. 采用 RMSProp 优化方法
  2. 采用 Label Smooth 正则化方法
  3. 采用非对称卷积提取 17*17 特征图
  4. 采用带 BN 的辅助分类层

低分辨率图像分类策略

文中方案如下:
将第一个卷积层 stride = 2 改为 stride = 1,用于处理 151*151 图像
将第一个卷积层 stride = 2 改为 stride = 1,移除第一个池化层,用于处理 79*79 图像
借鉴思路:修改网络模型头部 stride 和 池化,来处理低分辨率图片,竟可能的保留原网络模型结构,损失网络精度

CVBaseLine - 图64

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 如下下图所示:

CVBaseLine - 图65

CVBaseLine - 图66%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)

CVBaseLine - 图67%3D0#card=math&code=F%28x%29%3D0), 则 CVBaseLine - 图68%3Dx#card=math&code=H%28x%29%3Dx),网络实现恒等映射。

Shortcut mapping strategy
CVBaseLine - 图69 的维度和 CVBaseLine - 图70#card=math&code=F%28x%29) 维度不匹配时论文中的策略有如下:
Identity 与 CVBaseLine - 图71#card=math&code=F%28x%29) 的结合方式:

  • A-全零填充:维度增加的部分采用零来填充
  • B-网络层映射:当维度发生变化时通过网络层进行映射(例如:1*1卷积)特征图置相同的位置
  • C- 所有的 Shortcut 均通过网络层进行映射

Shortcut mapping 有利于梯度的传播
这个也是网络能够加深的原因,缓解了梯度消失问题。

CVBaseLine - 图72

ResNet 结构

划分为 6 个stage

  • 头部迅速的降低分辨率
  • 4 阶段残差结构堆叠,每个阶段开始的第一个层 strid = 2 进行降采样
  • 全局平均池化 + Fc层输出

CVBaseLine - 图73

残差结构堆叠方式

  • Basic:两个 3*3 卷积核
  • Bottlenneck:利用1*1卷积减少计算量

CVBaseLine - 图74

预热训练

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 模块快速的下降特征图分辨率,便于后面的堆叠。

CVBaseLine - 图75

Inception-Residual

CVBaseLine - 图76

激活值缩放

Scaling of Residuals
CVBaseLine - 图77

激活值的缩放有利于模型的“稳定”,对于通道数量特别高的时候,论文中发现很多神经元是“死”的,值为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个变换后的结果进行聚合(求和)

CVBaseLine - 图78

Inception 也可以理解为做了聚合变换

ResNeXt 中的聚合变换
与Inception想比较 ResNeXt 可以减少过度适应性风险,模型的泛化能力更强。

  • Splitting: 通过,1*1卷积实现低维嵌入,256通道变成4个通道,总共32个分支(cardinality=32)
  • Transforming: 每个分支进行变化(用网络层对数据进行操作)
  • Aggregating: 对32个分支得到的变换结果—特征图,进行聚合(求和)

CVBaseLine - 图79

ResNeXt Block 三种等效形式

CVBaseLine - 图80

分组卷积

将特征图进行分组,每组内部进行正常卷积,然后通道拼接,得到输出特征图,AlexNex因为条件限制,所以实施的就是分组卷积

分组卷积有利于减少参数的个数,可以采用更多的卷积核,同时也有利于不同的分组学习到不同的特征,提高分组数量(即 cardinality)更加有利于提高网络的性能

CVBaseLine - 图81

参数计算方法:

  • 未进行分组的计算:CVBaseLine - 图82
  • 进行分组后的计算:CVBaseLine - 图83*3%20%3D%20216#card=math&code=%28%5Cfrac%7B12%7D%7B3%7D%2A3%2A3%2A2%29%2A3%20%3D%20216)

容易得到分组卷积相比于未分组小了 CVBaseLine - 图84,其中 CVBaseLine - 图85 是分组的组数,也是cardinality。

ResNext 网络结构

CVBaseLine - 图86

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 中,每一层的输入来自于它前面所有层的特征图,每一层的输出都会直接连接到后面所有层的输入

CVBaseLine - 图87#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) ,在 CVBaseLine - 图88层的网络中CVBaseLine - 图89%2F2#card=math&code=L%2A%28L%2B1%29%2F2)个连接。

CVBaseLine - 图90

优点:

  1. 更少的参数得到更多的特征,应为复用会把前面几层的输出,作为输入在通道维度上进行拼接
  2. 低级特征得以复用
  3. 更强的梯度流动,跳层连接更多,梯度更容易前向传播
  • 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
    稠密链接的通道数量会随着层的加深,不断增多,因此要控制特征图的数量,超参数 CVBaseLine - 图91 描述每一层输出特征图的通道数量,第 CVBaseLine - 图92 层的通道总数量 CVBaseLine - 图93#card=math&code=k_0%2Bk%5Ctimes%28l-1%29)
  • Bottleneck layers—DensNet-B
    降低特征图通道数,减少后续卷积层计算量。将 BN 层、Relu 层 和 1*1 卷积层,将特征图的通道数量调整为 CVBaseLine - 图94。该结构发生在 Block 内部特征图之间,特征图计算发生其实包含两个 Composite function,第一个, BN 层、Relu 层 和 1*1 卷积层,进行降维;第二个,BN 层、Relu 层 和 3*3 卷积层,进行特征提取计算。
  • Compression
    为了进一步使得 Desnet 更加的紧凑,在 transition layer 处采用较小的卷积核提取特征,从而压缩特征图通道数,压缩率用 CVBaseLine - 图95 表示,通常 CVBaseLine - 图96 ,采用了 Compression 的模型称为 DensNet-C 。即采用 Bottleneck layer 又采用 Compression的模型被称为 DensNet-BC

CVBaseLine - 图97

创新点和缺点总结

创新点:

  • 将捷径链接和特征复用思想相互结合,同时借鉴级联结构思想,设计出稠密结构
  • 针对稠密结构,提出 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

CVBaseLine - 图98

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

CVBaseLine - 图99

Excitation : Adaptive Recalibration
第一个全连接层激活函数为 Relu,第二个全连接层激活函数为 Sigmod

重要参数:reduction ratio r 控制第一个全连接层神经元个数,进而影响 SE Block 的参数量

CVBaseLine - 图100

SE Block 嵌入方式

SE Block 只重构不改变原来的特征图

CVBaseLine - 图101

CVBaseLine - 图102

总结

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