DPN
DPN(Dual Path Networks)是一种网络结构,它结合了DensNet和ResNetXt两种思想的优点。这种结构的目的是通过不同的路径来利用神经网络的不同特性,从而提高模型的效率和性能。
- DenseNet 的特点是其稠密连接路径,使得网络能够在不同层级之间持续地探索新的特征。这种连接方式允许网络在不增加参数的情况下学习到更丰富的特征表示。
- ResNeXt(残差分组卷积)则是通过残差路径实现特征的复用,这有助于减少模型的大小和复杂度。
DPN的设计思想在于融合这两种思想,通过两个并行的路径来进行信息传递:
- 一条路径是通过DenseNet的方式,即通过稠密连接路径,这样可以持续地探索新的特征。
- 另一条路径是通过ResNeXt的方式,即通过残差路径,可以实现特征的复用。
此外,DPN使用了分组卷积来降低计算量,并且可以在不改变原有网络结构的前提下,提升性能,使其适合用于检测和分割任务作为新的Backbone网络。
DPN就是在ResNeXt和DenseNet的基础上,融合这两个网络的核心思想而成,论文原文见附录。
主要创新点
- DPN的Dual Path(双路)结构结合了ResNeXt(残差分组卷积)和DenseNet(稠密连接)两种思想。即可以利用残差网络的跳跃连接对特征进行复用,又可以利用密集连接路径持续探索新特征。
- 使用了分组卷积,降低了计算量。
- 性能超越ResNeXt和DenseNet,可以做检测分割任务新BackBone。
DPN网络结构
DPN的网络结构如Table1所示:
可以看到DPN的网络结构和ResNeXt的网络结构很类似。最开始是一个7×7卷积层,接着就是一个最大池化层,再然后是四个stage
,再接一个全局平均池化以及全连接层,最后是softmax
层。整体结构是这样,重点就在每个stage
具体是怎么变化的了,接下来我们就一起来理解一下。
上面说了DPN网络就是把ResNeXt和DenseNet融合成1个网络,因此这里首先介绍一下这篇论文是如何表达ResNeXt和DenseNet的,具体如Figure2所示:
- 其中Figure2(a)就是ResNeXt的一部分,其中(a)的左边这个矩形的小凸起部分就代表每个残差模块输入输出,对于一个输入
x
,分两条路走,一条是x
本身,即残差模块中的跳跃连接,而另一条就是经过1x1
卷积+3x3
卷积+1x1
卷积(即瓶颈结构),然后把这两条路获得结果做一个求和即可,也即是文中的+
符号,得到下一个残差模块的输入。 - 而Figure2(b)是DenseNet的一部分,其中(b)左边的多边形凸起代表每个密集连接模块输入输出,对于输入
x
只有一条路,即经过几层卷积之后和x
做一个通道合并(concat
),得到的输出又是下一个密集连接模块的输入,这样每一个密集连接模块的输入都在不断累加,可以看到这个多边形越来越宽。 - Figure2(c)通过在(b)中的模块之间共享相同输出的第一个
1x1
卷积,密集连接模块退化成了残差模块,虚线圈起来的部分就是残差模块。 - Figure2(d)是双路径体系结构(DPN),将同一层上ResNet的输出和DenseNet的输出按元素相加,再整体做卷积,然后将结果按原先通道分配的情况来分割又各分给残差模块和密集连接模块来连接,既有按元素相加又有通道相加,这就是DPN的双路径。
- Figure2(e)实际上和Figure2(d)是工程等价的,其中
~
表示分割操作,+
表示元素级加法。一个模块中先连接,然后整体做卷积,再分开,分开之后残差模块的和残差模块相连,密集连接模块和密集连接模块相连,连完之后得到新的特征层。这一块完成后再做些卷积、pooling等,然后继续作为下一个模块的输入。
需要注意的一点是,上面的所有的3x3
卷积都是分组卷积,所以DPN是ResNeXt和DenseNet的结合,而不是ResNet。
https://arxiv.org/pdf/1707.01629.pdf