1. 论文简介

论文题目:P3Depth: Monocular Depth Estimation with a Piecewise Planarity Prior

Paper地址:paper

Code地址:Github

Paper简单评论:个人觉得是2022 CVPR上depth estimation最优阅读价值的论文,它不同于之前的所有论文:1. 将几何先验用深度神经网络表达出来;2.算是开创了几何的新用法;3.共面这个特性到是不属于新东西,但作者想法奇妙。

2. 摘要

3D场景中含有高度规律(high regularity),作者就想着是否可以利用这种规律来提升深度估计。

特别地,我们引入了分段平面先验,即对于每个像素,都有一个与前者共享相同平面3D曲面的种子像素;

在此基础上,我们设计了一个具有两个head的网络。

第一个head输出像素级平面系数,而第二个head输出密集偏移向量场,用于识别种子像素的位置。

然后利用种子像素的平面系数来预测每个位置的深度。

由此产生的预测自适应地与来自第一个头部的初始预测相融合,通过学习置信度来解释精确局部平面度的潜在偏差。

由于所提出模块的可微分性,整个体系结构是端到端训练的,它学习预测规则深度映射,在咬合边界处具有锐利的边缘。

3. 引言

大多数监督方法使用像素级损失,分别处理不同像素的预测。这种机制忽略了真实世界3D场景的高度规律性,这通常会产生分段平滑的深度图。

建模真实3D场景的几何先验知识的一个常见选择是平面。

平面是局部可微深度映射的局部一阶泰勒近似,它们很容易用三个独立系数参数化。

一旦一个像素与一个平面相关联,它的深度可以从像素的位置和相关平面的系数中恢复。在[83]中,这样的平面系数表示被用来学习显式地预测平面。

我们采用了[83]中的平面表示,但我们脱离了平面的显式预测,而是使用这种表示作为适当的输出空间,用于定义基于平面先验的像素之间的相互作用。

特别是,我们的网络的第一个头部输出密集 平面系数图,再转换为深度图,如图2所示。预测平面系数的动机是,两个像素p和q属于同一个平面,理想情况下具有相等的平面系数表示,而它们通常具有不同的深度。

因此,使用q的平面系数表示来预测p位置的深度,如果像素属于同一平面,则可以正确预测。

我们通过学习识别与被检查像素共享同一平面的种子像素来利用这一性质,只要这些像素存在,就可以选择性地使用这些像素的平面系数来改善预测深度。

这种方法是由分段平面先验驱动的,它表明对于每个具有相关3D平面的像素p,在p的邻域中有一个与p关联的种子像素q。要用这种方案预测深度,我们需要通过预测偏移量q−p来识别(i)先验有效的区域和(ii)这些区域中的种子像素。

 因此,我们在网络中设计了第二个头部,它输出一个密集偏移向量场和一个置信度图,如图2所示。预测偏移量用于从第一个头部重新采样平面系数,并生成第二个深度预测。
然后使用置信度图作为融合权重自适应地融合来自两个头部的深度预测,以降低基于偏移的预测的权重,并主要依赖于在分段平面先验无效的区域的基本深度预测,例如在具有高频结构的场景的部分。

通过对融合深度预测的监督,隐式地应用了偏移量和置信图的监督。由于使用种子像素进行预测,我们的模型隐式地学习根据像素在深度图平滑区域中的隶属度对像素进行分组。这有助于保存尖锐的深度不连续,如图1所示。

最后但并非最不重要的是,我们提出了平均平面损失,它加强了我们预测的3D表面与地面真相的一阶一致性,并进一步提高了性能。

4 相关工作

Supervised monocular depth estimation

假设地面真实深度图可用于训练图像,并需要对单个图像进行推断。一个著名的早期方法是Make3D[59],它在场景中显式手工制作一个分段平面结构,并使用马尔可夫随机场在局部学习相关参数。

[9]的多尺度网络通过学习从图像到深度图的端到端映射,开创了深度cnn在深度估计中的使用。后来有几项工作专注于这一设置,提出了i.a

(i)更高级的架构,如残差网络[32],卷积神经场[43,73],频域多尺度融合[34],基于变压器的块,参与全局深度统计[1]和深度合并网络处理多分辨率[50],

