DenseNet 密集型网络

Densenet 可以用下面的这个图来表示,核心主要是Dense Block
DenseNet 密集型网络_第1张图片
原图在链接https://zhuanlan.zhihu.com/p/37189203,这位大佬的讲解很明白

没什么说的,以densenet121为例,上代码(pytorch):

DenseNet(Bottleneck, [6,12,24,16], growth_rate=32)

基础卷积组成是Bottleneck,由两个卷积组成,如下:
DenseNet 密集型网络_第2张图片
整个过程中,特征图大小不变,宽度从in_planes->4 * growth_rate -> growth_rate->growth_rate+in_planes,从这个过程看,Bottleneck做的是特征图宽度的扩增,特征图大小没有变化,同时由于每一层的输出都需要和上一层的输出在宽度方面进行concat,因此下一层的输入包含了前面之前任意一层卷积层的输出,这样特征会最大化保留下来。因此实际densenet中的特征损失进行Transmition 处理的时候(平均值池化),也就是Dense Block 之间的处理

DenseNet的Transmition,由一个卷积组成,主要目的的为了降低特征图的宽度,对特征图进行下采样处理,代码如下:
DenseNet 密集型网络_第3张图片
整个过程中,只有一个卷积,特征图的大小由于平均值池化的原因,特征图的大小减小到原来的一半

源代码在github内的链接:https://github.com/kuangliu/pytorch-cifar

你可能感兴趣的:(DenseNet 密集型网络)