DenseNet和FractalNet
参考资料:https://blog.youkuaiyun.com/qq_39297053/article/details/130675478?spm=1001.2014.3001.5502
前言
作为CVPR2017年的Best Paper, DenseNet脱离了通过加深网络层数(VGG,ResNet)和加宽网络结构(GoogLeNet)来提升网络性能的定式思维, 从特征的角度考虑, 通过特征重用和旁路(Bypass)设置,既大幅度减少了网络的参数量,又在一定程度上缓解了梯度弥散问题的产生. 结合信息流和特征复用的假设, DenseNet当之无愧成为2017年计算机视觉顶会的年度最佳论文。另外,本文还对FractalNet进行了介绍,FractalNet与DenseNet的设计思想有异曲同工之妙。
先列下DenseNet的几个优点,感受下它的强大:
- 1、减轻了vanishing-gradient(梯度消失)
- 2、加强了feature的传递,更有效地利用了不同层的feature
- 3、网络更易于训练,并具有一定的正则效果.
- 4、因为整个网络并不深,所以一定程度上较少了参数数量
Model Architecture
resNet做的是相加,而DenseNet做的是通道维度上的拼接
DenseBlock
虽然这些残差模块中的连线很多,但是它们代表的操作只是一个空间上的拼接,并不是实际上的加减乘除运算,所以DenseNet相比传统的卷积神经网络可训练参数量更少。但是,为了在网络深层实现拼接操作,必须把之前的计算结果保存下来,这就比较占内存了。这是DenseNet的一大缺点。
Down-sampling Layer
由于在DenseNet中需要对不同层的feature map进行cat操作,所以需要不同层的feature map保持相同的feature size,这就限制了网络中Down sampling的实现.为了使用Down sampling,作者将DenseNet分为多个stage,每个stage包含多个Dense blocks, 如下图所示:
在同一个Denseblock中要求特征图尺寸保持相同大小,在不同Denseblock之间设置Transition Layers实现下采样操作,具体来说,transition Layer由BN+Conv(kernel size 1×1)+average-pooling(kernel size 2×2)组成。
注意这里1×1卷积是为了对特征通道数量进行降维;而池化才是为了降低特征图的尺寸。
在DenseNet模型中,Dense Block的每个子结构都将前面所有子结构的输出结果作为输入。例如,假设我们考虑Dense Block(3),该Block包含32个3×3的卷积操作。如果每一层输出的特征通道数为32,那么第32层的3×3卷积操作的输入通道数将是前31层所有输出的累积,即31×32,加上上一个Dense Block的输出特征通道数。这可以使得特征通道数达到近1000。
为了降低特征通道数,DenseNet在每个Dense Block后引入了Transition Layer,其中使用了1×1的卷积核进行降维操作。Transition Layer有一个参数名为’reduction’,取值范围为0到1,用于控制输出通道数相对于输入通道数的比例。默认情况下,'reduction’设为0.5,这意味着Transition Layer将特征通道数减少到原来的一半,然后将结果传给下一个Dense Block。
FractalNet
FractalNet(分型网络),2016年Gustav Larsson首次提出,这个网络跟DenseNet有些类似,因此这里做简单的介绍。
-
分形网络不像resNet那样连一条捷径,而是通过不同长度的子路径组合,网络选择合适的子路径集合提升模型表现
-
分形网络体现的一种特性为:浅层子网提供更迅速的回答,深层子网提供更准确的回答。
-
图中以粉红色的卷积层Convolution为基础层,实际上可以为其它类型的层或者子网络;
-
绿色的Join层一般可以用相加或concat,这里采取了相加然后取平均,因此所有基础层可以使用一样的channel数量
-
f C ( Z ) f_C(Z) fC(Z)中C表示列数,z表示输入,C=1表示一个基础层
-
f C + 1 ( Z ) f_{C+1}(Z) fC+1(Z)则如图所示,在右边叠加两个fC(z) ,左边接一个基础层(可以对应上图左边的公式来看)
-
f4(z)作为一个block中,如图中最右边的网络所示,完整的网络接了5个block,block之间用Pool层连接,最后是预测层
-
令block个数为B,每个block中的列数为C,网络的总深度为 B ∗ 2 C − 1 B*2^{C-1} B∗2C−1
最后,路径舍弃(Drop path)也是FractalNet的贡献之一,可以看作一种新的正则化规则。
全局是只有一个通路,
局部是至少有一个通路
总结
DenseNet是一种深度学习模型,它在计算机视觉任务中表现出色。与传统的卷积神经网络相比,DenseNet引入了密集连接的概念,使得网络内部的信息流动更加充分和高效。以下是对DenseNet模型的总结:
密集连接:DenseNet的核心思想是通过密集连接来增强特征传播和重用。在传统的卷积神经网络中,每个层只连接到其后续的层。而在DenseNet中,每个层都与后续所有层直接相连。这种密集连接使得底层的特征可以直接传递到更深层,有效地解决了梯度消失的问题。
特征重用:由于密集连接,DenseNet中的每个层都可以接收到前面所有层的特征图。这种设计使得网络能够更好地重用之前层的特征信息,从而提高了参数的利用效率和整体模型的性能。
层间特征融合:DenseNet采用了一种称为“密集块”的结构,它由多个具有相同输出尺寸的层组成。这些层通过拼接操作将其输入和输出连接在一起。这样,每个密集块都可以将前面所有层的特征融合在一起,形成更丰富的表示。
参数和计算效率:尽管DenseNet中参数的数量比传统的卷积神经网络稍多,但由于特征的重用,它在实际训练和推断中可以更好地利用参数。此外,DenseNet中的特征重用还减少了冗余计算,使得整体计算效率更高。
模型性能:DenseNet在许多计算机视觉任务上表现出色,包括图像分类、目标检测和图像分割等。由于密集连接的引入,DenseNet能够捕捉更丰富的特征表示,提高模型的准确性和鲁棒性。
总之,DenseNet通过引入密集连接的概念,实现了更充分和高效的信息流动,增强了特征重用和表示能力。这使得DenseNet成为了一个强大的深度学习模型,在计算机视觉领域得到广泛应用并取得了显著的性能提升。