DenseNet:比ResNet更优的CNN模型

1. DenseNet & ResNet

在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如最近的GoogLenet,VGG-19,Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确度。ResNet模型的核心是通过建立前面层与后面层之间的“短路连接”(shortcuts,skip connection),这有助于训练过程中梯度的反向传播,从而能训练出更深的CNN网络。今天我们要介绍的是DenseNet模型,它的基本思路与ResNet一致,**但是它建立的是前面所有层与后面层的密集连接(dense connection),它的名称也是由此而来。DenseNet的另一大特色是通过特征在channel上的连接来实现特征重用(feature reuse)。**这些特点让DenseNet在参数和计算成本更少的情形下实现比ResNet更优的性能

在这里插入图片描述

DenseNet:即互相连接所有的层,具体来说就是每个层都会接受其前面所有层作为其额外的输入。

ResNet网络的短路连接机制(其中+代表的是元素级相加操作):

  • ResNet是每个层与前面的某层(一般是2~3层)短路连接在一起,连接方式是通过元素级相加。
    在这里插入图片描述

DenseNet网络的密集连接机制(其中c代表的是channel级连接操作):

  • DenseNet中,每个层都会与前面所有层在channel维度上连接(concat)在一起(这里各个层的特征图大小是相同的,后面会有说明),并作为下一层的输入。
  • 对于一个 L层的网络,DenseNet共包含 L*(L+1)/2个连接,相比ResNet,这是一种密集连接。而且DenseNet是直接concat来自不同层的特征图,这可以实现特征重用,提升效率,这一特点是DenseNet与ResNet最主要的区别。
    在这里插入图片描述
    在这里插入图片描述

2. DenseBlock+Transition的结构

CNN网络一般要经过Pooling或者stride>1的Conv来降低特征图的大小,而DenseNet的密集连接方式需要特征图大小保持一致。为了解决这个问题,DenseNet网络中使用DenseBlock+Transition的结构

  • DenseBlock是包含很多层的模块,每个层的特征图大小相同,层与层之间采用密集连接方式。
  • Transition模块是连接两个相邻的DenseBlock,并且通过Pooling使特征图大小降低。图4给出了DenseNet的网路结构,它共包含4个DenseBlock,各个DenseBlock之间通过Transition连接在一起。

3. 具体的网络节结构

在这里插入图片描述

3.1 DenseBlock
  • DenseBlock中,各个层的特征图大小一致,可以在channel维度上连接。DenseBlock中的非线性组合函数 H(.) 采用的是BN+ReLU+3x3 Conv的结构
    (上图中每一根线对应了一个H(.))
    在这里插入图片描述

  • 与ResNet不同,所有DenseBlock中各个层卷积之后均输出 得到的特征图的channel数为k ,或者说采用 k 个卷积核。k在DenseNet称为growth rate,这是一个超参数。一般情况下使用较小的 k(比如12),就可以得到较佳的性能。

3.2 DenseNet-B结构
  • DenseNet-B结构
    假定输入层的特征图的channel数为 k0 ,那么 ** L层输入的channel数为 k0+k*(L-1) **,因此随着层数增加,尽管 k设定得较小,DenseBlock的输入会非常多,不过这是由于特征重用所造成的,每个层仅有k 个特征是自己独有的。

  • DenseBlock内部可以采用bottleneck层来减少计算量,主要是原有的结构中增加1x1 Conv,如图7所示,即BN+ReLU+1x1 Conv+BN+ReLU+3x3 Conv,称为DenseNet-B结构 其中1x1 Conv得到4k 个特征图它起到的作用是降低特征数量,从而提升计算效率。
    在这里插入图片描述

3.3 Transition层

在这里插入图片描述

ImageNet数据集上所采用的DenseNet结构:
在这里插入图片描述

https://zhuanlan.zhihu.com/p/37189203

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值