densenet与resneXt的巧妙结合-DPN网络


DPN是在resneXt,denseNet之后,对resnet系列的进一步创新,作者巧妙的将resnet与denseNet相结合,提出了dual path architectures,构造了DPN网络结构。
那么DPN的创新点有哪些呢?如下:

DPN具有更小的模型以及更少的计算量,具有更好的训练速度。作者在论文中的描述为:[
In particular,on the ImageNet-1k dataset, a shallow DPN surpasses the best ResNeXt-101 with 26% smaller model size, 25% less computational cost and 8% lower memory consumption.]

那么DPN是如何做到这点的呢?

论文第二章、第三章详细介绍了DPN的理论基础,包含有较多的公式,简单而言就是借鉴了:

  • resnet特征重用(因为前面特征被sum到了后面层上面)
  • denseNet容易发现新特征(将前面特征均进行了concat组合)

的特点,并且受到HORNNs的启发,HORNNs我还没有仔细的研究,这里就不解释了。
该部分包含有较多的公式可供理解,感兴趣的读者可以在论文中查看。


下面我主要介绍DPN的网络结构,以及DPN在resnet以及densenet上面的改进。
下面这两张图我觉得画的让我眼前一亮,很好的描述了resnet与denseNet的特点。
下图中(a)是resnet示意图,其中“+”代表element-wise addition,即对应值相加。
(b)是densenet示意图,由于densenet采用的是concat方式进行特征图叠加,所以在网络中特征图的宽度会逐渐增加。
图中的1*1卷积主要是为了改变特征图的维度,起到了降维的作用。

densenet与resneXt的巧妙结合-DPN网络_第1张图片

那么,DPN是什么样子的呢?灯灯灯灯~来啦,如下图:

DPN跟resnet与densenet具有相似的结构均为: 1*1 + 3*3 + 1*1,但是DPN的最后一层被分成两部分,一部分交给resnet进行element-wisely add另一部分进行densenet的concat,并且DPN采用的resneXt的group(分组卷积)结构,以提高DPN的分类能力。

densenet与resneXt的巧妙结合-DPN网络_第2张图片

下面是DPN网络的可视化结构(鉴于篇幅限制,这里只能截图一个block中的一部分啦),可以看出,网络经过3个卷积后进行分支,分成两部分,一部分执行resnet的elewise另一部分执行densenet的concat

densenet与resneXt的巧妙结合-DPN网络_第3张图片

DPN的参数结构如下图所示:

通过该结构图,我们同样可以看出DPN同resneXt也很像,都是几个block,并且以DPN92为例子,我们可以看出,dpn网络的参数量相比较于resneXt101(32*4d)要少很多。

densenet与resneXt的巧妙结合-DPN网络_第4张图片

如果要详细了解其结构,可以参考作者给出的代码 DPN的mxnet实现:https://github.com/cypw/DPNs/tree/master/settings

另外需要补充说明的是:

DPN没有类似densenet结构中的pooling进行图像尺寸的缩小,而是通过conv中设置stride为2进行图像尺度的缩小。并且在不同的block之间


作者的实验部分介绍的也算很详细,实验结果就是DPN网络可以使用更少的参数量,达到更好的实验效果。如下图。

通过下图可以看出,DPN98在精度上和速度上以及内存利用率上均已经超过了ResNeXt101。
densenet与resneXt的巧妙结合-DPN网络_第5张图片

你可能感兴趣的:(图像分类,深度学习)