DenseNet将shortcut-connection的思路发挥到极致。在一个DenseBlock内部,每一层的输出均跟后面的层建立shortcut,特别需要注意的是,不同于ResNet中的相加,DenseNet连接shortcut的方式是Concat,这样越深的层则输入channel数越大。
DenseNet
整个网络被分为Dense Block和Transition Layer,前者内部进行密集连接,保持同样大小的feature map,后者为DenseBlock之间的连接层,完成下采样操作。
在每个DenseBlock内部,接受的数据维度会随层数加深而变大(因为不断拼接了之前层的输出),增长的速率即为初始的channel数,文章称这一channel数为growth rate,作为模型的一个超参数。初始的growth rate为32时,在DenseNet121架构下,最后一层的channel数将增长到1024。
Netscope Vis,源文件位于awesome_cnn。
Experiments
作者在CIFAR和ImageNet上都做了实验,DenseNet取得了跟ResNet相当的表现,加入Bottleneck和一部分压缩技巧后,用较少的参数就能达到跟ResNet相当的效果: