【深度估计】单目深度估计

news2024/11/25 5:23:26

文章目录

  • 什么是深度估计?
  • 什么是视差
  • 深度估计与三维重建
  • 单目深度估计研究历程
  • 单目深度估计方法
    • 传统方法
      • 基于线索
        • 线性透视
        • 聚焦/散焦度
        • 天气散射
        • 阴影
        • 纹理
        • 遮挡
        • 高度
        • 运动线索
          • 基于物体自身运动
          • 基于摄像机的运动
      • 基于机器学习
        • 参数学习方法
          • 开创性工作
          • 改进
          • 加入语义信息
          • 条件随机场 (Conditional Random Field,CRF)
        • 非参数学习方法
          • 第一个里程的工作
          • 进一步完善
          • 基于多帧
          • 其他非参数学习方法
    • 深度学习方法
      • 基于有监督的深度学习方法
        • 首次应用
        • 改进:多尺度网络
        • 深度卷积神经场
        • 深度残差网络
        • 利用分类思想
      • 基于无监督的深度学习方法
        • 利用立体视图
        • 利用相对关系
        • 利用视频序列
        • 应对动态障碍物
          • Struct2Depth
          • Depth in the Wild
          • Depth and motion learning
  • 数据集
    • KITTI
    • NY U
    • CityScapes
  • 论文推荐
    • CVPR 2021

什么是深度估计?

深度估计,就是获取图像中的场景里的每个点到相机的距离信息,这种距离信息组成的图称之为深度图 – Depth map

什么是视差

两张图像中相同的物体的像素坐标不同;
较近的物体的像素坐标差异较大,较远的物体的差异较小;
同一个世界坐标系下的点在不同图像中的像素坐标差异,就是视差;
不同图像之间的视差,通过相机参数、两个拍摄点之间的位置信息即可换算出物体和拍摄点之间的距离;
在这里插入图片描述

深度估计与三维重建

1、获取深度图以及尺度信息
深度图是三维重建的基础
可以通过激光/双目/相机姿态获取尺度
2、将像素坐标转换到世界坐标
通过内参矩阵、外参矩阵以及尺度关系,得到基于世界坐标系下的点云信息
3、三维重建
得到点云后,再将图像的纹理信息贴到点云上,完成三维重建

单目深度估计研究历程

在这里插入图片描述

单目深度估计方法

在这里插入图片描述

传统方法

基于线索

从图像本身的特征和线索计算图像的深度值。

常用的单日深度线索有:线性透视、聚焦/散焦、大气散射、阴影、纹理、遮挡、相对高度和运动线索。

线性透视

通过检测平行线,识别这些线的会聚点(消失点)来进行深度估计
当距离眼睛更远时,固定尺寸的物体将产生较小的视角
根据消失线和消失点的位置对深度进行适当的分配

在这里插入图片描述

聚焦/散焦度

在凸面镜所成的像中,物体只有处在离镜头特定的距离才能够被聚焦,在其他位置都会产生不同程度的模糊现象,模糊程度与其所处的距离有关。

例子:基于聚焦信息构造高阶统计量图,区分出图像中的前景区域和背景区域并对这两个区域进行深度分配。

在这里插入图片描述

天气散射

当光线通过大气层传播时,空气中的灰尘微粒对光线具有散射和吸收作用,远处物体相对于近处物体亮度、对比度和色彩饱和度较低,看起来不太清晰。

根据大气散射现象,大脑可以判断不同对比度的物体具有不同的深度。

例子: 通过在输入图像上添加雾面来模拟雾图像,并通过去雾算法中的透射估计方法估计深度图。

在这里插入图片描述

阴影

图像中物体表面阴影的变化可以反映物体的形状信息。

SFS(Shape from shading 阴影恢复形状): 利用图像的亮度和表面几何之间的关系,从灰度图像中恢复出物体的三维形状当物体表面的颜色和纹理不属于同一分布的时候,该方法就会失效。

在这里插入图片描述
在这里插入图片描述

纹理

根据表面纹理标记的提示来估计表面的形状。
距离一个物体越近时,越能清楚地看到物体表面的纹理细节,对于距离较远的物体看不清。
通常仅限于特定类型的图像。
在这里插入图片描述

遮挡

当一个物体遮挡住另一个物体时,它比被遮挡的物体距离观看者更近一般认为轮廓线连续平滑的物体是遮挡物体,即距离观察者更近。

例子:通过对遮挡的明确推理,恢复了场景中独立结构的深度排序。

在这里插入图片描述

高度

