CV深度学习模型基本概述

本文章对CV深度学习的模型做简单的概述,主要目的是了解各模型的特点及模型与模型之间的区别。
模型概述顺序:(AlexNet) —— vgg —— ResNet —— DenseNet —— Res2Net —— Transformer —— VIT —— MAE —— CLIP —— SAM —— DINO
注意:AlexNet之前已经重点介绍过,因此在这篇文章中不再缀述,想了解的可以查看之前文章)

1 vgg模型

1.1 vgg概述及优点

论文地址

  • VGGNet突出贡献是证明了很小的卷积,通过增加网络深度可以有效提高性能;
  • 小卷积核组:通过堆叠多个3*3的卷积核来替代大的卷积核,以减少所需参数;全部使用3x3卷积核,不仅会涉及到计算量,还影响到感受野。在VGG中,使用3个3x3卷积核来替代7x7卷积核,主要目的是保证在具有相同感受野的条件下,提高网络深度,一定程度上提升神经网络的效果。
那么什么是感受野呢?

感受野,简单理解是输出Feature Map上的一个神经元对应输入层的区域大小。
举例说明,如下图所示,最左边的图,使用三次3x3的卷积后,更改最后一层的节点将会影响第一层的所有节点;而最右边的图,同理,使用一次7x7的卷积后,更改最后一层的节点将会影响到第一层的所有节点。

因此:3个cov3与一个conv7最终得到结果的感受野相同

如何影响计算量、参数量的呢?

计算参数量的公式为:
params = (kernel_size kernel_size channel_in+1)* channel_out**
由于在实验中用三层3x3卷积代替一层7x7卷积。在输入通道数in和输出通道数out一致的情况下,参数量分别是(27in+3)out和(49 in+1) out。

  • 小池化核:vgg使用的池化核大小为22,而在AlexNet中使用的是33的池化核;

  • 去掉LRN层:在AlexNet中,加入了LRN(局部响应归一化)来优化模型,但在vgg中,作者发现LRN层作用不明显,因此去掉。

1.2 vgg缺点

  • 全连接层神经元多,因此参数量大,计算量大,训练耗时;
  • 占用内存大

1.3 vgg结构

  • 作者利用控制变量的思想,进行了六次实验,最终得到了分类结果最好的两个模型——vgg16和vgg19
  • 作者进行的六次实验如下图所示:

对于以上A、A-LRN、B、C、D、E六组实验,分析可得:
A-LRN组在A组基础上增加了LRN,结果发现增加LRN后并无明显变化,因此在VGG中去掉LRN;
B组在A组的基础上增加了2个cov3,即多加了两个3x3的卷积核
C组在B组的基础上增加了3个cov1;
D组将C组的cov1换成cov3,对比实验结果发现,使用cov3的分类结果要由于使用cov1
E组在D组的基础上增加了3个cov3。
对于每个组对应的weight layers=,表示的是包含权重系数的层的总数量,即所有卷积层+全连接层之后。注意不包含池化层是因为池化层不包含权重系数。因此VGG16表示该模型中卷积层和全连接层之和为16.

2 ResNet模型

2.1 ResNet概述

  • ResNet(残差神经网络)由微软研究院何恺明等人提出,并斩获2015年ImageNet竞赛中分类任务第一名、目标检测第一名
  • 主要贡献是发现了==“退化现象(Degradation)”,并针对退化现象发明“直连边/短连接(Shortcut connection)”==,极大消除在vgg中出现的神经网络深度过大导致训练困难问题。在实验中,作者评测了一个深度152层(是vgg的八倍)的残差网络,结果获得了比vgg更低的复杂度。
什么是退化现象呢?

退化现象是指随着层数加深,首先训练准确率会逐渐趋于饱和;但若层数继续加深,反而训练准确率下降,效果降低。注意这种下降不是由于过拟合造成的(因为如果是过拟合的话,训练时误差应该很低而测试时很高)

