1. Resnet网络
Resnet: Residual Network 深度残差网络
我们都知道增加网络的宽度和深度可以很好的提高网络的性能,深的网络一般都比浅的的网络效果好。但是最这网络的层数加深,当网络层数达到一定的数目以后,网络的性能就会饱和,再增加网络的性能就会开始退化,但是这种退化并不是由过拟合引起的,因为我们发现训练精度和测试精度都在下降,这说明当网络变得很深以后,深度网络就变得难以训练了。
ResNet的出现其实就是为了解决网络深度变深以后的性能退化问题。
具体参考:残差resnet网络原理详解
具体这块还可以参考知呼的解答https://zhuanlan.zhihu.com/p/31852747。
这块我个人理解了以下,举个很简单的了例子,我们从x映射到y,可能需要一个复杂的映射关系,但是,当我们从x映射到y-x上,相比之前,我只需要知道x需要变化多少即可,残差其实就是在说明输入和输出的变化值,相比直接找输出,变化值的范围大概率会更小一些,也更容易在网络中收敛。
2. ENet
参考他人笔记
照搬了一些,如果对原作者造成困扰,请联系我,我会删除相关。主要是自己做对比记录用的。
- 什么是Enet?
ENet (efficient neural network) - 为什么要用Enet?
Enet网络结构简单,参数少,运行速度快。按照原始论文的描述,Enet相比正常Segmentation Net计算需求减少75倍,参数少了79倍。然而最终出来的效果和正常网络差不多。 - Enet做了什么优化?
首先,先看一下整个的架构
a. 初始化模块优化:
Conv:3x3,stride 2,num 13
Maxpooling:2x2,stride 2,num 3
将两边结果 concat 一起,合并成 16 通道,这样可以上来显著减少存储空间。
b. bottleneck 模块,基于 ResNet 思想。
基本的 bottleneck
第一个 1x1 卷积实现降维;
第二个主卷积层可以是普通卷积、非对称卷积、空洞卷积;
第三个 1x1 卷积实现升维;
使用 PReLU 激活函数,ReLU 降低了模型精度(网络层数较少);
drop 防止过拟合;
元素级加法融合,Resnet shortcut connection 的思维;
下采样的 bottleneck
2x2 conv 利于信息的保留
2x2 pool 降采样提取上下文信息,保存 pooling indices;
1x1 卷积升维
上采样bottleneck
upsample 采用的是 SegNet 的方法进行上采样,结合下采样中的 pooling indices
3. ERFNet整体网络
- 什么是ERFNet?
Efficient Residual Factorized ConvNet
ERFNet的核心操作是residual connections 和factorized convolutions(convolutions with 1D kernels)
- ERFnet优化了什么?
ERF通过使用一维卷积,相比其他的block,参数至少减少20%,减少了计算量,提高了运行速度,同时保证运行结果没有太大的变化。