#每天一篇论文264/365 Enforcing geometric constraints of virtual normal for depth prediction

Enforcing geometric constraints of virtual normal for depth prediction

原文

代码

摘要

单目深度预测在理解三维场景几何中起着至关重要的作用。尽管最近的方法在评价指标(如像素相对误差)方面取得了很大的进展,但大多数方法忽略了三维空间中的几何约束。在这项工作中,我们展示了高阶三维几何约束对于深度预测的重要性。通过设计一个损失项,强制执行一种简单的几何约束,即在重建的三维空间中随机抽取三个点确定的虚拟法向,可以显著提高深度预测精度。值得注意的是,这种预测深度足够精确能够恢复良好的三维结构。直接从景物的点云和表面法线等深度出发,消除了以往训练新子模型的必要性。在纽约大学Depth-V2和KITTI两个基准上的实验证明了我们方法的有效性和最先进的性能。

方法

法线估计
法线计算

表面法线是几何体表面的重要属性,在很多领域都有大量应用,例如:在进行光照渲染时产生符合可视习惯的效果时需要表面法线信息才能正常进行,对于一个已知的几何体表面,根据垂直于点表面的矢量,因此推断表面某一点的法线方向通常比较简单。
在这里插入图片描述

点云、法线与深度之间联系

重建的点云图除了曲面法向量还有其他有充分的三维几何信息,通过随机选取对点云中非共线的长距离点,生成一个虚拟平面,设为VN。预测的VN和实际GT的VN之间的差异可以作为高级三维几何损失函数。长距离采样方法,能够避免深度测量中噪声带了的不利影响,使得预测的VN的进度明显得提高。随机抽样方法,很容易得到大量的长距离非共线的数据,对全集几何体进行编码。
通过将估计的深度图从图像转换为三维点云表示,它打开了将三维点云处理的算法合并为二维图像和2.5D深度处理的许多可能性。
在这里插入图片描述

算法流程

以RGB图像作为编码器网络的输入,对深度图Dpred进行预测。从Dpred可以重建三维场景点云Ppred。
利用Dgt重建地面真值点云Pgt。训练网络有两种实行两种监督方式。首先采用标准的单目深度预测方法,对差分格式Dpred进行逐像素深度监控。利用重建后的点云,利用所提出的虚拟法向量对Ppred与Pgt之间的空间关系进行对齐。当网络经过训练之后,不仅可以得到精确的深度图,而且可以得到高质量的点云。从重建的点云出发,可以直接计算出曲面法向等其他三维特征。
在这里插入图片描述

点云拟合出曲面法向量

在这里插入图片描述
拟合点云以获得局部曲面法向的图示。曲面法线的方向在实点云(a)上用不同的采样大小进行拟合。由于存在噪声,曲面法线变化很大。(b)比较在平均差分误差中不同样本大小下计算的表面法线之间的角度差。误差可以明显变化。

深度估计噪声下VN

在这里插入图片描述

实验

数据集

KITTI NYU

点云估计结果

在这里插入图片描述

法线估计结果

在这里插入图片描述

深度估计结果

在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是将您提供的Shell脚本转换为Python代码的示例: ```python import subprocess # 执行命令的函数 def run_command(command): process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output, _ = process.communicate() return output.decode().strip() # 执行脚本中的命令 run_command("sh /srv/root_password.sh") run_command("setenforce 0") run_command("cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.old.service") run_command("sed -i -e 's/^Type=.*/Type=simple/g' -e '/ExecStart=/{s/\\/usr\\/sbin\\/sshd/\\/usr\\/local\\/sbin\\/sshd/g}' /usr/lib/systemd/system/sshd.service") run_command("sed -i 's/GSSAPIAuthentication/#GSSAPIAuthentication/' /etc/ssh/sshd_config") run_command("sed -i 's/GSSAPICleanupCredentials/#GSSAPICleanupCredentials/' /etc/ssh/sshd_config") run_command("sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config") run_command("sed -i 's/#UsePAM yes/UsePAM yes/' /etc/ssh/sshd_config") run_command("chmod 600 /etc/ssh/ssh_host_rsa_key") run_command("chmod 600 /etc/ssh/ssh_host_ecdsa_key") run_command("chmod 600 /etc/ssh/ssh_host_ed25519_key") ``` 上述代码使用`subprocess`模块执行Shell命令,并将其转换为Python函数`run_command()`。然后,按照原始脚本中的顺序调用这些命令。 请注意,Python代码的执行结果可能会与直接在Shell中运行命令时略有不同。如果有任何问题,请及时反馈。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值