(ii)更适合深度预测的损失,如反向Huber损失[32]、分类损失[3]、有序回归损失[12]、两两排序损失[71]和几种深度相关损失[35]的自适应组合,以及

(iii)深度与法线或语义标签的联合学习[8,53,72]。[78]通过将3D点云编码器应用于提升的深度图,解决了混合数据设置中深度偏移和焦距刻度的模糊性。

我们的方法属于这一类,它将深度预测投射到更合适的空间,以挖掘输入场景的规律。

Other depth estimation setups

包括无监督和半监督单目深度估计,以及基于立体的深度估计。在[16]中引入了基于新型视图合成[10]的立体对深度无监督学习,该合成使用了一种图像重建损失,其中预测的深度用于将对中的一幅图像扭曲到另一幅图像的框架中,并在[18]中以完全可微的公式进行了转换。

这一方向的进一步研究利用了时间信息[47,52,82]。在该框架中对立体对的需求在[85]中得到了提升,它适用于单目视频。在[27,40,48]中强制了估计的3D结构和跨视频帧的自我运动的一致性。

深度和自我运动在[26,79]中结合了光流和语义,在[76]中结合了边缘。在[19]中实现了跨视频帧遮挡的鲁棒性,并具有最小的重投影损失。在[20,61]中,专门的损失促进了优化。

最近的方法利用了测试时的视频输入[69]、分割输出的一致性[86]以及相邻帧之间的缩放一致性[67]。无监督方法通常假设比有监督方法更复杂的训练数据,并且存在规模模糊和违反兰伯假设。在[29]中引入了半监督深度估计,它将稀疏深度测量与图像重建损失相结合。

在[39]中,对存在的特定于数据集的假设和深度监测格式的特定数据集假设也有所放宽,它利用多视图图像收集来生成可靠的大规模深度监测,而在[56]中,利用不同的数据集为单目深度估计提供不同形式的监督,以更好地泛化未见数据。早期的立体声方法依赖于手工制作的匹配成本[22]来估计视差。最初学习匹配函数的方法包括[30,65],而后续的工作依赖于全卷积架构[5,49]。在训练和测试中,立体方法也以立体对的形式假设更复杂的数据,这阻止了它们应用于更一般和不受控制的单目设置。

Geometric priors for depth

在文献中被广泛研究过。特别是在多视图立体[14]和三维重建中,传统上采用分段平面先验[2,6],以使这些问题能够更快地优化。这些方法涉及显式深度平面,并将这些平面拟合到图像超像素或输入点云的点集上。

超像素级深度平面也用于深度去噪和补全[58,66]。在最近的基于深度学习的方法中,几何先验的合并要么通过分割平面显式执行[36,41,42,81],要么通过适当设计损失隐式执行[80]。

在[77]的虚拟法线框架中利用非局部3D上下文,使用来自虚拟平面的监督,这些虚拟平面对应于深度图的非共线点的三元组。在[23]网络中通过深度注意体积嵌入非局部共面性约束。

在[46]中使用表面法线来增加规则结构的几何一致性。[74,83]中使用了一种与图像空间中3D平面系数直接相关的表示,而不依赖于相机的内在参数,用于估计场景中的主导深度平面。

[33]采用同样的平面系数表示法指导深度网络解码器部分的上采样模块,达到了最先进的性能。

我们也将这种表示法用于平面系数,但与[74,83]相反,我们学习它时不需要对平面进行注释。相反,我们优化平面系数和空间偏移向量,以学习识别共面像素,并使用这种共面性来预测深度。

虽然偏移向量在[54]中也用于仅通过重新采样预测的后处理深度,但我们将偏移向量合并到单个端到端架构中,并通过与偏移指向的种子像素相关联的平面插值生成预测。

我们的方法松散地受到[51]的启发,它训练偏移向量来从带注释的图像中识别实例分割中心,而我们专注于深度预测,并在没有监督的情况下对平面实例进行操作

