来自CVPR2020的论文《The Edge of Depth: Explicit Constraints between Segmentation and Depth》。深度边缘质量较差是基于CNN的深度估计模型的通病,本文旨在解决这一问题。核心的出发点是显式地利用语义分割的边缘(预训练)指导深度边缘,因为通常语义分割任务的边缘比深度估计任务的边缘要好;此外,由于本文深度估计采用的策略也是利用双目投影损失的无监督训练策略,还设计了遮挡掩模,用来解决深度图在深度边缘出的流血效应。
语义指导的深度边缘
![ff76c1993d74d40d80e7e4faefcb7c67.png](https://img-blog.csdnimg.cn/img_convert/ff76c1993d74d40d80e7e4faefcb7c67.png)
如图,语义任务的边缘(红色)通常好于深度任务的边缘(蓝色)。因此,我们希望深度估计的边缘p能和语义分割的边缘q对齐。然而,直接以q、p之间的距离作为损失使其最小是无法进行梯度反传的。为此,本文利用一种可微的变形(Morph)操作,使得深度边缘能向语义边缘靠近(p到q),并约束变形后的深度图要和变形前的深度图一致(图中lg),进行训练。
首先定义语义边缘与深度边缘。对于语义分割输出图,每个类别是同一个值,我们只要检测到类别值变化,便可确定语义边缘。对于深度估计,输出是连续的值,我们需要求梯度之后设置某一阈值,变化高于阈值认为是边缘。考虑深度估计任务的前景边缘更重要,前景又通常深度小,本文采用视差的边缘。深度边缘点集定义为
![be0ad8e3ae6a11b9ad0726f890a2c580.png](https://img-blog.csdnimg.cn/img_convert/be0ad8e3ae6a11b9ad0726f890a2c580.png)
对于任意一个语义边缘点q∈Ts,它到深度边缘的距离为到所有深度边缘点距离中的最小值。
![73ef93b909d25e5774255f1b9fbc9c01.png](https://img-blog.csdnimg.cn/img_convert/73ef93b909d25e5774255f1b9fbc9c01.png)
现在相当于为每个语义边缘点找了一个和它匹配的深度边缘点,有了一个距离。但我们希望这个距离不要太大,距离太大说明可能其中一方的边缘受到了噪声影响。
![04bbc78ea53ea244d793f3124689d1cf.png](https://img-blog.csdnimg.cn/img_convert/04bbc78ea53ea244d793f3124689d1cf.png)
上式便确定了有效的语义边缘点,同时,我们知道这些点对应的深度边缘点和没对点之间的距离。我们希望这些距离尽量小,便实现了语义边缘和深度边缘的一致,即优化
![81287dc87f71cf73a0990621f815b786.png](https://img-blog.csdnimg.cn/img_convert/81287dc87f71cf73a0990621f815b786.png)
但是由于存在离散,不能通过梯度反传的方式优化上式。于是,便有了本文的策略:可微的变形操作+约束变形后的深度图与变形前一致。
变形:对于深度图中任意一点x,根据一对匹配边缘点对pq,对x变形操作为
![93fa0a63505436d6fbb7aa0eb0982e08.png](https://img-blog.csdnimg.cn/img_convert/93fa0a63505436d6fbb7aa0eb0982e08.png)
![725af9f0807482778175d6976f62ff44.png](https://img-blog.csdnimg.cn/img_convert/725af9f0807482778175d6976f62ff44.png)
t为一超参数。直观的解释就是某一点沿着qp向量的方向移动了一些。图示:
![c161e73b0699e12d3b570201aab478df.png](https://img-blog.csdnimg.cn/img_convert/c161e73b0699e12d3b570201aab478df.png)
应用时,变形后深度图的某一点的值等于把该点morph之后(沿着qp的方向移动一些)的位置在原深度图中的深度值。以图(a)为例,下面是morph之后的图,得到qp中间的一个点的值时,将该点morph了一下(沿着qp的方向移动一些),找到了上面图中的“A”,便把它的值写到了这里。这样,本来处在深度边缘处的“A”就向语义边缘靠近了很多。
由于存在许多匹配的深度边缘与语义边缘的点对,每一个点都可以基于所有匹配点对做一次变形。为了得到更鲁棒的结果,对这些所有变形的结果表示为到匹配点对距离的加权,同时,距离太远的匹配点对便不考虑它们的影响。
作者也在补充材料证明,这样的变形操作等价于让局部lc最小,就是前面无法进行梯度反传的边界一致性损失。因此,通过这种操作,就等于优化了边界一致性。
双目遮挡掩模
![b3d7133edce40ae2d112781a689207f8.png](https://img-blog.csdnimg.cn/img_convert/b3d7133edce40ae2d112781a689207f8.png)
利用双目投影损失导致的流血效应:图(a)中,前景的深度预测明显比前景大得多,有一点扩散的感觉,所以称为流血效应。原因:本来左图中的b点属于背景,视差较小,但由于在右图中被前景遮挡,匹配到了右图中的背景点a+处,导致匹配的视差比应该的视差大很多。最终,视差大的前景的范围也比应有的要打。为此,计算遮挡掩模:
![a5777310e8648e6becc9d42656e833f0.png](https://img-blog.csdnimg.cn/img_convert/a5777310e8648e6becc9d42656e833f0.png)
如果左图中某个点右方一定距离的点高于该点灰度值一定阈值,就认为被遮挡,式中的i类似于加权。有点检测水平方向边缘的感觉,因此这个遮挡掩模也是为了更好的深度边缘。
损失函数
无监督双目投影损失:
![d76e2269961b3acc388fe7343d0df700.png](https://img-blog.csdnimg.cn/img_convert/d76e2269961b3acc388fe7343d0df700.png)
变形操作之后的深度图应与变形之前的深度图一致:
![f5e7d103bc813ac81c319094050793aa.png](https://img-blog.csdnimg.cn/img_convert/f5e7d103bc813ac81c319094050793aa.png)
w是一个加权的函数:
![0daa224686ba73e4e68e43068ac13a06.png](https://img-blog.csdnimg.cn/img_convert/0daa224686ba73e4e68e43068ac13a06.png)
如果morph之后投影损失增大,就不进行深度一致的约束了。大概的理解就是,morph发生在了我们需要的地方,这些地方深度值是错的,我们便不要求这里与morph之前深度值相同。这些地方可能投影损失小,但实际上深度值是错的。另外还通过一个方差加权,因为这里的一致性主要针对边缘,不希望这项损失影响到非边缘(方差小)的区域。
另外,由于语义也是由模型预测的,会存在噪声,这些噪声也会被检测为语义边缘。利用SGM算法得到视差伪标签监督,也是为了减弱语义噪声的影响。
![24a212bb70038753576740e6b3970fb4.png](https://img-blog.csdnimg.cn/img_convert/24a212bb70038753576740e6b3970fb4.png)
最后,调优损失:要求利用BN的预测和不利用BN的预测一致。
实验
![1026442ea254a6351a1ff5aa5e26629c.png](https://img-blog.csdnimg.cn/img_convert/1026442ea254a6351a1ff5aa5e26629c.png)
分别为本文方法与其他方法的对比,和本文自己的消融实验,边缘确实有所改善。此外,实验部分还有一些定量地对边缘质量的评估。