这是卷积的第十二篇文章,主要为大家介绍一下DenseNet,值得一提的是DenseNet的作者也是上一篇卷积神经网络学习路线(十一)| Stochastic Depth(随机深度网络)论文的作者,即清华的黄高。相比于里程碑式创新的ResNet来讲,DenseNet的作用或许用继往开来来形容是最合适不过了。论文原文地址见附录。
论文先讲到了先前的网络因为使用了shortcut
连接,网络已经变得越来越深了。接着引入了论文要介绍的DenseNet
,正是利用了shortcut
连接的思想,每一层都将前面所有层的特征图作为输入,最后使用concatenate
来聚合信息。实验显示,DenseNet
减轻了梯度消失问题,增大了特征重用,大大减少了参数量。Figure 1
是DenseNet
的一个组件(dense block
),整个网络是由多个这种组件堆叠出来的。可以看到DenseNet
使用了concatenate
来聚合不同的特征图,类似于ResNet
残差的思想,提高了网络的信息和梯度流动,使得网络更加容易训练。
Figure 2
展示了使用3个dense block
搭建出来的DenseNet
网络:
在这里插入图片描述
concatenate
来聚合信息,但DenseNet更加简单高效。对于一个卷积神经网络,假设输入图像。该网络包含L层,每一层都实现了一个非线性变换,其中表示第层。可以是一个组合操作,如BN, ReLU, Conv
,将第层的输出记作。
为了进一步改善网络层之间的信息交流流,论文提出了不同的连接模式:即引入从任何层到所有后续层的直接连接。结果,第层得到了之前所有层的特征映射作为输入:,其中表示特征映射的级联。
定义为三个连续操作的组合,即:。
DenseNet
使用了的平均池化做特征下采样。
当每个都产生个特征映射时,它表示第层有个输入特征,表示输入层的通道数。DenseNet
与已存在架构不同之处在于DenseNet
可以有很窄的层,例如: 。其中参数称为网络的增长率。下表展示了不同深度的DenseNet网络结构,其中:
在这里插入图片描述
对此的一种解释是DenseNet
中的每个层都可以访问对应块中所有前面的特征映射,因此可以访问网络的“集体知识”。我们可以将特征映射看作网络的全局状态。每个层将自己的个特征映射添加到这个状态。增长速度控制着每一层新信息对全局状态的贡献。全局状态一旦写入,就可以从网络中的任何地方访问,并且与传统网络体系不同,不需要逐层复制它。
虽然每一层只产生个输出特征映射,但它通道具有更多的输入。有文章指出,在每个卷积之前可以引入卷积层作为瓶颈层,以减少输入特征映射的数量,从而提高计算效率。实验发现这种设计对于DenseNet
特别有效,并将具有瓶颈层的网络称为DenseNet-B
,即具有BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)
组件的的。
为了进一步提高模型的紧凑性,可以减少过度层上的特征映射的数量。如果一个dense block
包含m
个特征映射,可以让其紧跟着的变化层生成个输出特征映射,其中作为压缩因子。当时,跨转换层的特征映射的数量保持不变。
通过Table 2
可以看出DenseNet
在准确率和参数量上取得了较好的平衡,精度上全面超越ResNet
网络。
Figure 3
对比了ResNet
和DenseNet
参数量和FLOPS
是如何影响测试错误率的,可以看出相同准确率时DenseNet
的参数更少,推理时的计算量也更小。
从Figure 4
可以看出,在相同性能下DenseNet
的参数量是ResNet
的三分之一;1001
层的pre-activation ResNet
(参数为10M
)的性能和100
层的DenseNet
(参数为0.8M
)相当。说明DenseNet
的参数利用效率更高。
在这里插入图片描述
这篇论文论文提出了一个新的网络结构DenseNet
,解决了ResNet
遗留的网络层冗余的问题,引入了具有相同特征映射大小的任意两个层之间的直接连接。我们发现,DenseNet
可以自然地扩展到数百个层,且没有表现出优化困难。DenseNet
趋向于随着参数量的增加,在精度上也产了对应的提高,并没有任何性能下降和过拟合的情况。但是根据天下没有免费的午餐定理,DenseNet
有一个恐怖的缺点就是内存占用极高,比较考验硬件,另外DenseNet
和ResNet
一样仍存在调参困难的问题。
本文分享自 GiantPandaCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!