靠近图像底部的物体通常比图片顶部的物体更近,主要包含在户外和景观场景中要提取出这个深度线索,通常要识别出水平线,将图像分成从左边界到右边界的条纹。

例子:应用线追踪算法来恢复最优分割线,并进一步采用深度优化方法来提高最终深度图的质量。
在这里插入图片描述

运动线索

基于物体自身运动

利用运动视差近大远小的原理,通过对视频序列的前后帧进行点匹配求得运动视差·只适用于摄像机处于静止的情形,没有运动物体时失效

基于摄像机的运动

运动恢复结构(Structure From Motion,SFM):假定场景静止不变,仅存在摄像机的运动SFM 可以从图像序列中恢复出摄像机的外参和场景的深度信息
1.首先对相机标定。
2.提取图像特征,并计算相邻图像匹配的特征点。
3.根据对极几何得到相机位姿以及深度信息。
缺点
1.要求必须存在相机的运动,运动幅度不能较大。
2.当场景中存在运动物体时,对精度影响很大;速度相对较慢。
3.依赖相邻图像间的特征点匹配,不适用图像纹理较少或相机的运动幅度大的场景。

基于机器学习

将大量训练图像集和对应的深度图输入定义好的模型中,进行有监督的学习。
分为参数学习方法与非参数学习方法。

参数学习方法

参数学习方法是指能量函数中含有未知参数的方法,训练的过程是对这些参数的求解

开创性工作

2005年,斯坦福大学的Saxena等人利用**马尔科夫随机场(Markov RandomField,MRF)**学习输入图像特征与输出深度之间的映射关系。

利用图像中多尺度的纹理、模糊等深度线索,分别构建了高斯和拉普拉斯MRF

对每个分割图像块的深度进行了建模,同时建立相邻块之间的深度关系。

在这里插入图片描述

改进

2007年,在最大化后验概率框架下,以超像素为单元,利用MRF 拟合特征与深度、不同尺度的深度之间的关系,进而实现对深度的估计。

(超像素:把一些具有相似特性的像索“聚合”起来,形成一个更具有代表性的大“元素”)

在这里插入图片描述

加入语义信息

通过引入场景中的附加信息,如语义假设和重复纹理等,能有效提高深度估计的精度。

2010年,Liu 等人对整个图像的不同区域按照语义标签进行分类。

采用更简单的特征向量作为监督学习的输入,充分利用不同类别之间的深度信息和几何约束。

将语义信息及对应的深度约束结合,构建MRF模型,优化模型得到场景的深度信息。

MRF通常很难进行精确地学习和推理,大多都采用近似计算,导致预测深度的准确率不高,且效率低。

条件随机场 (Conditional Random Field,CRF)

Cheng 等人首先利用遮挡消失点这两种深度线索获取深度梯度图,构建基于像素的条件随机场。

Zhuo等人提出对深度图的分层表达进行建模,对超像素、区域和布局的不同层融合推理。

J等人研究了超像素标记和深度估计之间的内在关系,提出弹性条件随机场模型Elastic Conditional Random Field,ECRF),利用它们的相互关联来加强彼此。

上述方法需假设RGB图像与深度之间的关系满足某种参数模型,而假设模型难以模拟真实世界的映射关系,预测精度有限

非参数学习方法

非参数学习方法,使用现有的数据集进行相似性检索推测深度

一种数据驱动算法。

给定一幅测试图像,通过融合RGBD数据库中相似图像的深度得到。

在这里插入图片描述

第一个里程的工作

Konrad 等人提出采用最近邻搜索(k Nearest Neighbor,kNN)

从RGBD训练库中选出与测试图像最相似的幅候选图像。

再将这 K 幅候选图像对应的深度图进行中值融合得到测试图像的深度。

进一步完善

Karsch等人采用变形步骤,将候选图像和深度与测试图像对齐,构建了【融合变形后的K幅候选深度图的】 能量最小化方程。

基于多帧

利用视频中时间信息来获得时间上一致的深度估计。

Liu等人将单目深度估计视为离散-连续最优化问题。

通过非参数学习方式在数据库中检索相似的深度图,并利用遮挡信息构建目标函数进行深度推理。

其他非参数学习方法

Henera等人使用基于局部二进制模式的特征来估计相似的图像。采用自适应的方法进行融合得到最终深度。

在此基础上他们又提出了基于聚类的深度提取学习算法。

该方法首先根据结构的相似度将 RGBD 数据库进行聚类处理,分割成数个集合。对于给定的输入图像,先找到最相似的图像集计算出先验的深度图,之后采用基于分割的导向滤波对先验深度进行优化。

