浅谈基础神经网络-2

DenseNet:

DenseNet核心思想在于建立了不同层之间的连接关系,充分利用了feature,进一步减轻了梯度消失问题,加深网络不是问题,而且训练效果非常好。相比ResNet,DenseNet提出了一个更激进的密集连接机制:即互相连接所有的层,具体来说就是每个层都会接受其前面所有层作为其额外的输入。由于密集连接方式,DenseNet提升了梯度的反向传播,使得网络更容易训练。DenseNet采用直接将所有输入连接到输出层。

网络模型:
在这里插入图片描述

DenseNet结构:
在这里插入图片描述

DenseNet的整体结构主要包含稠密块(Dense Blocks)和过渡块(transition layers)。
Dense Blocks内部必须特征图大小一致,每层的输入是concat连接,而不是ResNet的element-wise连接,内部的每一个节点代表BN+ReLU+Conv(参考ResNet V2),每个卷积层都是33k的filter,其中k被称为growth rate。Transition layers中包含的Pooling层会改变特征图的大小。
Bottleneck layers:尽管每个网络层只输出 k 个特征图,但是同时仍然有太多的输入个数,通常的做法是降维,在进行3×3卷积之前首先用一个 1×1卷积将输入个数降低到 4k, 也就是在 H的定义中再加入一个 1×1卷积 ,即BN-ReLU-Conv(11)-BN-ReLU-Conv(3*3)的结构,记为DenseNet-B。
Compression(压缩):多过渡层的特征图进行压缩,产生个特征图,其中,为压缩因子,当θ<1时,记为DenseNet-C。
综上,当bottleneck和compression结合起来,模型记为:DenseNet-BC。

DenseNet:
Dense Block模块:BN+Relu+Conv(33)+dropout
transition layer模块:BN+Relu+Conv(1
1)(filternum:m)+dropout+Pooling(2*2)

DenseNet-B:
Dense Block模块:BN+Relu+Conv(11)(filternum:4K)+dropout+BN+Relu+Conv(33)+dropout
transition layer模块:BN+Relu+Conv(11)(filternum:m)+dropout+Pooling(22)

DenseNet-BC:
Dense Block模块:BN+Relu+Conv(11)(filternum:4K)+dropout+BN+Relu+Conv(33)+dropout
transition layer模块:BN+Relu+Conv(11)(filternum:θm,其中0<θ<1,文章取θ=0.5) +dropout +Pooling(22)
其中,DenseNet-B在原始DenseNet的基础上,加入Bottleneck layers, 主要是在Dense Block模块中加入了1*1卷积,使得将每一个layer输入的feature map都降为到4k的维度,大大的减少了计算量。

解决在Dense Block模块中每一层layer输入的feature maps随着层数增加而增大,则需要加入Bottleneck 模块,降维feature maps到4k维

DenseNet-BC在DenseNet-B的基础上,在transitionlayer模块中加入了压缩率θ参数,论文中将θ设置为0.5,这样通过1*1卷积,将上一个Dense Block模块的输出feature map维度减少一半。

PyramidNet(FPN):

FPN网络有效的解决了物体检测中多尺度问题;底层特征图中的信息较少,但是目标位置准确,高层特征图信息丰富,但是位置比较粗略,FPN不同的地方在于在不同的特征层独立进行预测。

ResNet和PyramidNet之间的区别
在这里插入图片描述
Pyramid Net使用的设计策略如下:
在这里插入图片描述
其中α是一常数。另有非线性的网络宽度设计策略如下
在这里插入图片描述
提取特征的网络结构:
融合高层与底层的特征图多尺度预测,可以适应不同尺度的目标,效果非常好
主干网络(backbone)使用了ResNet
下图中的横向连接先使用11的卷积压缩通道,使用22的上采样伸缩特征图,然后对应元素相加,注意:不是拼接通道,元素相加之后进行了3*3的卷积操作,这个卷积操作的目的是消除上采样的混叠效应。
在这里插入图片描述

