深度学习笔记 - FCN全卷积神经网络

感受域

深度学习笔记 - FCN全卷积神经网络_第1张图片
感受野的计算公式:RFl+1 = RFl + (kernel_size -1) × stride
深度学习笔记 - FCN全卷积神经网络_第2张图片
layer1的感受野:RF1 = 1
layer2的感受野:RF2 = 1+(3-1)×1 = 3
layer3的感受野:RF2 = 3+(3-1)×1 = 5

感受野越大,分割时获取的全局信息越多,分割越准确。

存在的问题

在全卷积神经网络中感受域问题存在和熊掌不可兼得的问题:
增大stride能够获得更大的感受野,但同时会丢失图像中的信息

解决方法

deeplab系列提出了空洞卷积的方法来增大感受野的同时解决信息丢失问题

平移不变性

平移不变性是卷积网络的基础,但是放在卷积神经网络中出现错误
深度学习笔记 - FCN全卷积神经网络_第3张图片
平移不变性在CNN网络中已经被证伪(CNN不遵循平移不变性),随着CNN网络的不断加深,平移不变性在慢慢消失,VGG,resNet等网络都不符合平移不变性
CNN不循循平移不变性的原因:
(1)忽略了采样定律(过多的下采样导致的) ,大尺度的步长(stride=2,3,4等)会破坏空间坐标信息,导致输出结果发生变化

将全连接层改成全卷积层的原因

  • 提升网络效率,降低参数量
  • 全连接层输入是固定的,而且将二维信息转为一维全连接会破坏空间信息,FCN可以避免上面的情况

反卷积

可以理解为卷积的逆运算,反卷积并不能复原卷积操作造成的值的损失,它仅仅是将卷积过程中的步骤反向变换一次,因此可以称为转置卷积
采用反卷积的训练方式在端到端的训练中参数可以学习
计算公式:
卷积输出计算: output = (input -k + 2p)/srride + 1
反卷积输出计算:output = (input -1)×stride + k -2p

注意:模糊或被遮挡的像素在FCN论文中并未被清算在内

FCN算法架构

深度学习笔记 - FCN全卷积神经网络_第4张图片
通过多次卷积,每次将图像进行下采样,获得原图像尺寸一半的feature map

注意点:通过加深网络层可以提取更多的特征信息,但是更深的网络层会导致图像的精细信息丢失,所以存在一个矛盾点,可以通过跳跃连接的方式将浅层信息加到深层信息中,提升深层神经网络分割效果的目的

训练技巧&实验结果分析

  1. 加载预训练模型
  2. 初始化反卷积参数**(为了更快的收敛)**
  3. 至少175个epoch后算法才有不错的表现
  4. 学习率在100次之后进行调整(越到训练后期,lr需要下降的越多,需要通过实践获得具体调整过程)
  5. pool3之前的特征图不需要融合(负反馈的出现,提示我们不需要做无谓的优化)
  6. 使用跳跃连接进行特征融合

总结讨论

类别平衡问题

结论:类别平衡问题再数据集中是值得关注的点,不同数据集的架构不同,需要用不同的方式调整类别平衡(给具体类别添加权重等方式),保证类别的平衡性能够提高在验证数据集中的结果。

关键点与创新点

  • 对经典网络的改编——卷积替换全连接
  • 前后特征图的补偿——跳跃连接
  • 对特征图尺寸的恢复——反卷积

改进点

  • 尺寸恢复
  • 类别平衡
  • 数据预处理
  • 资源利用

你可能感兴趣的:(深度学习笔记,深度学习)