优点:非参数化方法不需要设计参数化的模型,同时也没有引入太多的场景假设。

缺点:当数据库中不存在与测试图像相似的图像时,很难恢复理想的深度图;依赖于图像检索,计算量大、耗时高,难以实际应用。

深度学习方法

基于有监督的深度学习方法

基于有监督学习的的单目深度估计方法,在模型训练时需要依赖真实深度依赖庞大的数据进行网络模型的训练,数据集一般包括单目图像和对应的深度真值。

基于有监督学习的单目深度估计方法中,网络模型的训练需要依赖真实深度值。真实深度值的获取成本高昂,且范围有限,需要精密的深度测量设备和移动平台采集的原始深度标签通常是稀疏点,不能与原图很好的匹配。

首次应用

2014年,Eigen等人使用Deep CNN估计单幅图像的深度,两个分支以RGB图片作为输入,第一个分支网络粗略预测整张图像的全局信息,第二个分支网络细化预测图像的局部信息原始图片输入粗网络后,得到全局尺度下场景深度的粗略估计将粗网络的输出传递给细网络,进行局部优化,添加细节信息先训练Coarse网络,再固定Coarse网络的训练参数,去训练Fine网络

一种全局+局部的策略,Coarse网络预测整体趋势,Fine网络局部调优。
在这里插入图片描述

改进:多尺度网络

2015年,Eigen等人基于上述工作,提出了一个统一的多尺度网络框架。

使用了更深的基础网络VGG,利用第3个细尺度的网络进一步增添细节信息,提高分辨率,scale1网络对整张图片做粗略估计,scale2和scale3 网络对全局预测进行细节优化,将scale1网络的多通道特征图输入 scale2 网络,联合训练前面两个尺度的网络,简化训练过程,提高网络性能。

分别用于深度预测,表面法向量估计和语义分割3个任务,将同一框架独立应用于不同任务,使用不同的数据集训练。
在这里插入图片描述

深度卷积神经场

Liu等人(2015)将深度卷积神经网络与连续条件随机场结合,提出深度卷积神经场;

使用深度结构化的学习策略,学习连续CRF的一元势能项和成对势能项;

通过解析地求解函数的积分,可以精确地求解似然概率优化问题。

在这里插入图片描述

Li等人(2015)提出多尺度深度估计方法,用深度神经网络对超像素尺度的深度进行回归;

再用多层条件随机场后处理,结合超像素尺度与像素尺度的深度进行优化;

多尺度图片作为输入,有利于学习全局的深度信息。

在这里插入图片描述

深度残差网络

Laina 等人(2016)提出一种基于残差学习的全卷积网络(FCN)架构,去掉全连接层,减少参数,不限制图像输入尺寸。

整个网络可以看做是一个encoder-decoder的过程,使用了预训练的ResNet50,网络结构更深。

为了提高输出分辨率同时优化效率,提出一种新的上采样方法。

考虑到深度的数值分布特性,引入逆Huber Loss作为优化函数。

在这里插入图片描述

利用分类思想

考虑到场景由远及近的特性,可以利用分类的思想。

Cao等人(2018)将深度估计问题看作像素级的分类问题。

离散化:将深度值投影到对数空间,按照深度范围离散化为类别标签。

训练:深度残差网络预测每个像素对应的类别,损失函数包含信息增益的多项逻辑函数(对离真值越远惩罚越大,网络更加关注难样本)。

后处理:分类可以得出概率分布,便于条件随机场作为后处理优化细节。

在这里插入图片描述

基于无监督的深度学习方法

基于有监督学习的单目深度估计方法中,网络模型的训练需要依赖真实深度值。真实深度值的获取成本高昂,且范围有限,需要精密的深度测量设备和移动平台采集的原始深度标签通常是稀疏点,不能与原图很好的匹配。

无监督学习的方法不依赖深度真值,是单目深度估计研究中的热点。

相对于传统算法和有监督学习算法,无监督学习方法在网络训练时只依赖多帧图像,不需要深度真值具有数据集易获得、结果准确率高和易于应用等优点。

根据图像对之间的几何关系重建出对应的图像,通过图像重建损失监督训练。

利用立体视图

Garg等人(2016)提出利用立体图像对实现无监督单目深度估计;

利用左右立体图像对,用预测的深度图重构左图,计算重构损失;

训练时需要左右图像对,预测时只需要一张图;

在这里插入图片描述

