视觉分类任务

视觉分类任务

1.1:分类任务简介

分类:输入为单一主体图像,输出它的标签;

2.1:卷积运算

卷积可以通过对卷积核取不同大小和不同值来提取图像的不同特征,即用不同的姿势做卷积可以得到包括边缘,纹理等特征。

2.2:池化运算

两个特点:特点一:降采样,可以减少参数数量;特点二:平移不变性。
需要选取的超参:
1. 卷积/池化核尺寸f
2. 卷积/池化核步长s
3. 是否需要padding

3.1 Lenet5-一切的原点

  输入图像---卷积层1---池化层1---卷积核2---池化层2---FC层
  1. 确立了先卷积后池化最后全连接的套路,沿用至今;
  2. 模式设计尚且稚嫩,激活函数为Tanh,池化也有对应权值。

3.2 AlexNet-深度CNN与Big Data的首次触电
这里补偿在这里插入图片描述这里过第一层卷积层时,s=4,p=0(不填充),所以经过第一层卷积后尺寸为55 x 55 x 96,然后过第一层池化,补偿为2,尺寸缩小二倍,得到27 x 27 x 96,后面的同理,最后送入全连接之前为6 x 6 x 256,展开为一维向量 4096 x 1.
特点:

  1. 共8层,5层卷积和池化+3层全连接;
  2. 用ReLU解决了网络层数变深的问题;
  3. 用数据增强,GPU训练解决了大数据的问题;

3.3 ZFNet(2013): 过渡

在这里插入图片描述帮助AlexNet网络选取了超参数(卷积核的尺寸)

3.4 VGG(2014)-"标准模块+堆叠"

我们从前面的网络中可以看出,卷积核尺寸有3 x 3, 5 x 5, 7 x 7, 11 x 11的,能不能选择一个“标准”的卷积核尺寸?所有卷积都用一个尺寸岂不是方便很多。
在这里插入图片描述
fmap和卷积核的尺寸均为7 x 7,经过卷积后的尺寸应该为 1 x 1;我们现在用3个 3x 3 的卷积核来替代一个 7 x 7 的卷积核,经过一次卷积 5 x 5, 经过两次卷积 3 x 3, 经过三次卷积 1 x 1。
优点:

  1. 采用连续三个 3 x 3 的卷积核替代一个 7 x 7,多经过了两次非线性的激活函数,我们知道,激活函数的非线性越强就可以把我们的决策边界描绘的越细;
  2. 减少了参数的数量, 7 x 7卷积参数为49个, 3个 3 x 3 卷积参数为27个,相差近一倍;
  3. 理论上,三个 3 x 3 的卷积核权值如果选择合适,可能会完全等价于一个 7 x 7,即输出的FM也完全相等。

网络结构:
在这里插入图片描述网络结构特点:共16层,13(卷积/池化) + 3(全连接)
4. 与ZFNet相比,层数加深,使用了“标准化"的block结构,所有卷积核的平面尺寸均为 3 x 3;
5. 模型中的 3 x 3是否等价成了别的卷积核?选择的权力已经交给了模型自己;
6. VGG模型中需要人选择的超参减少了,但机器需要做的运算多了(即是优点也是缺点)。

假设input=(5,5,3)采用12个5 x 5的filter,输出为(1,1,12),那么参数量应该为5 x 5 x 3 x 12;换成两个 3 x 3 的卷积核,这里输入通道数为3,输出通道数为12,那么alpha= output_channel/input_channel = 4, 则mid_dim = sqrt(alpha) x input_channel,所以应该分为两步:3 x 3 x 3 x 6 + 3 x 3 x 6 x 12。

VGG模型论文解析:https://www.jianshu.com/p/68ac04943f9e

3.4 GoogleNet-关键词“手动订制”

一般来说,提升网络性能最直接的办法就是增加网络深度和宽度,深度指网络层次数量、宽度指神经元数量。但这种方式存在以下问题:
(1)参数太多,如果训练数据集有限,很容易产生过拟合;
(2)网络越大、参数越多,计算复杂度越大,难以应用;
(3)网络越深,容易出现梯度弥散问题(梯度越往后穿越容易消失),难以优化模型。
所以,有人调侃“深度学习”其实是“深度调参”。解决这些问题的方法当然就是在增加网络深度和宽度的同时减少参数,为了减少参数,自然就想到将全连接变成稀疏连接。但是在实现上,全连接变成稀疏连接后实际计算量并不会有质的提升,因为大部分硬件是针对密集矩阵计算优化的,稀疏矩阵虽然数据量少,但是计算所消耗的时间却很难减少。

那么,有没有一种方法既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能。大量的文献表明可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能,就如人类的大脑是可以看做是神经元的重复堆积,因此,GoogLeNet团队提出了Inception网络结构,就是构造一种“基础神经元”结构,来搭建一个稀疏性、高计算性能的网络结构。

V1 inception: 一个“定制”的卷积姿势
在这里插入图片描述特点一:采用 1 x 1 卷积核实现了多个feature map的结合,从而整合了不同通道间的信息,其次降低了channel的维度,所以进一步较少了参数;
在这里插入图片描述在这里插入图片描述原始结构:
参数:(1×1×192×64) + (3×3×192×128) + (5×5×192×32) = 153600
最终输出的feature map:64+128+32+192 = 416
加入不同channel的1×1卷积后:
参数:1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32)=15872
最终输出的feature map: 64+128+32+32=256
所以加入1×1的卷积后,在降低大量运算的前提下,降低了维度。

特点二:多个尺度的filter滤波,然后"concatenation",符合视觉图像处理的特点;

特点三:需要选取的超参数多了很多,并且人们设计网络时更辛苦了。

与ZFNet和VGG相比,层数更深,效果更好,共22层,21(卷积/池化) + 1(全连接),除了最后一层的输出,其中间节点的分类效果也很好。因此在Inception Net中,还使用到了辅助分类节点(auxiliary classifiers),即将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中。这样相当于做了模型融合,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,对于整个Inception Net的训练很有裨益。

GoogleNet家族:
(1) V1版本提出了inception的理念,大胆使用了 1 x 1 的卷积核来压缩通道数;
(2) V2版本借鉴了VGG的理念(定制Inception时,在其内部采用标准化卷积核);
(3) V3(2015)版本将VGG的理念发扬广大,将“标准化”推广到一般情况,并加入了BN;
(4) V4 (2016) 版本在V3的基础上选定了合适的超参,没有引入残差的情况下,网络层数仍旧达到了76层。

Inception V3卷积核分解
既然三个 3 x 3 等价于一个 7 x 7,那么有没有更加纯粹,更一般的卷积核等价分解方法?
一个n x n卷积核,可以分解为一个 1 x n 和 一个 n x 1,进一步减少了参数的个数,由 n**2 个参数变为 2n 个参数。

网络退化
理论上网络层数越深,拟合结果会越好,但实际上我们通过实验观察并不是这样,这种现象称之为网络退化。
在这里插入图片描述
网络退化的原因:
(1)肯定不是因为梯度消失,反向传播没有问题;也不是信号前馈的问题,前馈传播也没问题;
(2)在更高维度的空间画出决策边界很难,而且维度越高越容易过拟合。

GoogleNet模型论文解析:https://my.oschina.net/u/876354/blog/1637819

3.5 ResNet(2015)-打破限制,超越人类
在这里插入图片描述1. 引入shortcut connection,将原有的卷积单元变为残差单元来解决退化问题;
2. shortcut connection:将输入的浅层信号,直接接到输出FM中,元素级相加;
3. 这要求输出FM的尺寸与输入的x尺寸必须完全相等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值