DenseNet

1、网络结构(CVPR2017最佳论文)

    与Inception系列和ResNet网络不通,Inception网络主要是从网络的宽度方面改进网络的结构从而提高网络的表达能力,而ResNet主要是从网络的深度方面改进网络的结构来提高表达能力,而DenseNet则是通过特征图重用的方式来探索网络的潜能。DenseNet让网络的每一层的输入变成所有前面层的叠加(concat),然后把它的特征图传递给所有接下来的网络层。传统的CNN如果有L层则有L个连接,而DenseNet如果有L层,则有1/2 L(L+1)个连接,如下图所示:

                                          

    用公式来表示的话,ResNet可以用公式表示为:

                                              

    而DenseNet用公式表示则为:

                                         

    参照ResNet v2的设计,其中H()函数由 BN + ReLU + 3*3 Conv 组成。此外,由于当特征图的尺寸发生变化时,公式(2)中的concat操作是不可行的。卷积网络中一个关键的部分是下采样层,它用来改变特征图的大小。为了使得我们网络的下采样更便利,我们把网络分解为多个Dense Block,如下图所示。我们把介于两个Dense Block之间的网络层称为转换层,它用来卷积和池化。转换层由 BN + 1*1 Conv + 2*2 Avg pooling 组成。    

    

    此外,如果每个H()函数产生k个特征图,则第l层有 k0 + k*(l - 1)个输入特征图,其中k0是输入层的通道数。DenseNet和现在的网络的一个重要区别是DenseNet的网络层很窄,比如k = 12。我们把超参数k称为网络的增长率,增长率调节每层的网络对整个网络贡献多少新信息。尽管每个网络层值输出k个特征图,但是它的输入会非常多。根据ResNet,可以在3*3的卷积之前使用1*1的卷积来减少输入的特征图数量,从而提高计算效率。因此我们在网络中使用了1*1的卷积,我们把这个变种称为Dense-Net-B,一个网络层则由 BN - ReLU - Conv(1*1) - BN - ReLU - Conv(3*3) 组成,我们把这个网络层称为Bottleneck layers,其中每个1*1的卷积生成4k个特征图。

    为了进一步改善模型的性能,我们可以在转换层进一步减少特征图的数量。假设Dense Block有m个特征图,我们让接下来的转换层生成个特征图,其中,我们把的变种称为DenseNet-C,在我们的实验中,我们设置。当同时使用Bottleneck layer和时,我们把这个变种称为DenseNet-BC。整个DenseNet的网络结构如下:

        

      这个网络是为ImageNet设计的,增长率k = 32。它有4Dense Block,初始的卷积层为7*7的步长为2的卷积,它生成的特征图为2k,即64个特征图,而其它层的输出结果都遵循k的设定,1*1输出4k,3*3的输出k。表中的“conv”表示:BN - ReLU - Conv序列。

2、实验结果

    实验是基于ILSVRC2012做的,采用和ResNet相同的数据增强方式,在测试是采用single-crop和10-crop的方式,在验证集上测试了我们的结果。

  

3、参考

DenseNet源码和预训练模型(caffe):https://github.com/shicai/DenseNet-Caffe

论文:《Densely Connected Convolutional Networks》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值