CV--baseline

CV--baseline

  • AlexNet(基于深度卷积神经网络的图像分类)
  • VGG
  • GoogleNet
  • BN(batch normalization)
  • 卷积分解、标签平滑、辅助分类中加BN
  • ResNet
  • ResNeXt
  • DenseNet
  • SENet

AlexNet(基于深度卷积神经网络的图像分类)

网络结构图:
CV--baseline_第1张图片
CV--baseline_第2张图片
CV--baseline_第3张图片

AlexNet特点:

  • RELU激活函数
    relu(x) = max(0, x).relu可以使网络训练更快、防止梯度消失,使网络具有稀疏性。
  • 多GPU训练
  • LRN(local response normalization)
    局部响应标准化:提高网络的泛化能力,受神经元侧抑制启发,即细胞分化变为不同时,会对周围细胞产生拟制信号,阻止他们向相同方向分化,最终表现为细胞命运的不同。
    CV--baseline_第4张图片
    CV--baseline_第5张图片
  • Overlapping pooling(重叠池化)
    训练技巧:
  • 数据增强。(针对位置、针对颜色)
  • dropout

VGG

网络结构
CV--baseline_第6张图片
VGG特点

  • 堆叠33卷积核 可以增大感受视野(2个33堆叠等价于1个55;3个33堆叠等价于1个7*7);增加非线性激活函数,增加特征抽象能力;减少训练参数;

  • 数据增强:两种(针对位置、针对颜色)
    针对位置:在训练阶段,按比例缩放图片至最小边S,随机位置裁剪出224*224区域,随机进行水平翻转。
    S设置方法:固定值(256或384);随机值,即每个batch的S在[256,512],实现尺度扰动。
    针对颜色:修改RGB通道的像素值,实现颜色扰动。

  • 预训练模型初始化,即模型加深时,可以利用浅层模型初始化;multi-scale训练时,用小尺度初始化。

  • 多尺度测试,图片等比例缩放至最短边Q。设置三个Q,对图片进行预测取平均。
    当S为固定值时,Q=[S-32,S,S+32]
    当S为随机值时,Q=[S_min,0.5*(S_min+S_max),S_max]
    CV--baseline_第7张图片

  • 稠密测试,将FC层转换为卷积操作,变为全卷积网络,可实现任意尺寸图片输入。
    CV--baseline_第8张图片

GoogleNet

CV--baseline_第9张图片

  • 三阶段:conv-pool-conv-pool 快速降低分辨率;堆叠inception module;FC层分类输出。
  • 堆叠使用inception module,达到22层
  • 增加两个辅助损失,缓解梯度消失(中间层特征具有分类能力)

inception module
CV--baseline_第10张图片
特点:

  • 多尺度卷积操作提取特征
  • 1*1卷积降维(压缩厚度),信息融合
  • 3*3 max pooling 保留了特征图数量

训练技巧

  • 辅助损失:增加loss回传;充当正则约束,迫使中间层特征也能具备分类能力

  • 学习率下降策略:每8个epoch下降4%

  • 数据增强:图像尺寸均匀分布在8%-100%之间;长宽比在[3/4,4/3]之间;photometric distortions有效(亮度、饱和度和对比度)
    测试技巧:

  • multi crop
    CV--baseline_第11张图片

  • model fusion(模型融合)
    稀疏结构
    CV--baseline_第12张图片

BN(batch normalization)

