实时语义分割学习笔记02 FFRN


简述:提出了一种类似于 ResNet 的新型架构,这种架构具有很强的定位和识别性能。通过在网络中使用两个处理流,将多尺度上下文与像素级精度相结合: 其中一个分支,以全图像分辨率传输信息,从而实现精确的分段边界。另外的分支,经过一系列池化操作以获得用于识别的鲁棒特征。两个流使用残差在全图像分辨率下耦合。
wwei 模型框架

一、提出的问题:

   依赖分类网络预训练基础上完成的分割网络,能够看到有识别性能优异,但是定位精度较差(擅长识别场景中的元素,但不擅长将它们定位到像素精度。)

   解决:提出类似 ResNet 的架构,执行额外的处理步骤,以便在全图像分辨率下获得像素级别精度的分割掩模。

二、相关工作:

1、早期工作的参考和改进

a. Long等人引入全卷积网络(FCN),修改VGG网络使得可以使用预训练模型,为了提高对象边界的分割性能,添加了跳跃连接,允许信息直接从早期的高分辨率层传播到更深的层。

b. FCN中通过使出操作来增加感受野的大小,同时也是带来了分辨率降低的问题,从而致使边界细节信息丢失。作者提出跳跃连接从中间层提取特征。

c. Noh 等人提出一种编码器解码器架构,通过一系列池化和卷积运算来计算低维特征表示。解码器堆叠在编码器之上,然后通过后续的反池化和反卷积操作重建高维特征。作者则采用单独的数据流来实现高维特征的保持。

d . 为了保持更一致的输出预测结果,采用了平滑操作。包括了条件随机场(CRF)、包括域变换 和基于超像素的平滑等方法。

三、论文模型搭建

   从AlexNet 架构 在 ImageNet 大规模视觉分类挑战赛 (ILSVRC) 中取得成功以来,网络深度不断增加,首先使用流行的 VGG 网络。然后使用 GoogleNet [51] 进行批量归一化。后续的ResNet 架构等。

1、前馈神经网络

  以线性层序列的形式组成,每一层通过计算函数 F 来生成输出。输出 x n {x}_{n} xn计算公式如下,其中 W n {W}_{n} Wn是该层的参数:
x n = F ( x n − 1 ; W n ) x_n =F(x_ {n-1}; W_n) xn=F(xn1;Wn)

2、残差网络(ResNets)

   预计,网络深度不断增大有助于精度的提高,然而随着网络层不断的加深,模型的准确率先是不断的提高,达到最大值(准确率饱和),然后随着网络深度的继续增加,模型准确率毫无征兆的出现大幅度的降低。ResNet团队发现,甚至难以完成 y = x 的恒等变换,该现象命名为,退化现象。

   为了解决这个问题,提出了残差网络(ResNets)。由一系列残差单元(RUs)组成,其中输出 x n {x}_{n} xn 的计算方式为如下。这引入了连接”,允许信息绕过计算 F 的直接路径,有助于梯度流的改善。
x n = x n − 1 + F ( x n − 1 ; W n ) x_n =x_{n-1}+F(x_ {n-1}; W_n) xn=xn1+F(xn1;Wn)

在这里插入图片描述

3、全分辨率残差网络(FRRNs)

   1、FRRNs在ResNets的基础上提出,具有相似的训练特性但具有两个处理流。,其中一个流通过添加连续的残差计算特征,而另一个流通过卷积和池化操作直接计算特征。假设 z n z_ n zn 是残差输入, y n y_ n yn 是池化输入,而 z n − 1 z_{n-1} zn1 y n − 1 y_{n-1} yn1 分别是前一层的残差输入和池化输入

 a. 残差流的计算:
z n = z n − 1 + H ( y n − 1 ; z n − 1 ; W ​ n ) z _n=z _{n−1} +H(y _{n−1} ; z_{ n−1};W ​_n) zn=zn1+H(yn1;zn1;Wn)
  这里 H 是一个由参数 W n W_n Wn控制的函数,表示残差流的计算。它接收池化输入 y n − 1 y_{n−1} yn1和残差输入 z n − 1 z_{n−1} zn1

 b. 池化流的计算
y n = G ( y n − 1 ; z n − 1 ; W n ) y_n=G(y_{n−1};z_{n−1};W_n) yn=G(yn1;zn1;Wn)
  这里 G 是一个由参数 W n W_n Wn 控制的函数,表示池化流的计算。它接收池化输入 y n − 1 y_{n−1} yn1 和残差输入 z n − 1 z_{n−1} zn1

2、作者为什么上来先介绍前馈网络和残差网络呢?

  如果 G ≡ 0, 我们可以容易的将该网络理解为ResNet,同时,如果 H ≡ 0,我们则可以理解为前馈网络。

3、训练过程中类似于ResNet的相似

  递归过程中,对于深度为 m 的层(m>n,即深度大于 n) z m z_m zm 的表示式是通过对 H 计算得到,具体为:
z m = z n + ∑ i = n m − 1 H ( y i ; z i ; W i + 1 ) z_m = z_n + \sum_{i=n}^{m-1} H(y_i;z_i;W _{i+1}) zm=zn+i=nm1HyiziWi+1
  具体含义可以理解为 z m z_m zm表示深度为 m 的层的输出.这个输出由当前层的残差流 z n z_n zn 和前面层的池化流 H ( y i ; z i ; W i + 1 ) H(y_i;z_i;W _{i+1}) HyiziWi+1) 组成。