2.2 ResNet优点

  • 残差网络的机构更利于优化收敛
  • 残差网络解决了退化问题
  • 残差网络可以在拓展网络深度的同时,提高网络性能(相比于vgg的优点)

2.3 ResNet结构

  • 在ResNet中,传递给下一层的输入变为H(x)= F(x)+ x,来拟合残差F(x)=H(x) - x。

为什么这样做呢?
假设一个网络A的训练误差为x,那么在A的基础上添加几个层来构建网络B的话,训练误差也为x。如果出现B的训练误差高于A的情况(退化现象),说明我们应该跳过这些层,从A构造恒等映射。因此可以在输入和输出中添加直连路径shortcut,这个过程只需要学习已有的输入特征。由于C只学习残差,该模块叫作残差模块。

  • 对于shortcut connection,有两种方式:
    当输入维度与输出维度相同时,直接使用恒等shortcuts,即将F(x)和x逐元素相加
    ② **当输入维度与输出维度不同时,可以考虑两个选项:(A)shortcut仍然使用恒等映射,在增加的维度上使用0来填充;(B) 通过1x1的卷积使得维度保持一致

2.4 ResNet实验结果

  • 作者首先评估18层和34层的plain网络。实验结果产生的一种退化现象:在训练过程中34层的网络比18层的网络有着更高的训练错误率。
  • 接着对18层和34层的残差网络进行评估。为了保证标量一致性,其基本框架和plain网络结构相同,只是在plain网络基础上加入了shortcuts连接
  • 结果显示,
    (1) 与plain网络相反,34层的resnet网络比18层的错误率更低,表明可以通过增加深度提高准确率,解决了退化问题
    (2) 与plain网络相比,层次相同的resnet网络上错误率更低,表明残差网络在深层次下仍然有效
    (3) 对于18层的plain网络,它和残差网络的准确率很接近,但是残差网络的收敛速度要更快

3 DenseNet模型

3.1 DenseNet概述

  • DenseNet的一大特点是通过特征在通道上的连接来实现特征重用,这个特点让DenseNet的参数量和计算成本更少,效果也更好。
  • DenseNet的基本思路与ResNet一致,但它建立了前面所有层和后面层的密集连接,DenseNet也因此得名。

3.2 DenseNet结构

使用DenseBlock+Transition的结构

3.2.1 DenseBlock


由以上图可知,每个Dense Block包含五层,每个层的特征图大小相同。可以看出,对于每一个DenseBlock,每一层的输入都来自它前面所有层的特征图,每一层的输出均会直接连接到它后面所有层的输入。所以对于一个L层的DenseBlock,共包含L(1+L)/2个连接

注意

  • 假定输入层的特征图channel数为k0,DenseBlock中各个层卷积之后均输出k个特征图,即得到的特征图的channel数为k。由于每一层都要接受前面所有层的特征图,那么l层输入的channel数为k0+(l-1)l
  • 在DenseBlock中,采用BN+ReLu+3x3Conv的结构(与平常所见的Conv+ReLu+BN不同)。这是因为,采用了特征重用后,如果先采用卷积层,会包含前面所有层的输出特征,数值分布差异比较大。所以,先采用BN层将数值进行标准化。
3.2.2 Transition
  • 在两个相邻的DenseBlock之间,采用Transition层进行连接,主要作用是整合上一个DenseBlock的特征,缩小上一个DenseBlock的宽高,使得特征图宽高减半,压缩模型。
  • Transition层结构为:BN+ReLu+1x1 Conv+2x2 AvgPooling
  • 通过Pooling使特征图大小降低

3.3 DenseNet优缺点

  • 优点
    (1) 相比ResNet使用更少参数数量,且计算效率更高,效果更好;
    (2) 通过特征重用,可以同时利用高层次和低层次的特征;
    (3) 缓解了梯度消失/爆炸和网络退化问题。

  • 缺点
    (1) 由于特征重用,数据需要被复制多次,空间占用率高,显存增加较快。因此训练时间要比ResNet长

未完待续(持续更新 5.18)

  • 45
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值