P3Depth: Monocular Depth Estimation with a Piecewise Planarity Prior

面向可解释深度网络的单目深度估计

0 Abstract

  单目深度估计对于场景理解和后续任务至关重要,本文致力于改进监督方法,其中地面真值只在训练的时候使用。基于对真实3D场景高度规则性的了解,我们提出了一种学习有选择地利用共面像素信息来提升预测深度的方法。我们引入了一种分段平面性先验知识,即对于每个像素,有一个种子像素和前者共享相同的平面3D曲面。基于此,我们设计了一个两个头的网络。第一个投输出像素平面级系数,而第二个头输出密集偏移向量场,该向量场识别种子像素的位置,然后使用种子像素的平面稀疏来预测每个位置的深度,预测结果通过学习置信度自适应的和第一个头的初始预测进行融合,已解释与精准局部平面度的潜在偏差。所提方法可以实现预测规则的深度贴图,在遮挡边界处具有锋利的边缘。

1 Introduction

  深度估计是计算机视觉的一个基本问题。其被广泛用于机器人视觉和自动化驾驶骑车,有相关数据表明,深度信息是执行动作和语义分割最重要的视觉水平线索。监督单目深度最主要的问题是尺度模糊,因为相同图像的输入具有无限多3D场景的生成。
  目前解决这项任务的的趋势是使用完全卷积的神经网路哟啊来输出密集的深度预测,常用的方法有标准的监督深度和基于重建视图的自监督单目深度估计。目前大多数监督方法都是基于像素级的损失约束,这种方法忽略了3D世界的高度规则性,会生成分段平滑的深度贴图。
  对3D世界几何结构最常见的模型是采用平面描述,平面是局部可微深度图的局部一节泰勒近似,可以很容易的采用三个独立的系数进行参数化描述。一旦像素和平面相关联,改像素的深度可以从关联平面的系数中恢复,在一些方法中,这样的平面系数可以用来预测学习表示平面。
  本文采用了上述的平面表示方法,但本文并不是并不是用其来进行显式的平面预测,而是用该方法来作为基于平面性的先验知识,以定义像素之间的交互适当输出空间。本文网络的第一个头部用来输出密集的平面系数,然后将其转化为深度图。在理想情况下,属于同一平面上的两个像素点应该具有相同的平面系数和不同的深度。因此,如果p,q处以同一个平面,使用p的平面系数来预测q的深度应该是正确的结果。(呃。。。为什么不直接用q的平面系数来预测q的深度呢,只是单纯的为了增加约束吗)
  我们通过学习识别与检测像素共享同一平面的种子像素来利用这一特征。这种方法是由一种分段平面性先验知识来驱动的。对于关联3D平面的每一个像素p,在p的领域内存在一个种子像素q,像素q与像素p的平面相关。为了使用上述特性,我们需要预测p-q之间的便宜量来识别(1)先验知识有效的区域(2)区域内的种子像素。因此,我们设计了第二个网络头,用来输出密集向量偏移图和置信度图。预测的偏移用于对来自第一头部的平面系数进行重采样,并生成第二深度预测。然后,使用置信图来作为权重参数进行两个深度预测的融合权重,并主要依赖于分段平面性先验无效区域的基本深度预测。最后,我们提出了一个平均平面损失,用来加强我们预测的3D曲面和真实世界的一阶一致性。

2 Related work

  监督单目深度估计是假设地面真值可以用来训练,通过对单幅图像进行推理来预测深度信息。早期的方法是Mark3D,它在场景中手工绘制了一个分段平面结构,并使用马尔可夫随机场局部学习相关参数。Eigen提出的多尺度网络通过学习从图像到深度图的端到端映射,率先在深度图中使用cnn。目前的研究工作主要在一下几个方向。(1)更先进的网络结构,例如残差网络,卷积神经场、频域多尺度融合登。(2)更适合深度损失的约束,如反向Huber损失、分类损失、顺序回归损失、成对排序损失登。(3)使用法线和语义标签联合学习深度。我们的方法属于这一类,通过利用场景的规律性来讲深度信息投放到合适的位置。其他深度话估计包括无监督和半监督的深度估计以及基于立体的深度估计。(下面是一些方法的描述,此处略过)几何先验知识受到了广泛的关注,分段平面性先验知识传统上用于多视图立体和三维重建。这些方法设计显式深度平面,并将这些平面拟合到3D点云的超像素上。

