1.ResNet
- 为什么ResNet可以解决“随着网络加深,准确率不下降”的问题:答:理论上,Resnet提供了两种选择方式,也就是identity mapping 和 residual mapping,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。
- ResNet的两种设计:
- bottleneck design中的作用:
a)减少计算与参数量(约17倍)
b)神经网络层数曾多,可以更好的拟合非线性模型
参考:https://blog.csdn.net/lanran2/article/details/79057994
2.DenseNet
核心:create short paths from early layers to later layers
-
DenseNet 的本质:每一层的输入均来自前面所有层的输出
-
DenseNet-BC网络结构
DenseNet-BC 较 DenseNet 多了 bottleneck layer(B)和 Translation layer(C),接下来详细介绍一下两者的作用:
- bottleneck layer 即 Dense Block中的卷积,可以大大减少计算量。以 DensNet-169 中的 Dense Block(3)为例,第 32 层的输入为前 31 层输出进行concat,如果不做 bottleneck layer ,假设每层输出的channel 为 32(growth rate,文中超参),则第 32 层的输入为32 * 31 + 上一个transition layer的输出channel (合共约1000)。如果做 bottleneck layer , 的channel 为 128(growth rate*4),大大减少了计算量;
- transition layer,也是用来减少计算量的。还拿 DensNet-169 中的 Dense Block(3)为例,第32层的输出为32(growth rate),concate前31层的输出及上个Dense Block的输出为此Dense Block的输出(channel也是1000左右),transition layer有个参数reduction(范围是0到1),表示将这些输出缩小到原来的多少倍,默认是0.5,这样传给下一个Dense Block的时候channel数量就会减少一半,这就是transition layer的作用。文中还用到dropout操作来随机减少分支,避免过拟合。
-
DenseNet的优点:
a. 减轻了梯度消失:DenseNet网络的设计相当于将每一层的input和loss直接相连。
b. 极致利用feature达到更好的效果
c. 一定程度上减少了参数量及防治过拟合(bottleneck layer,Translation layer以及较小的growth rate选择)
参考:https://blog.csdn.net/u014380165/article/details/75142664
3.SENet
核心:对特征的通道之间加入类似attention机制考虑
- se block原理图:
a. Squeeze:对channel进行了squeeze,通过ave pooling 将feature map([W, H, C])变为[1,1,C]。【顺着空间维度进行压缩,将每个二维的特征通道[W,H]变成一个实数,该实数某种程度上具有该通道全局的特征】
b. Excitation:对得到的squeeze后的feature map,使用sigmoid函数进行excitation,得到每个通道的权重
c. Reweight:根据b得到的权重与原feature map加权 - se block结构图:
参考:https://blog.csdn.net/liuxiao214/article/details/81914743