Godard 等人(2017)对上述方法进一步改进: Monodepth;

利用左右视图的一致性实现无监督的深度预测;

利用对极几何约束生成视差图,再利用左右视差一致性优化性能,提升鲁棒性。

在这里插入图片描述

利用相对关系

Zoran等人(2015)关注相对深度关系,利用图像中点对之间的相对关系推断深度信息。(需要少量相对远近的标签,算是弱监督)

网络输出点对之间的相对关系,再利用数值优化方法将稀疏的输出稠密化为最终结果。

优点:比数值回归更加简单;人们能够很容易判断相对关系,训练数据集获取成本低相对关系不受数据的单应变换影响,系统更加鲁棒

整体框架由3部分组成:
第1部分从图像中选择点对。
第2部分估计每一个点对的相对关系,提取相关信息并做三分类。
第3部分将点对之间的相对关系扩展至全局,得到稠密输出。
在这里插入图片描述

Chen 等人( 2016)利用相对深度关系构造损失函数通过多尺度的神经网络直接预测像素级的深度。

此损失函数的设计,让网络能够利用相对深度关系作为标签,深度值作为网络的输出结果,将相对深度关系与连续深度值联系了起来。

在这里插入图片描述

利用视频序列

SFMLearner
Monodepth2
Featdepth

应对动态障碍物

上述方法都基于静态场景假设,如果场景中出现了动态目标,动态目标在两帧中的变化就会很小,可能将近处的物体误判为远处的物体(因为远处的物体误差小)。

Struct2Depth
Depth in the Wild
Depth and motion learning

数据集

KITTI

NY U

CityScapes

论文推荐

CVPR 2021

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《工业机器视觉检测123》(1.1) 目标检测样本类别不平衡的问题(持续更新...)

部分内容转载自:https://www.cnblogs.com/inchbyinch/p/12642760.html 参考分类任务中解决类别不平衡的办法: 1 什么是类别不平衡问题? 类别不平衡(class-imbalance),也叫数据倾斜,数据不平衡…

Tomcat面试问题总结

1.Tomcat是什么?Tomcat 服务器Apache软件基金会项目中的一个核心项目,是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首…

EasyCVR视频融合平台的视频处理与AI智能分析流程实操案例介绍

EasyCVR基于云边端一体化架构,能支持海量视频的轻量化接入与汇聚管理。在视频能力上,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等。 除了视频能力之外,将…

浅谈设备防漏扫

场景描述 随着社会的信息化,互联网安全被国家越来越重视,漏洞扫描(简称漏扫)业务也在被规范列入企事业单位的信息安全的标准中。 从安全角度来看,漏扫本身是为用户的用网安全做保障,避免木马、病毒等通过…

vue中点击空白处改变dom状态实现显隐,监听dom(addEventListener)

需求来源:点击铃铛之后弹出右侧抽屉,实现文件下载 现在是点击小铃铛出现弹框没问题,点击关闭图标关闭弹框也没问题,但是点击空白区域消失不了,这个时候需要dom监听属性document.addEventListener来实现需求了 主要是用…

c++学习笔记之基础

目录前言零碎知识点C核心内存分区引用函数类和对象对象的初始化和清理构造函数和析构函数构造函数的分类和调用拷贝构造函数的调用时机深拷贝与浅拷贝初始化列表类对象作为类的成员静态成员C对象模型和this指针成员变量和成员函数分开存储this指针空指针访问成员函数const修饰成…

IDEA2022 配置spark开发环境

本人强烈建议在 linux环境下 学习 spark!!! Introduction Apache Spark是一个快速且通用的分布式计算引擎,可以在大规模数据集上进行高效的数据处理,包括数据转换、数据清洗、机器学习等。在本文中,我们将…

NDK C++ map容器

map容器// TODO map容器 #include <iostream> #include <map>using namespace std;int main() {// TODO map<int, string>按key值排序&#xff0c;同一个key不可以重复插入map<int, string> map1;map1.insert(pair<int, string>(1, "111&qu…

ChatGPT没有API?OpenAI官方API带你起飞

目录ChatGPT没有API&#xff1f;OpenAI官方API带你起飞安装 OpenAI 的 API 库包装个函数包装个UIChatGPT没有API&#xff1f;OpenAI官方API带你起飞 前段时间ChatGPT爆火&#xff0c;OpenAI 的 GPT API也被大家疯狂调用&#xff0c; 但其实这个API是基于GPT3的&#xff0c;和基…

【RabbitMQ】Producer之mandatory、alternative exchange、TTL - 基于AMQP 0-9-1(一)