3 Method


  一个编码器对应两个解码器,第一个解码器用来预测平面系数,并通过平面系数得到深度图Di,第二个解码器输出密集像素偏移量O和置信图F,通过细化偏移量后查找种子像素,并通过种子像素的平面系数来预测深度图Ds,通过置信图F将深度图Di和Ds进行加权融合得到深度图Df,将深度图Di,Ds和Df与真值D*进行损失计算,构建约束。
  本文网络通过选择性地组合每个像素和种子像素的深度来估计深度,本文采用了一种平面系数表示来实现像素深度和平面信息的通用表示法,并推到了平面系数和深度信息之间的解析关系。平面系数表示法的主要优点是,假设两个像素位于同一个平面上,可以通过不同像素的平面系数直接计算像素中的深度信息。最后本文提出了一个面片级的平均平面损失,有助于网络独立学习规则深度图。
  监督深度估计可以看作是从二维像素中预测深度信息,其种I(u,v)为图片,D(u,v)为其对应的深度图,fθ为映射过程,其中θ为参数,T为训练集,L为损失函数,用来约束预测和实际图片D*之间的偏差,整体过程可以描述为以下公式。
  对于一个给定深度图D(u,v)的图片,我们可以采用反向投影将每个像素点投影到3D空间,例如,给定焦距fx,fy和主点(u0,v0),每个像素p(u,v)的三维点P(X,Y,z)满足如下条件。

  假设反向投影的3D点P对应3D场景的平面部分,点-法形式中的关联方程可以写成nP+d=0,其中n=(a,b,c)为平面的法向量,d为该点到平面的距离。将P点坐标带入公式后可以得到以下公式。

  通过公式简化后可以得到如下公式,其中α, β, γ, ρ都是和平面相关的参数,所以引入C=(α, β, γ, ρ),将C称为平面系数,所以深度信息Z=h(C,u,v),其中h为映射函数。

  本文并不是直接预测深度,且预测平面信息的间接方式也不会带来直接优势。但位于统一平面的两个像素,往往具有相同的平面系数C,但是具有不同的深度,这使得我们可以采用种子像素的平面系数来预测目标像素的深度。
  我们假设像素p位于3D空间的平面上,这个平面都有相同的C,在理想的情况下,我们只需要预测一个像素q就可以计算出平面上的所有深度,这个像素q被描述为种子像素,为了准确的定义种子像素和其相同深度的区域,我们使用神经网络来完成这一过程。
  基于分段平面性先验,对于具有关联平面的像素点p,在其领域内存在一个种子像素点q,该点也和平面相关联,定义p,q之间的偏移量为O(p)=p-q,由于p,q具有相同的平面系数,所以就要C(p)=C(q),即C(p)=C(p+O(p)),通过双线性插值可以得到重新采样的平面系数计算深度预测的公式如下所示。

  然而基于种子位置的深度信息并不都是准确的,所以第二个编码器也输出了置信图F∈[0,1],最终的深度图由两个深度图加权得到。
  平均平面损失如下。

4 Experimental results

  NYU数据对比。  Kitti数据对比。

