DenseNet介绍
- DenseNet模型的基本思路与ResNet一致,但它建立的是前面所有层与后面层的密集连接(即相加变连结),它的名称也是由此而来。
- DenseNet的另一大特色是通过特征在通道上的连接来实现特征重用。这些特点让DenseNet的参数量和计算成本都变得更少了(相对ResNet),效果也更好了。
- ResNet解决了深层网络梯度消失问题,它是从深度方向研究的。宽度方向是GoogleNet的Inception。而DenseNet是从feature入手,通过对feature的极致利用能达到更好的效果和减少参数。
- DenseNet斩获CVPR 2017的最佳论文奖。
DenseNet网络结构
其网络结构中,于ResNet最主要的区别是:
- Resnet中,这一层的输入 等于 上一层的输入+经过卷积的输入,表达为: y=F(x) + x ,其中F(x)是x经过卷积操作后的输出。
- DenseNet中,这一层的输入 等于 前面所有层的输出进行concatenation,即为通道层面进行拼接,通道拼接后做卷积等操作便可以提取特征。输入表达为:y=[x0,x1,x2] ,其中x1是x0经过Dense Block输出的结果。
DenseNet优缺点
1、优点
(1)相比ResNet拥有更少的参数数量
参数减少,计算效率更高,效果更好(相较于其他网络)
(2)传播与预测都保留了低层次的特征
在以前的卷积神经网络中,最终输出只会利用最高层次的特征。而DenseNet实现特征重用,同时利用低层次和高层次的特征。
(3)旁路加强了特征的重用,导致直接的监督
因为每一层都建立起了与前面层的连接,误差信号可以很容易地传播到较早的层,所以较早的层可以从最终分类层获得直接的监督。
(4)网络更易于训练,并具有一定的正则化效果
(网上资料都有说这一句,但是我不太清楚他是怎么体现正则化效果的)
(5)缓解了梯度消失/爆炸和网络退化的问题
特征重用实现了梯度的提前传播,也至少保留了前面网络的能力,不至于变弱(最少也是个恒等变换)
缺点
由于需要进行多次Concatnate操作,数据需要被复制多次,显存容易增加得很快,需要一定的显存优化技术。因此在训练过程中,训练的时间要比Resnet作为backbone长很多。所以相对而言,ResNet更常用。
并且ResNet更加的简洁,变体也多,更加成熟,因此后来更多使用的是ResNet,但是DenseNet的思想贡献也是如今很常见的。