ResNet
实验:持续向一个“基础”的卷积神经网络上面叠加更深的层数会发生什么?
ResNet具有一下贡献:通过堆叠残差模块可以构建任意深度的神经网络,而不会出现“退化”现象。
提出了批归一化方法来对抗梯度消失,该方法降低了网络训练过程中对于权重初始化的依赖。
提出了一种针对ReLU激活函数的初始化方法。
研究者考虑了这样一个问题:浅层网络学习到了有效的分类模式后,如何通过向上堆积新层来建立更深的网络,使其满足即使不能提升浅层网络的性能,深层网络也不应降低性能。
解决方案:残差模块
假设卷积层学习的变换为F(X),残差结构的输出是H(X),则有:
H(X)=F(X)+X
关于残差结构:
- 残差结构能够避免普通的卷积层推爹存在信息丢失的问题,保证前向信息流的顺畅。
- 残差结果能够应对梯度反传过程中的梯度消失问题,保证反向梯度流的通顺。
为什么残差网络性能这么好?
一种典型的解释时:残差网络可以看作是一种集成模型!
残差网络和Inception是公认的推广性能最好的两个分类模型
特殊应用环境下的模型:面向有限存储资源的SqueneezeNet以及面向有限计算资源的MobileNet和ShuffleNet
视觉识别
不考虑空间位置:分类
像素的类别:语义分割
多目标:目标检测,实例分割
语义分割:给每个像素分配类别标签,不区分实例,只考虑像素类别
语义分割思路:全卷积
解决方案:让整个网络只包含卷积层,一次性输出所有像素的类别预测。
并在网络中嵌入下采样与上采样的过程。
反池化操作:“unpooling”
可学习的上采样:转置卷积(Transpose Convolution)
卷积与矩阵相乘(一维例子):
目标检测:单目标(分类+定位)
常使用在ImageNet上预训练的模型(迁移学习)
目标检测:多目标
困境:每张图像期望输出的维度都不一样