P3Depth: Monocular Depth Estimation with a Piecewise Planarity Prior的更多相关文章

  1. 泡泡一分钟:Towards real-time unsupervised monocular depth estimation on CPU

    Towards real-time unsupervised monocular depth estimation on CPU Matteo Poggi , Filippo Aleotti , Fa ...

  2. 利用光场进行深度图估计(Depth Estimation)算法之一——聚焦算法

    前面几篇博客主要说了光场相机,光场相机由于能够记录相机内部整个光场,可以实现重聚焦(模糊线索)和不同视角的变换(视差线索),同时也可以利用这个特性进行深度估计(Depth Estimation). 先 ...

  3. deep learning+ Depth Estimation

    Depth estimation/stereo matching/optical flow @CVPR 2017 Unsupervised Learning of Depth and Ego-Moti ...

  4. 【HEVC帧间预测论文】P1.9 Coding Tree Depth Estimation for Complexity Reduction of HEVC

    Coding Tree Depth Estimation for Complexity Reduction of HEVC <HEVC标准介绍.HEVC帧间预测论文笔记>系列博客,目录见: ...

  5. 利用光场进行深度图估计(Depth Estimation)算法之二——匹配算法

    光场相机由于能够捕获相机内部光线的强度和方向而得到整个光场,可以实现重聚焦(refocus)和视角变换等功能.进而可以进行深度估计获取深度图,前面说过利用重聚焦的图像进行深度估计,今天说一下利用不同视 ...

  6. 2016CVPR论文集

    http://www.cv-foundation.org/openaccess/CVPR2016.py ORAL SESSION Image Captioning and Question Answe ...

  7. CVPR2016 Paper list

    CVPR2016 Paper list ORAL SESSIONImage Captioning and Question Answering Monday, June 27th, 9:00AM - ...

  8. 深度学习结合SLAM研究总结

    博客转载自:https://blog.csdn.net/u010821666/article/details/78793225 原文标题:深度学习结合SLAM的研究思路/成果整理之 1. 深度学习跟S ...

  9. Generative Adversarial Nets[CycleGAN]

    本文来自<Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks>,时间线为2017 ...

  10. (转)Awsome Domain-Adaptation

    Awsome Domain-Adaptation 2018-08-06 19:27:54 This blog is copied from: https://github.com/zhaoxin94/ ...

随机推荐

  1. 路径分析—PostgreSQL+GeoServer+Openlayers(二)

    路径分析-QGIS+PostgreSQL+PostGIS+pgRouting(一) 路径分析-PostgreSQL+GeoServer+Openlayers(二) 前言 上一篇文章中实现数据库层面的路 ...

  2. 检测 MySQL 服务是否存活 shell脚本

    #!/bin/bash # 检测 MySQL 服务是否存活 # host 为你需要检测的 MySQL 主机的 IP 地址,user 为 MySQL 账户名,passwd 为密码 # 这些信息需要根据实 ...

  3. 齐博x1云市场注意事项

    安装云市场应用注意事项 大到频道,小到插件甚至钩子及风格都可以在线安装,在线升级. 但是有一个大家务必注意的地方,就是重装系统后,再安装有可能导致重复收费. 这个问题是可以解决的.当然如果不是重装系统 ...

  4. 盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!

    摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测.车距计算等基本功能,作为辅助驾驶入门级 ...

  5. 第一阶段:linux运维基础·2

    1. 找到当前目录下所有的.txt文件,且将查询结果写入到allfile.txt中 find . -type f -name '*.txt' > allfile.txt 2. 解读如下语句 -r ...

  6. 图文详解丨iOS App上架全流程及审核避坑指南

    App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都"死"在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流 ...

  7. PMM实现监控Mysql-MGR

    一.docker安装PMM服务端 1.安装yum配置单元 # 如果已安装,略过此步 yum install -y yum-utils #yum配置单元 2.配置docker阿里云yum源 #配置doc ...

  8. 手记系列之二 ----- 关于IDEA的一些使用方法经验

    前言 本篇文章主要介绍的关于本人在使用IDEA的一些使用方法,一些常用设置,一些插件推荐和使用.请注意,本文特长,2w多字加上几十张图片,建议收藏观看~ 前提准备 idea官网: https://ww ...

  9. Datatable 数据源

    数据源类型 Datatable可以使用三种基本的JavaScript数据类型作为数据源 数组(Arrays[]) 对象(objects{}) 实例(new myclass()) 目前使用过的为前两种, ...

  10. TASK 总结

    信相连知识 1.python操作EXCEL 库:xlwings. 基本操作:打开.读写.关闭. 2.python操作问题库 库:JIRA 基本操作:提交问题 3.网页信息在网址不变时的获取 库:req ...