论文阅读 《Densely Connected Convolutional Networks》
论文阅读 《Densely Connected Convolutional Networks》
标签(空格分隔): ReadingNote ActionRecognition
2017CVPR BestPaper
[gayhub]
Abstract
当卷积网络在靠近输入层和靠近输出层的各层之间引入短连接时
在DenseNet架构中
- Mitigate the issue of strong gradient flow (mitigate the issue of strong gradient flow)。
- Enhance the propagation of feature information。
- Promote the reuse of feature representations。
- Significantly reduce the number of parameters.
4dataset:
- CIFAR-10
- CIFAR-100
- SVHN
- ImageNet
更少的计算量,更好的表现。
Intro
they create short paths from early layers to later layers.
这些模型的核心理念是通过前后层之间的连接建立简捷的通信通道.
在DenseNet架构中,默认设置下所有具有一致特征图大小的模块都会相互连接在一起。为了保持前向传播特性,在每一层处理完所有前面模块提取的信息后会继承额外输入,并将这些信息传递给后续的所有模块作为输入源。与ResNet的不同之处在于,在将特征传递给一个网络模块时我们不采用将特征以加和形式结合在一起的方式而是选择串联的方式进行处理由于其稠密性这种设计被称为DenseNet

相较于传统CNN而言,该方法所需的参数数量显著减少。这是因为无需重复学习冗余特征图(feature map)。通过加法恒等变换显式地保留了信息。近期研究表明,在某些变体结构中许多层的贡献相对较小,在训练过程中可以随机移除这些层以简化网络结构而不影响其核心功能表现。这使得改进后的ResNet模型在一定程度上类似于未展开的传统RNN模型(Recurrent Neural Network),然而由于每层都独立拥有各自的权重矩阵(weight parameters),其总参数量依然庞大。而DenseNet则在处理输入信息时能够明确地区分并整合来自不同路径的信息(input paths),从而实现了对各条特征提取路径的有效融合与增强
对于传统cnn,每一层的监督信息只来自上一层。网络深了之后监督就变弱了。Densenet从最后的误差得到更直接的监督,让浅层也学到比较有分辨率的特征
注释部分
另一个显著优势在于显著提升了信息流动性和贯穿网络中的梯度分布
Related work
DenseNet
ResNets. 经典的卷积前馈网络结构通过将上一层输出作为下一层输入的方式进行操作:对于每一层l有x_l = H_l(x_{l-1})。 ResNets引入了跳跃连接机制(skip-connection),借助恒等映射从旁路层传递非线性变化:
如此,在神经网络中梯度能够从前一层直接传递到后一层;然而,在恒等函数与 H_l 的输出之间是通过求和的方式进行整合的;这可能涵盖了网络中的信息流动。
Dense connectivity. 为增强各网络层级间的信息传递效率,请问您是想了解什么?为此我们需要提出一种新的架构设计。通过将每一级与随后的所有层级建立密集连接,请参考图1中的示例说明。在第l层级将会整合并接收前面各层级生成的所有特征图x_0,...,x_{l-1}.
其中 [x_0,...,x_{l-1}]代表从0到l-1层的features map 的串联。
Composite operation 基于12的启发,在此我们构建了一个由三个连续操作组成的复合运算H_l(·):BN层、ReLU激活函数以及3x3卷积层。
在每个block之间做featrue拼接,在block之间卷积和池化。为什么要加卷积,直接池化不行吗?:加入卷积之后网络设计更自由,可以对channel进行压缩。网络很深的时候,用一个卷积层进行压缩,过滤冗余信息
在每个block之间做featrue拼接,在block之间卷积和池化

Growth factor.增长率因子
Bottleneck layers.
Compression. 压缩。为了进一步紧致模型,我们可以在过渡层较少featuremap的数量。如果一个denseblock包含m个featuremap,那么之后的过渡层就输出\theta m个featuremap,其中0<\theta<=1,叫做压缩因子。当\theta=1,表示没有压缩,直接穿到下一个denseblock。带有压缩结构的densenet叫做densenet-C。实验中\theta=0.5
又有瓶颈层又有压缩层,叫做densenet-BC。
Implementation Details. 除了Imagenet数据集外, 残差网络(densenet)均使用三个稠密块结构, 各稠密块内部的层深度一致。在进入第一个稠密块之前, 输入图像会经过一个通道数为16(即特征图增长率为该值)的空间扩展卷积操作进行处理。基于3×3尺寸的空间扩展卷积核会对输入图像进行处理, 并对每个输入通道进行填充操作以保持特征图尺寸不变。各相邻两个稠密块之间会依次连接一个1×1尺寸的空间扩展卷积层和一个2×2尺寸的最大值池化操作作为过渡结构连接模块。第三个稠密块之后会连接一个全局平均池化操作并紧跟一个 softmax 分类器完成分类任务。三个稠密块所提取的特征图尺寸分别为: 第一层输出为32×32, 第二层输出为16×16, 最后一层输出为8×8 的分辨率特征图矩阵构成整个网络模型架构的基本组件部分
- 基础DenseNet采用以下配置:第一组包含(L=40, k=12),第二组为(L=100, k=12),最后一组则为(L=100, k=24)。
- 改进型版本DenseNet-BC架构如下:(L, k)分别为(100, 12)、(256, 36)、(388, 68)及(588, 96),其中第三层及第四层参数有所调整。
- 在Imagenet数据集上进行训练时,默认采用四块拼接结构,并使用大小为[batch_size × 3 × 3]的输入图像进行初始化。初始化阶段包含[batch_size × 3 × 3]尺寸的卷积核,并采用stride为[batch_size × stride× stride]的方式进行操作。

