利用语意关联和关注驱动损失函数进行单目深度估计

这是一个临时材料,整理后的内容在这里

这篇文章把深度估计和语义分割联系起来。之前有些工作把深度用于语义分割,大都使用RGBD数据集,本文则使用单张静态图像。

长尾分布:

作者发现像素个数在像素深度和语义标签上呈现长尾分布,如下图1。深度值呈现长尾分布主要由获取深度时的透视效应(the perspective-effect during the depth acquisition process)造成。把所有区域等同看待的损失函数更多地受深度值较小的区域影响,而对深度值较大的区域(长长的尾部)不敏感。忽略这个分布会影响模型精确度,尤其在深度值较大的区域(长长的尾部)。
 图1

为了应对以上两个挑战(长尾分布、深度估计和语义标注共享信息),作者设计的网络同时估计一个静态图像的深度和语义标签。

创新工作:

  1. 深入研究深度值较大的区域,提出关注驱动(attention-driven)的损失作为监督:这样的损失缓解数据偏差问题(大部分像素深度值较小)使模型"看"得更深。
  2. 为了更好地利用语义信息,提出一个协同网络自动学习两个任务(深度估计和语义标注)之间的信息共享策略,信息在网络内和网络间传递:语义标签有助于深度估计(如果天空是远的,墙是竖直的),深度估计也有助于语义标注(尤其是外观相似的不同物体)。在协同网络架构中提出一个信息传播策略,用一个动态路由方法把语义整合到深度估计中,该策略由一个横向共享单元和一个半稠密上跳跃(skip-up)连接实现。

深度感知目标函数:

  1. 关注驱动损失:L_{DA}=\frac{1}{N}\sum_{i=1}^{N}(\alpha _{D}+\lambda _{D})\cdot l \left ( d_{i},d_{i}^{GT}\right )。其中i是像素索引,N是深度图像素数量,d_{i}d_{i}^{GT}分别是预测的深度值和实际的深度值,l\left ( \cdot \right )是距离度量如l_{1}l_{2}范式等,\alpha _{D}是一个深度感知关注项(depth-aware attention term)使网络更关注深度值较大的区域。这样,反向传播时梯度更偏重少数远距离区域。因此\alpha _{D}和深度相关,可以定义为真实深度值的一个线性函数。
  2. 为了避免训练刚开始时出现梯度消失,学习近距离区域时出现中断,引入正则化项\lambda _{D}=1-\frac{min\left ( log\left ( d_{i} \right ) , log\left ( d_{i}^{GT} \right )\right )}{max\left ( log\left ( d_{i} \right ) , log\left ( d_{i}^{GT} \right ) \right )}描述训练过程中的学习状态。如果网络预测的深度值接近实际值,\lambda _{D}接近0,否则接近1。这样,即使对近距离区域(\alpha _{D}接近0),梯度仍然能通过原始l损失函数反向传播。\lambda _{D}增加了训练稳定性。总之,L_{DA}使网络关注近距离区域的同时,还使网络更关注远距离区域。

网络架构:

协同网络是一个多任务DCNN,主要包含4部分:深度预测子网络、语义标注子网络、知识共享单元/连接、关注驱动损失,如下图2。一个主干(backbone)编码器(如VGG、ResNet)把输入的RGB图像从颜色空间转换到高维特征空间,得到的高维特征空间分别被两个子网络用于重建深度和语义标签。两个任务间的知识共享通过横向共享单元(LSU)实现,LSU在训练阶段自动学习传播流,在测试时形成一个最佳结构。此外,知识共享还以半稠密向上跳跃连接(SUC)的形式存在于每个子网络内部。最终整个网络被基于深度和关注的损失监督。

图2

横向共享单元LSU:

在协同网络中,提出一个双向横向共享单元(LSU)以一个动态路由的方式学习共享策略。信息传递通过正向传递和反向传播实现。每隔两个反卷积层,添加LSU共享另一个任务的残差知识/表示。不同于手工调优的结构,LSU能够从任务间层和任务内层获得额外细微的共享信息。LSU的结构如图3左部,它在两个任务中提供全分享(fully-sharing)路由。假设当前的反卷积层产生的特征图是D1S1,分享的特征表示可以表示为:\left\{\begin{matrix} LSU_{D2}=D1+\left ( \varphi _{D} \cdot D1 + \varphi _{S}\cdot S1\right ) \\ LSU_{S2}=S1+\left ( \gamma _{D} \cdot D1 + \gamma _{S}\cdot S1\right ) \end{matrix}\right.,其中\varphi _{D}\gamma _{D}是特征图D1的权重参数,\varphi _{S}\gamma _{S}是特征图S1的权重参数。共享表示LSU_{D2}LSU_{S2}传播到下层反卷积层。所有的参数都是学习来的。虽然所有LSU有相同的内部结构,但它们有各自的参数,这样可以更灵活地共享。

图3

还加入了恒等映射保证任务内的信息传播,避免传播中断或特征污染。这种类残差结构(恒等连接+残差共享)有利于梯度反向传播。图4说明了LSU的效果。

半稠密向上跳跃连接SUC:

SUC在解码器中进行上采样和跳跃连接。过程中的我们用h代替作者的那个上部带'/'的h符号。

作者提出的网络框架在编码器后分为深度估计、语义标注两路,称为两个任务。在任务内添加SUC是为了任务内(相对于任务间)的知识共享和保存长期记忆(前一层反卷积层传过来的反卷积结果称为短期记忆)。这其实就是跳跃连接。SUC可以表示为:f_{out}=h\left ( f_{in} \right ) +\sum_{i=1}^{n} h\left ( f_{i} \right ),其中f_{in}f_{out}分别是解码器的输入输出,f_{i}是第i层反卷积的输出,如图3,作者的实验中n=4h是一个上采样操作,和其他跳跃连接一样,如果不用上采样,特征图尺寸不同,不能合并(如tf.concat)。

其它损失项:

  1. 梯度损失:L_{g}\left ( d,d^{GT} \right )=\frac{1}{N}\sum_{i=1}^{N}\left | \bigtriangledown _{h}d_{i}-\bigtriangledown _{h}d_{i}^{GT} \right |+\left | \bigtriangledown _{v}d_{i}-\bigtriangledown _{v}d_{i}^{GT} \right |,核(两个带绝对值符号的项)来自Sobel特征检测器,\bigtriangledown _{h}\bigtriangledown _{v}分别代表水平方向和竖直方向。语义信息L_{g}\left ( d,s \right )也考虑进来。所以总的梯度损失是:L_{JG}=L_{g}\left ( d,d^{GT} \right )+L_{g}\left ( d,s \right )
  2. 语义焦点损失:焦点损失起源于目标检测。为了让网络更关注长尾,使用损失项L_{semF}\left ( l,l^{GT} \right )=-\frac{1}{N}\sum_{i=1}^{N}\sum_{k=1}^{K} l_{i,k}^{GT}\alpha _{k}\left ( 1-l_{i,k} \right )^{\gamma } log\left ( l_{i,k} \right ),其中l_{i}是像素i的预测标签,k是类别索引。\alpha _{k}\gamma是调节关注的平衡权重和焦点参数。

总的关注损失:L_{attention}=L_{DA}+L_{JG}+L_{semF}

关注可视化:

使用空间关注图表示网络的关注部分。如图5。

图5

猜你喜欢

转载自blog.csdn.net/qq_26697045/article/details/85016180
今日推荐