RabbitMQ系列文章&#xff0c;前几篇介绍了基础概念&#xff0c;AMQP 0-9-1 协议&#xff0c;和服务端安装&#xff0c;准备工作都完成后&#xff0c;就开始着手开发了。这篇文章主要介绍RabbitMQ生产者的开发&#xff0c;包括Producer、Message常见的参数&#xff0c;读完这篇…

20.hadoop系列之Yarn资源调度器

Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统&#xff0c;而MapReduce等运算程序则相当于运行于操作系统之上的应用程序 1.Yarn基础架构 Yarn主要由ResourceManager、NodeManager、ApplicationMaster和Contai…

【MySQL】基础操作

数据库的操作 查看所有数据库&#xff1a; SHOW DATABASES;&#xff08;注意这里是 databases&#xff0c;多了个 s&#xff09; mysql 不区分大小写&#xff0c;所以 show databases; 是一样的。 另外&#xff0c;在命令行窗口操作时&#xff0c;可以使用上下方向键调用前面已…

CentOS编译安装Apache

1、下载Apache、apr和apr-util源码包&#xff1a; 2、解压文件&#xff1a; tar -zxvf httpd-2.4.55.tar.gz tar -zxvf apr-util-1.6.3.tar.gz tar -zxvf apr-util-1.6.3.tar.gz mv apr-1.7.2 httpd-2.4.55/srclib/apr mv apr-util-1.6.3 httpd-2.4.55/srclib/apr-util 说明&…

计讯物联5G数采仪助力打造化工园区企业工况监测系统

项目背景 随着我国化工行业的快速发展&#xff0c;化工园区已成为化工行业发展的重要阵地&#xff0c;化工企业聚集&#xff0c;危险化学品安全风险集中&#xff0c;安全规范问题逐渐成为行业关注的焦点。然而&#xff0c;我国化工园区发展水平发展参差不齐&#xff0c;尤其是…

Redis过期删除策略和内存淘汰策略

目录一、面试题二、Redis内存满了怎么办2.1 结论三、redis里写的数据如何删除的&#xff1f;3.1 三种不同的删除策略3.1.1 立即删除3.1.2 惰性删除3.1.3 定期删除3.3.4 总结四、redis缓存淘汰策略4.1 有哪些4.2 你平时用哪一种五、总结一、面试题 生产上你们你们的redis内存设…

第三章-OpenCV基础-8-绘图函数

前置内容 这篇内容不是本书内容,但后续用的到&#xff0c;特做记录。 使用OpenCV中不可避免需要用到各种绘图功能,比如绘制人脸库、显示人脸识别信息,那就需要用到OpenCV的绘图函数&#xff0c;这些函数包括cv2.line()&#xff0c; cv2.circle()&#xff0c;cv2.rectangle()…

Lazada如何做好店铺运营?产品定价是关键

1.东南亚各国状况一览&#xff08;对比中国&#xff09; 2.东南亚消费水平真的很低&#xff1f; 精准定价的意义&#xff1a;定价过高&#xff0c;失去核心竞争力&#xff1b;定价过低&#xff0c;亏本对市场失去信心&#xff1b;价格改动&#xff0c;流量下降 定价公式&#…

MySQL实战解析底层---日志系统:一条SQL更新语句是如何执行的

目录 前言 重要的日志模块&#xff1a;redo log 重要的日志模块&#xff1a;binlog 两阶段提交 前言 MySQL 可以恢复到半个月内任意一秒的状态&#xff0c;这是怎样做到的呢&#xff1f;从一个表的一条更新语句说起&#xff0c;下面是这个表的创建语句&#xff0c;这个表有…

【个人总结】Mongodb安装下载

【个人总结】MongDB安装下载1、下载2、安装3、创建数据库文件的存放位置4、配置5、创建文件6、安装mongodb服务7、测试1、下载 官网下载地址&#xff1a;https://www.mongodb.com/try/download/community-kubernetes-operator&#xff0c;选择对应版本&#xff0c;我这里是3.6…

大数据之Hudi数据湖_大数据治理_简介_发展历史_特性_应用场景---大数据之Hudi数据湖工作笔记0001

支持hive spark flink 美国公司开发的~ 都在使用,这些企业都在用 支持hadoop的,更新,插入,删除 和数据增量处理 支持流式数据处理. hive是离线数仓 hive不支持事物 insert overwrite 底层后来通过这种方式支持了事物 insert overwrite处理数据很低效,因为更新是基于覆盖实现…