BN:批次归一化。
CV--baseline_第13张图片
存在问题:使神经元输出值在sigmoid线性区。
解决办法:引入可学习参数 γ \gamma γ β \beta β,增加线性变换,提高网络表达能力。即:
y ( k ) = γ ( k ) x ^ ( k ) + β ( k ) y^{(k)}=\gamma^{(k)}\widehat{x}^{(k)}+\beta^{(k)} y(k)=γ(k)x (k)+β(k)
CV--baseline_第14张图片
存在问题:mini-batch的统计信息充当总体是不准确的。
解决办法:采用指数滑动平均
在这里插入图片描述
m v 1 = ( 1 − d e c a y ) ∗ a t mv_1=(1-decay)*a_t mv1=(1decay)at
a t a_t at:当前值
m v t mv_t mvt:指数滑动平均值
t − i > C t-i>C ti>C C C C无穷大时:
d e c a y t − i ∗ ( 1 − d e c a y ) ∗ a t ≈ 0 m v t ≈ ∑ i = t − C t d e c a y t − i ∗ ( 1 − d e c a y ) ∗ a t decay^{t-i}*(1-decay)*a_t\approx0 \\ mv_t\approx\sum_{i=t-C}^t decay^{t-i}*(1-decay)*a_t decayti(1decay)at0mvti=tCtdecayti(1decay)at
m v t mv_t mvt只和 a t − C , a 2 , … , a t a_{t-C},a_2,\dots,a_t atC,a2,,at有关。
batch normalization实现
CV--baseline_第15张图片
BN优点

  • 可采用较大学习率
  • 充当正则,可顶替dropout

卷积分解、标签平滑、辅助分类中加BN

