深度学习——DenseNet 121

简介:

  • DenseNet(Dense Convolutional Network)稠密卷积网络
  • CVPR2017的优秀文章
  • 从feature入手,通过对feature的极致利用达到更好的效果和更少的参数。

优点:

  • 减轻了vanishing-gradient(梯度消失)
  • 加强了feature的传递
  • 更有效地利用了feature
  • 一定程度上较少了参数数量

在深度学习网络中,随着网络深度的加深,梯度消失问题会愈加明显,解决方法是创建浅层与深层之间的短路径。在DenseNet中,在保证网络中层与层之间最大程度的信息传输的前提下,直接将所有层连接起来。

在传统卷积神经网络中,如果你有L层,那么就会有L个连接,但是在DenseNet中,会有(L+1)/2个连接。简单来说,就是每一层的输入来自前面所有层的输出。如下图是dense block的结构图,x是数据,H是网络层。
在这里插入图片描述
如果用公式表示的话,传统网络在L层的输出为:
在这里插入图片描述
而对于ResNet,增加了来自上一层输入
在这里插入图片描述
在DenseNet中,会连接前面所有层作为输入:
在这里插入图片描述
其中,HL(⋅)代表是非线性转化函数(non-liear transformation),它是一个组合操作,其可能包括一系列的BN(Batch Normalization),ReLU,Pooling及Conv操作。注意这里L层与L-1层之间可能实际上包含多个卷积层。

DenseNet的一个优点是网络更窄,参数更少。

论文中同时提出了DenseNet,DenseNet-B,DenseNet-BC三种结构,具体区别如下:

DenseNet:

Dense Block模块:BN+Relu+Conv(3*3)+dropout

transition layer模块:BN+Relu+Conv(11)(filternum:m)+dropout+Pooling(22)

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维度减少一半。

猜你喜欢

转载自blog.csdn.net/weixin_44350337/article/details/115474038
121