Densely Connected Convolutional Networks
- 如果在接近输入层和接近输出层之间有更短的连接(如1->n),则卷积神经网络会更深入,更准确,更有效。
- 稠密卷及神经网络:每一层之间都有连接(,由此密集的连接方式而得名),连接都以前馈的方式连接(对于每一层,前面所有层的特征图作为输入,它自己的特征图作为后面所有层的输入)
- 优点:
- 缓解了梯度消失
- 增强了特征的传播
- 鼓励特征的重利用
- 大大的减少了参数量
- 在网络中不断改进信息和梯度流,这使得他们更容易训练
- 每一层都能直接从损失函数和原始输入信号中获得梯度,这有助于更深层次的网络架构
- 此外,密集连接有一种正则化的效果,有助于减小在小规模数据集上的过拟合问题
- 第l层的输出定义为,
- 定义,包含BN,ReLU和一个3*3的Conv
- 显然,若需要图片的尺寸变化,上式的操作是不可取的。所以,我们可以把网络划分成多个连接的密集块,如下。两个密集块之间的叫做
过渡层
,过渡层包含一个BN,1x1的Conv和2x2的平均池
- 如果产生了k个,那么第l层就有层input featrue map,其中是输入层的channels。DenseNet的一个很好的优点就是DenseNet可以变得很窄,如k=12,把k当做一个超参数,叫做growth rate
- 解释:block中每一层都能获得前面所有的feature_maps,因此,相当于获得了网络的“集体知识(collective knowledge)”,feature_maps可以看做网络的总体状态,每一层都加上k个属于自己当前状态的feature_maps,这个增长率(growth rate)可以调节网络每次加入多少个新的信息。整个网络状态,一旦被写完,不想传统的网络那样,而可以从任何一个地方获得网络状态,而不需要像传统的网络那样需要在层与层之间复制。
- 即使每层只产生k个特征,还是会产生很多的输入。所以我们在每个3x3的Conv前引入1x1的Conv来当做
瓶颈层
。以此减少input feature-maps的数量并提高计算效率。文章的瓶颈层
设计:BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3) version ofH - 压缩:为了提高模型的致密性,我们可以减少过滤层中feature-maps的数量.如果一个Dense block包含了m个featrue-maps,我们让之后的过滤层生成的out featrue-maps
- 1x1的卷积核:升维或降维,减少参数,增加非线性运算(让其看起来更deep)。注意,卷积核计算的时候是贯穿channel的,就比如3x3—>3x3xchannels