DenseNet网络关键点

优点:

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

核心思想:

create short paths from early layers to later layers.Each layer has direct access to the gradients from the loss function and the original input signal, leading to an implicit deep supervision.

DenseNet

DenseNet的一个优点是网络更窄,参数更少,很大一部分原因得益于这种dense block的设计,dense block中每个卷积层的输出feature map的数量都很小(小于100)。并且dense connection因为参数减少,有正则化的效果,对于过拟合有一定的抑制作用。

ResNet公式:


这里的l表示层,xl表示l层的输出,Hl表示一个非线性变换。所以对于ResNet而言,l层的输出是l-1层的输出加上对l-1层输出的非线性变换。

DenseNet公式:

[x0,x1,…,xl-1]表示将0到l-1层的输出feature map做concatenation。concatenation是做通道的合并,就像Inception那样。而前面resnet是做值的相加,通道数是不变的。Hl包括BN,ReLU和3*3的卷积。

将DenseNet分成多个dense block,各个dense block内的feature map的size统一,这样在做concatenation就不会有size的问题。

表中的k=32,k=48中的k是growth rate,表示每个dense block中每层输出的feature map个数。为了避免网络变得很宽,都是采用较小的k,比如32这样,实验也表明小的k可以有更好的效果。
根据dense block的设计,后面几层可以得到前面所有层的输入,因此concat后的输入channel还是比较大的。

另外这里每个dense block的33卷积前面都包含了一个11的卷积操作,就是所谓的bottleneck layer,目的是减少输入的feature map数量,既能降维减少计算量,又能融合各个通道的特征。

为了进一步压缩参数,在每两个dense block之间又增加了1*1的卷积操作。

bottleneck

以DenseNet-169的Dense Block(3)为例,包含32个11和33的卷积操作,也就是第32个子结构的输入是前面31层的输出结果,每层输出的channel是32(growth rate)。不做bottleneck,则第32层的3x3卷积的输入是前面31层输出的和,为31x32=992个参数 + (上一层DenseBlock的输出channel)。而加上1x1的卷积后,若1x1卷积的输出channel是128作为32层的输入,则大大减少参数数量。

transition layer

transition layer放在两个DenseBlock中间,对DenseBlock的输出用1x1卷积核降维。以DenseNet-169的Dense Block(3)为例,虽然第32层的3x3卷积核输出channel只有32(growth rate),但会与前面所有的输出进行concat再输入到下一层,上面说过第32层的输入是992+***个,因此这个transition layer有个参数reduction(范围是0到1),表示将这些输出缩小到原来的多少倍,默认是0.5,这样传给下一个Dense Block的时候channel数量就会减少一半,这就是transition layer的作用。文中还用到dropout操作来随机减少分支,避免过拟合。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值