《Enforcing geometric constraints of virtual normal for depth prediction》论文笔记

参考代码:VNL_Monocular_Depth_Prediction

1. 概述

介绍:这篇文章为深度估计提供了一种新的损失函数形式,在深度估计任务中常见的损失函数多以pixel-wise监督的形式出现,因此这些监督损失函数都是利用像素层面的浅层信息进行监督约束的。这样的浅层次深度信息学习自然不能很好学习到GT深度中的一些细节与结构差异信息,因而这篇文章提出将预测深度通过预先假定的相机内参映射到同一模拟空间尺度(3D空间)上进行比较。这里的比较是通过在模拟空间上进行采样,每个采样包含3个点,并通过文章设定的2个采样准则排除无效采样,从而构建预测深度与GT深度的约束。正因为文章的方法是在3D空间进行采样这样使得文章的方法得到的深度更加符合GT在3D空间的分布,也使得深度更加准确。

将GT、文章方法预测深度、其它方法预测深度在点云和surface normal维度进行比较,见下图:

可以看到在surface normal和深度表现差异不是很大的情况下,点云的分布差异更大,因而在点云对应的3D空间进行约束能够得到更加准确的深度。

2. 方法设计

2.1 整体pipeline

这里使用的网络是编解码网络构建的深度预测网络,主要的改进点便是其使用文章中提出的virtual mormal损失函数(也就是在3D空间上建立约束),如下图所示:
《Enforcing geometric constraints of virtual normal for depth prediction》论文笔记_第1张图片
在文章《DiverseDepth: Affine-invariant Depth Prediction Using Diverse Data
》中对深度回归所使用到的损失函数进行了梳理,将其大致分为如下3个类别,而文章的方法virtual normal与surface normal共同属于affine-invariant的,见引用论文中的表2:
《Enforcing geometric constraints of virtual normal for depth prediction》论文笔记_第2张图片
这篇文章也将virtual normal与surface normal进行了比较,其指出surface normal的值与local size是存在较大关联的,而且受其影响很大,导致local size的选择会给网络训练带来较大不稳定因素。反观virtual normal使用的3D空间上采样的形式进行约束,其会更加鲁棒和稳定一些。
《Enforcing geometric constraints of virtual normal for depth prediction》论文笔记_第3张图片

2.2 virtual normal损失

virtual normal损失是在3D空间上通过采样的方式选择满足文章条件的点,并且构建对应向量空间,并比较向量空间上的差异,其实现可以参考文章代码:VNL_loss.py。

这里假设焦距为 f x , f y f_x,f_y fx,fy,当前像素点与深度值分别为 ( u i , v i ) , d i (u_i,v_i),d_i (ui,vi),di,当前图像的中心点 ( u 0 , v 0 ) (u_0,v_0) (u0,v0),则可以将图像坐标映射到相机坐标下:
z i = d i ;   x i = d i ⋅ ( u i − u 0 ) f x ;   y i = d i ( v i − v 0 ) f y z_i=d_i;\ x_i=\frac{d_i\cdot(u_i-u_0)}{f_x};\ y_i=\frac{d_i(v_i-v_0)}{f_y} zi=di; xi=fxdi(uiu0); yi=fydi(viv0)
对于3D空间上的采样点集合 s = { ( P A , P B , P C ) o ∣ i = 0 , … , N } \mathcal{s}=\{(P_A,P_B,P_C)_o|i=0,\dots,N\}

你可能感兴趣的:(#,Depth,Estimation,深度学习,计算机视觉,人工智能)