网络设计准则

  • 尽量避免信息瓶颈,通常发生在池化层,即特征图变小,信息量减少

  • 采用更高维的表示方法能够更容易地处理网络地局部信息

  • 大的卷积核可以分解为数个小卷积核,且不会降低网络能力

  • 把握好深度和宽度的平衡。
    卷积分解

  • 1个55卷积可分解为2个33卷积,参数减少 1 − ( 9 + 9 ) / 25 = 28 % 1-(9+9)/25=28\% 1(9+9)/25=28%

  • 1个nn卷积可分解为1n卷积和n*1卷积堆叠
    辅助分类层
    用于缓解梯度消失,提升底层的特征提取能力。

  • 辅助分类层在初期起不到作用,在后期才能提升网络性能

  • 移除第一个辅助分类层不影响精度

  • 辅助分类层可辅助底层提取特征是不正确的

  • 辅助分类层对模型起到正则作用
    特征图下降策略
    传统池化方法存在信息表征瓶颈,即特征图信息变少了。
    简单解决方法:先用卷积将特征图通道数翻倍,再用池化。(问题:计算量过大)
    解决方法:用卷积得到一半特征图,用池化得到一半特征图。用较少的计算量获得较多的信息,避免信息表征瓶颈。
    标签平滑(label smoothing)
    传统的one-hot编码存在问题:过度自信,导致过拟合。
    标签平滑:把one-hot中概率为1的哪一项进行衰减,避免过度自信,衰减的那部分confience平均分到每一个类别中。
    标签平滑公式:
    交叉熵: H ( q , p ) = − ∑ k = 1 k l o g ( p k ) q k H(q,p)=-\sum_{k=1}^klog(p_k)q_k H(q,p)=k=1klog(pk)qk
    将q进行标签平滑变为q,让模型输出的p分布去逼近q,即 q ′ ( k ∣ x ) = ( 1 − ϵ ) δ k , y + ϵ u ( k ) q'(k|x)=(1-\epsilon)\delta_{k,y}+\epsilon u(k) q(kx)=(1ϵ)δk,y+ϵu(k),其中 u ( k ) u(k) u(k)为一个概率分布
    标签平滑后的交叉熵损失函数为:
    H ( q ′ , p ) = − ∑ k = 1 k l o g ( p k ) q k ′ = ( 1 − ϵ ) H ( q , p ) + ϵ H ( u , p ) H(q',p)=-\sum_{k=1}^klog(p_k)q'_k=(1-\epsilon)H(q,p)+\epsilon H(u,p) H(q,p)=k=1klog(pk)qk=(1ϵ)H(q,p)+ϵH(u,p)

ResNet

CV--baseline_第16张图片
残差结构
CV--baseline_第17张图片
残差结构:拟合F(x)使网络层更容易学习到恒等映射的可能,恒等映射使深层网络不至于比浅层网络差,避免网络退化问题。同时有利于梯度传播,避免梯度消失。
网络退化:越深的网络拟合能力越强,理论上越深的网络训练误差应该越低,但实际效果相反。
网络退化原因:网络优化困难。

ResNeXt

聚合变换
CV--baseline_第18张图片
splitting:X分解为D个元素,可理解为地位嵌入
transforming:每个元素进行变换(乘法)
aggregating:对D个变换后的结果进行聚合。
ResNeXt中的聚合变换block
CV--baseline_第19张图片

  • splitting:通过1*1卷积实现低维嵌入,256通道变为4个通道,总共32个分支

  • transforming:每个分支进行变换

  • aggregating:对32个分支得到的变换结果–特征图进行聚合
    block的三种等效形式

  • splitting-transforming-aggregating
    CV--baseline_第20张图片

  • 将各分支的最后一个1*1卷积融合成一个卷积
    CV--baseline_第21张图片

  • 将各分支的第一个11卷积融合称一个卷积,33卷积采用分组卷积的形式,分组数等于基数
    CV--baseline_第22张图片
    分组卷积
    CV--baseline_第23张图片
    分组卷积用更少的参数得到相同的特征图。
    ResNeXt结构

CV--baseline_第24张图片

  • 头部迅速降低分辨率
  • 4阶段残差结构堆叠
  • 池化+FC层输出
    与ResNet的唯一不同:加入分组卷积,节省参数量。

DenseNet

short paths
深度神经网络中存在信息流通不畅问题:输入数据消失以及梯度消失。

  • Highway Net: y = H ( x , W H ) ⋅ T ( x , W T ) + x ⋅ C ( x , W C ) y=H(x,W_H)·T(x,W_T)+x·C(x,W_C) y=H(x,WH)T(x,WT)+xC(x,WC)
    T和C为门控单元
  • ResNet
  • Fractalnet
    CV--baseline_第25张图片
    多级特征复用
    多级特征复用可增强模型表征能力。
    CV--baseline_第26张图片
    稠密链接
    在每一个block中,每一层的输入来自它前面所有层的特征图,每一层的输出均会直接连接到它后面所有层的输入。
    L层网络中,有 L ∗ ( L + 1 ) / 2 L*(L+1)/2 L(L+1)/2
    优点:
  • 用较少参数获得更多特征,减少了参数
  • 低级特征得以复用,特征更加丰富
  • 更强的梯度流动,跳层连接更多,梯度可更容易向前传播。
    CV--baseline_第27张图片
    transition layer
    池化层用于降低特征图分辨率,DenseNet将特征图分辨率下降操作称为transition layer,由BN、11卷积、22池化构成。
    Growth rate
    CV--baseline_第28张图片
    bottleneck layers
    瓶颈层用于降低特征图通道数,减少后续卷积的计算量。
    CV--baseline_第29张图片
    DenseNet
    CV--baseline_第30张图片
    整体分为三大块:头部卷积、Dense Block堆叠、全连接输出分类概率。
    CV--baseline_第31张图片

头部卷积
CV--baseline_第32张图片

SENet

squeeze and excitation
CV--baseline_第33张图片

  • squeeze:global information embedding
    采用全局池化,即压缩H和W至1*1,利用1个像素来表示一个通道,实现低维嵌入。

  • excitation:adaptive recalibration
    在这里插入图片描述
    SE Block
    CV--baseline_第34张图片

  1. squeeze 压缩特征图至向量形式
  2. excitation 两个全连接层对特征向量进行映射变换
  3. scale 将得到的权重向量与通道的乘法。
    CV--baseline_第35张图片

你可能感兴趣的:(CV-图像处理,计算机视觉,深度学习,人工智能)