基于分段平面性的单目深度估计 P3Depth: Monocular Depth Estimation with a Piecewise Planarity Prior相关推荐

  1. 单目深度估计 | Real-Time Monocular Depth Estimation using Synthetic Data 学习笔记

    文章目录 1. 摘要 2. 创新点和局限性 3 研究 3.1 阶段1-单目深度估计模型. 3.1.1 损失函数 3.1.2 训练细节 3.2 阶段2-通过风格迁移的域自适应 3.2.1 损失函数 3. ...

  2. 无监督单目深度估计 Unsupervised Monocular Depth Estimation with Left-Right Consistency 论文方法分析

    最近在做深度估计相关的毕业设计,一般的基于深度学习单目深度估计算法都是基于监督学习的方法,也就是说我希望输入一张拍摄到的单目照片,将它通过卷积神经网络后生成一张深度图.在这个过程中我们就要求需要有大量 ...

  3. 单目深度估计 | Learning Depth from Monocular Videos using Direct Methods 学习笔记

    文章目录 摘要 1. 论文主要贡献: 2. 从视频中学习预测深度 2.1 尺度模糊 2.2 建模姿态估计预测器 3. 可微分直接视觉测距法 3.1 直接视觉测距法(DVO) 3.2 可微分的实现 4 ...

  4. 单目深度估计方法:现状与前瞻

    今天为大家推荐的是<中国图象图形学报>2019年第12期论文<单目深度估计技术进展综述>,该文由中国图象图形学学会成像探测与感知专委会组织,北京理工大学刘越教授等学者撰写,对国 ...

  5. 单目深度估计技术进展综述

    阅读分享中国图像学报<单目深度估计技术进展综述> 单目深度估计技术进展综述 目录 深度估计概述 基于多幅/单幅图像的深度估计方法 监督学习和无监督学习 深度估计相关数据集 基于深度学习的单 ...

  6. 基于高分辨率的单目深度估计网络(AAAI2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨图灵智库 来源丨 泡泡机器人SLAM 标题: HR-Depth:High Resolution ...

  7. 基于传统方法的单目深度估计

    如果想要深入学习单目深度估计方面的知识,可以关注我们工坊推出的课程: 单目深度估计方法:算法梳理与代码实现 单目深度估计一直以来都是计算机视觉领域中的一项非常具有挑战的难题.随着计算机技术.数字图像处 ...

  8. ECCV2022 | 基于整合IMU运动动力学的无监督单目深度估计

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 0. 引言 虽然近年来无监督单目深度学习取得了很大的进展,但仍然存在一些基本 ...

  9. 基于深度学习的单目深度估计综述

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章:Monocular Depth Estimation Based On Deep Learnin ...

最新文章

  1. nginx+tomcat+memcache实现负载均衡、session共享
  2. SAP PP C201使用ECR创建Recipe主数据
  3. Point-to Analysis指针分析(1)
  4. XML文件的生成与读取
  5. Java 基础学习(Markdown语法)
  6. 数据分片排序oracle,Oracle数据库的优化
  7. 你一定听过这些不太标准的技术圈发音...
  8. python科学计算笔记(一)NumPy中ndarray对象、ufunc运算、矩阵运算
  9. jedis watch Java_jedis操作redis的几种常见方式总结
  10. 推荐Linux内核书籍
  11. 博士生Science发文:很庆幸导师要求每周交工作进展汇报!
  12. [python]数字编程练习
  13. 使用nginx反向代理解决前端跨域问题
  14. wacom数位板怎么调压感_手绘板压感是什么 数位板压感怎么调【教程】
  15. 项目文档说明前端部分怎么写?写进readme.md文件里面。
  16. 排列组合的一些公式及推导
  17. c语言计算机那类教,C语言教学中的兴趣驱动
  18. 2019/12/31 教养
  19. 中国石油大学(北京)-《 油层物理》第二阶段在线作业
  20. 项目无法识别 ?. 语法,导致报错Module parse failed: Unexpected token

热门文章

  1. C语言宏定义#define
  2. 关于abaqus中Mises应力分量的理解
  3. MySQL创建函数和存储过程,批量插入大数据
  4. 晶体管与计算机原理,从晶体管到计算机,与逻辑门的奥妙
  5. 关于Modbus 3区、4区寄存器地址的理解以及Freemodbus中开始地址的设定
  6. 函数指针作为函数参数 定义、使用、调用简例
  7. Code Review 代码评审
  8. 【金猿产品展】亚信科技AISWare Onta KG知识图谱工具——一站式全流程知识计算管理平台...
  9. 计算机组成原理实验单周期处理,计算机组成原理实验实验报告-单周期cpu设计...
  10. ARM Cortex-M3内核与STM32微控制器