ZFNet:

核心意义:通过使用可视化技术揭示了神经网络各层到底在干什么,起到了什么作用。一旦知道了这些,如何调整我们的神经网络,往什么方向优化,就有了较好的依据。
主要工作:
(1)使用一个多层的反卷积网络来可视化训练过程中特征的演化及发现潜在的问题;
(2)同时根据遮挡图像局部对分类结果的影响来探讨对分类任务而言到底那部分输入信息更重要。

反池化过程
我们知道,池化是不可逆的过程,然而我们可以通过记录池化过程中,最大激活值得坐标位置。然后在反池化的时候,只把池化过程中最大激活值所在的位置坐标的值激活,其它的值置为0,当然这个过程只是一种近似,因为我们在池化的过程中,除了最大值所在的位置,其它的值也并不是为0的。刚好最近几天看到文献:《Stacked What-Where Auto-encoders》,里面有个反卷积示意图画的比较好,所有就截下图,用这篇文献的示意图进行讲解:
在这里插入图片描述
以上面的图片为例,上面的图片中左边表示pooling过程,右边表示unpooling过程。假设我们pooling块的大小是33,采用max pooling后,我们可以得到一个输出神经元其激活值为9,pooling是一个下采样的过程,本来是33大小,经过pooling后,就变成了11大小的图片了。而upooling刚好与pooling过程相反,它是一个上采样的过程,是pooling的一个反向运算,当我们由一个神经元要扩展到33个神经元的时候,我们需要借助于pooling过程中,记录下最大值所在的位置坐标(0,1),然后在unpooling过程的时候,就把(0,1)这个像素点的位置填上去,其它的神经元激活值全部为0。

再来一个例子:在max pooling的时候,我们不仅要得到最大值,同时还要记录下最大值得坐标(-1,-1),然后再unpooling的时候,就直接把(-1-1)这个点的值填上去,其它的激活值全部为0。

当然了,实际上在池化之前,除了(0,1)位置上的那个9以外,其他地方的数字并不是0,所以反池化并没有真正意义上的完全还原,只是一种近似而已。

反激活
我们在Alexnet中,relu函数是用于保证每层输出的激活值都是正数,因此对于反向过程,我们同样需要保证每层的特征图为正值,也就是说这个反激活过程和激活过程没有什么差别,都是直接采用relu函数。这里需要;了解什么是relu激活函数,当然这也只是一种近似,只是保证了每一个经过激活函数的输出值始终为正值。
反卷积
对于反卷积过程,采用卷积过程转置后的滤波器(参数一样,只不过把参数矩阵水平和垂直方向翻转了一下),反卷积实际上应该叫卷积转置。
在这里插入图片描述
ZFNet网络结构:
在这里插入图片描述

NIN:

网络结构
在这里插入图片描述
此网络结构总计4层: 3mlpconv + 1global_average_pooling
优点:
提供了网络层间映射的一种新可能;
增加了网络卷积层的非线性能力。
两个重要特性:

1*1 卷积核:
在这里插入图片描述
作用:
加强了特征的重新组合;降低了维度,减少计算量。
全局池化层
在这里插入图片描述
大大的减少了模型的参数,由于该连接方式没有参数,从而没有计算,大大减少了计算量,提高了计算速度。有效避免过拟合。可解释性非常强,可以讲最终的feature map看作最终分类目标的confidence map。

Network in Network对常规卷积网络的特征提取抽象表示进行改进,提出MLPconv,其实就是在常规卷积后接1x1卷积(首次使用1x1卷积),首次采用全局平均池化降低网络复杂度,避免过拟合,在之后的很多经典论文中都有用到,具有开创性意义;深度学习发展迅猛,论文很多,但是经典的还是少数,所以很值得学习,以前的ResNet,MobileNetv1-3,ShuffleNetv1-2等等,以及在最新的基于关键点的目标检测论文CornerNet-Lite也有用到该论文的思想,足见影响深远。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值