Experiments
DataSets:
CIFAR. 32x32pixels.
- CIFAR10包含1万幅图像。
- CIFAR100包含5万幅图像。
- 用于验证的样本数量为5千。
- 标准增广:通过镜像和平移等方式进行数据增强。
- normalize:对每个通道计算均值和标准差。
- 用于训练的数据样本数量为5千。
SVHN. The Street View House Numbers 32x32pixels,73257 images for train,26032 images for test,531131 images for additinal trianing.
- 增广:none
- validation : 6000 from training imgs.
- select the model with the lowest validation error during training
- divide the pixel values by 255 so they are in the [0, 1] range.
ImageNet. 1000 classes
- train:1.2 million images
- validation: 50000
- 增广:same as 8 11 12 , single-crop/10-crop with size 224x224 at test time。
Training
All the networks are trained using stochastic gradient descent(SGD).
CIFAR and SVHN
- 我们采用批量大小64分别在300个和40个 epoch中进行训练。
- 初始学习率设置为0.1并在此后逐步衰减,在总训练迭代次数的一半及四分之三时分别减少。
ImageNet
- Train the models for ninety epochs using a batch size of two hundred fifty-six.
- The initial learning rate is set to zero point one, which is decreased tenfold at epochs thirty and sixty.
- Our largest model, DenseNet-161, utilizes a mini-batch size of one hundred twenty-eight due to GPU memory constraints.
- To compensate for the smaller batch size, this model undergoes training over one hundred epochs, reducing the learning rate by a tenth at epoch ninety.
we employ weight decay with a value of 10^{-4} and utilize the Nesterov accelerated gradient method [34] with a momentum value of 0.9, excluding any damping mechanisms. The network architecture is based on the base model without any data augmentation using the standard C10 and C1000 SVHN datasets. For regularization purposes, we incorporate a dropout layer with a dropout rate of 0.2 in each convolutional layer except the first one, which follows directly after the input module to prevent overfitting.
CIFAR SVHN 结果
我们实验中采用的不同L值及其对应的增长率范围显示出显著差异性特征。其中使用加粗字体突出显示的状态-of-the-art方法具有显著的优势表现;而实验结果表明最佳性能则以蓝色标记并取得了令人瞩目的成绩

ImageNet Results

【single-crop & 10-crop】:
既然知道single crop evaluation这个名词,那就从它开始吧。
训练的时候,当然随机裁剪,但测试的时候就需要有点技巧了。
Evaluation呢,就是指模型训练好了,测试评估它的性能。
Singl Crop Evaluation通常是指在测试过程中,将图像Resize到某个尺度(比如256xN),选择其中的Center Crop(即图像正中间区域,比如224x224),作为CNN的输入,去评估该模型。
Crops Evaluated不是个专业名词,仅仅表示用多少个Crops作为输入,去评估(Evaluate)模型。
10个Crops呢,一般是取(左上,左下,右上,右下,正中)各5个Crop,以及它们的水平镜像,共10个Crops,输入到CNN模型中,得到10个概率输出,然后平均一下,作为最后的结果。
144个Crops,略复杂点,以ImageNet为例,它首先将图像Resize到了4个尺度(比如256xN,320xN,384xN,480xN),每个尺度上去取(最左,正中,最右)3个位置的正方形区域,然后对这些正方形区域取上述的10个224x224的Crops,然后加上将这正方形区域直接Resize到224x224以及这Resize后的镜像,也就是每个正方形区域得到12个Crops,最后得到4x3x12=144个Crops,输入CNN,得到输出取平均,即为最终模型输出。
结论就是densenet和resnet效果不相上下但参数更少计算更快。
Discussion
从外观上看,densenet和resnet非常相似,它们在输入公式上仅存在微小差异.然而,这一点微妙差异却带来了两种完全不同的网络架构.
对于传统cnn,每一层的监督信息只来自上一层。网络深了之后监督就变弱了。Densenet从最后的误差得到更直接的监督,让浅层也学到比较有分辨率的特征
对于传统的CNN来说,每层仅能获取自上一层的信息.随着深度增加,supervision逐渐减弱.Densenet则通过最终误差获得更直接的supervision,从而使较浅层也能学习到具有较高分辨率特性的特征
Stochastic vs. deterministic connection
Feature Reuse