4、权重更新的梯度计算,通过链式法则,可以计算损失 l 对于参数 W n W_n Wn 的梯度,这里 ∂ l ∂ z n \frac{∂l}{∂z_n} znl ∂ l ∂ y n \frac{∂l}{∂yn} ynl分别表示损失对于残差流和池化流的梯度。
∂ l ∂ W n = ∂ l ∂ z n ∂ z n ∂ W n + ∂ l ∂ y n ∂ y n ∂ W n \frac{∂l}{∂W_n} =\frac{∂l}{∂z_n} \frac{∂z_n}{∂W_n}+\frac{∂l}{∂y_n} \frac{ ∂y_n}{∂W_n} Wnl=znlWnzn+ynlWnyn
= ∂ z n ∂ W n ( ∂ l ∂ z m + ∂ l ∂ z m ∑ i = n m − 1 ∂ h ( y i , z i , W i + 1 ) ∂ z n ) + ∂ l ∂ y n ∂ y n ∂ W n =\frac{∂z_n}{∂W_n} ( \frac{∂l}{∂z_m} + \frac{∂l}{∂z_m} \sum_{i=n}^{m-1} \frac{∂h(y_i, z_i, W_{i+1})}{∂z_n}) + \frac{∂l}{∂y_n} \frac{∂y_n}{∂W_n} =Wnzn(zml+zmli=nm1znh(yi,zi,Wi+1))+ynlWnyn

5.出于何种目的构建采残差网络

   根据以上的梯度函数的分析,其中权重更新取决于三个信息源:

   a. 第一部分中的两个内容 ∂ l ∂ y n ∂ y n ∂ W n \frac{∂l}{∂y_n} \frac{∂y_n}{∂W_n} ynlWnyn ∑ i = n m − 1 H ( y i ; z i ; W i + 1 ) \sum_{i=n}^{m-1} H(y_i;z_i;W _{i+1}) i=nm1HyiziWi+1,主要取决于深度你。

   a. 第二部分, ∂ l ∂ z m \frac{∂l}{∂z_m} zml 与深度无关

6.基于第五项内容,作者为残差函数 H 使用的所有参数实现了与深度无关的梯度流。

   如果使用其中一些权重来计算 G 的输出,则该单元的所有权重都会受益于改进的梯度流。通过重用 G 的输出来计算 H,最容易实现这一点。
z n = z n − 1 + H ( y n − 1 ; z n − 1 ; W ​ n ) − 残差流 z _n=z _{n−1} +H(y _{n−1} ; z_{ n−1};W ​_n) \qquad \qquad - 残差流 zn=zn1+H(yn1;zn1;Wn)残差流
y n = G ( y n − 1 ; z n − 1 ; W n ) − 池化流 y_n=G(y_{n−1};z_{n−1};W_n) \qquad \qquad \qquad \qquad - 池化流 yn=G(yn1;zn1;Wn)池化流
在这里插入图片描述
7. 上图的解释

  第一步是通过使用池化层连接两个输入流,以减小残差流的大小

四、 训练过程

   作者在训练过程中采用的一些关键步骤和技术。

1、交叉熵损失函数

   用了一种基于自举法(bootstrapped)的交叉熵损失函数来训练网络,损失函数通过对K个像素进行计算,选择那些被误分类或者以较小的概率预测正确标签的像素。损失的最小化使用了ADAM优化器。损失函数定义为:

l = − 1 K ∑ i = 1 N 1 [ p i , y i < t K ] l o g p i , y i l=−\frac{1}{K}\sum_{i=1}^{N} 1 [pi,yi<tK] logp_i, y_i l=K1i=1N1[pi,yi<tK]logpi,yi

   其中:c 是类别数;
   y 1 , … , y N y _1 ,…,y _N y1,,yN是像素 1,…,N 的目标类别标签;
   p i , j p_{i,j} pi,j​是第 i 个像素属于类别 j 的后验概率;
   1[x] 是示性函数,如果 x 为真则为1,否则为0;
   t K t _K tK是阈值,通过对预测的对数概率进行排序选择第 K+1 个确定。

2、全分辨率网络的训练内存限制

  通过手动在图中放置切点,将计算图划分为多个连续的块,并对每个块单独计算导数。在训练过程中,采用了一种简单的方案,即在每个块的(部分)前向传播中仅存储计算该块导数所需的特征图。这样的方式允许手动控制时空权衡,以缓解内存压力。

3、数据增强:

  为了减轻过拟合,采用了两种数据增强方法:平移增强和伽马增强。
a.平移增强随机平移图像及其注释,并通过反射填充图像和在注释上使用空标签的常数填充,以保持一致的图像尺寸。
b.伽马增强使用了略微修改的伽马增强方法。伽马增强的基本思想是通过调整图像中每个像素的亮度级别,从而影响图像的整体对比度。增加伽马值会使图像变暗,而减小伽马值则会使图像变亮。这种增强方法通常用于预处理图像,以提高图像的质量、对比度和可视性。

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值