Paper : Deep Pyramidal Residual Networks
Code : official
摘要
其实文章的核心观点与Inception提出的设计原则区别不大,Pyramid Net 认为在设计网络结构的时候,网络的宽度(通道数)应当逐渐增大,而之前的模型一般在卷积网络的前几层时通道变化幅度过大。没有提出非常创新的设计思路,个人感觉是小改动。
网络结构
In this research, instead of sharply increasing the feature map dimension at units that perform downsampling, we gradually increase the feature map dimension at all units to involve as many locations as possible.
下面使用图片直观展示ResNet和PyramidNet之间的区别
对于ResNet来说,令 D k D_k Dk表示第k个ResNet模块的宽度,则有
D k = { 16 n ( k ) = 1 16 ⋅ 2 n ( k ) − 2 n ( k ) ≥ 2 D_k = \left\{\begin{matrix} 16 & n(k)=1\\ 16 \cdot 2^{n(k)-2} & n(k) \geq 2 \end{matrix}\right. Dk={1616⋅2n(k)−2n(k)=1n(k)≥2
其中 n ( k ) ∈ { 1 , 2 , 3 , 4 } n(k)\in \{1,2,3,4\} n(k)∈{1,2,3,4}表示ResNet Block所在的组数。
而Pyramid Net使用的设计策略如下
D k = { 16 k = 1 ⌊ D k − 1 + α N ⌋ 2 ≤ k ≤ N + 1 D_k = \left\{\begin{matrix} 16 & k=1\\ \lfloor D_{k-1}+\frac{\alpha}{N} \rfloor & 2\leq k\leq N+1 \end{matrix}\right. Dk={16⌊Dk−1+Nα⌋k=12≤k≤N+1
其中 α \alpha α是一常数。另有非线性的网络宽度设计策略如下
D k = { 16 k = 1 ⌊ D k − 1 ⋅ α 1 N ⌋ 2 ≤ k ≤ N + 1 D_k = \left\{\begin{matrix} 16 & k=1\\ \lfloor D_{k-1}\cdot \alpha^{\frac{1}{N}} \rfloor & 2\leq k\leq N+1 \end{matrix}\right. Dk={16⌊Dk−1⋅αN1⌋k=12≤k≤N+1
对比图如下
在具体实现中,PyramidNet 选用下图中(d)所示的单元作为网络组成部分,注意为了不影响准确率,Pyramid Net 移除了第一个ReLU
因为PyramidNet中每个ResNet Block的通道数是逐渐增大的,各不相同,因此简单的identity mapping shortcut不能直接使用。作者采用零填充的方式扩展通道数实现通道对齐,而下图说明零填充的shortcut等价于ResNet和普通CNN的混合
实验中,作者还发现,BN层的使用不止可以加快参数的收敛,还可以最大化单个ResNet单元的容量。在模型的每个模块后使用BN层,可以改善模型的表现。
核心观点
- 在PreActResNet的基础上,进一步研究了Conv BN ReLU在ResNet Block中的位置,提出了移除首部ReLU层和添加末尾BN层的新的ResNet Block结构。
- 提出了线性增大网络宽度,使用零填充进行shortcut连接的思路。