一文带你读懂深度估计算法

深度估计算法调研

1.常见的深度估计算法

寻找RGB图像与深度图之间存在着的某种映射关系

1)几种常见算法:

① 基于几何的方法:从一系列二维图像序列中估计三维结构,SfM,稀疏特征的深度由SfM通过图像序列之间的特征对应和几何约束来计算。存在单目尺度模糊的问题,依赖于高精确的图像匹配或高质量的图像序列。
② 基于传感器的方法:利用深度传感器,可以直接获得相应图像的深度信息,测量范围有限,常见Kinect的有效测距范围仅为0.8m~4m。
③ 基于深度学习的方法:CNN RNN VAE GAN

2)常用数据集:
KITTI,NYU Depth V2,Make3D

3)深度估计中一些评价指标:

在这里插入图片描述

4)基于深度学习的单目深度估计:
① 监督或半监督学习:
CNN:
  1.使用两个尺度的CNN对单张图片的深度进行估计:粗尺度网络预测图片的全局深度,细尺度网络优化局部细节。随后又提出了使用了VGG网络,利用第3个细尺度的网络进一步增添细节信息。
  2.还有一些编码器解码器结构,其中比较有名的:
FastDepth: Fast Monocular Depth Estimation on Embedded Systems:encoder部分MobileNet模型提取到7x7x1024的特征;Decoder部分采用了5次上采样,中间三次上采样结果通过Skip Connections的方法分别与Encoder部分的特征进行了特征融合

基于条件随即场:
 Liu等将深度卷积神经网络与连续条件随机场结合,提出深度卷积神经场在统一的神经网络框架中学习连续CRF的一元势能项和成对势能项
基于GAN:

在这里插入图片描述

② 无监督学习:
将帧间的几何约束作为监督信号,而不是用真实背景制作为标签
无监督方法的基本模型:无监督方法由单眼图像序列训练,几何约束建立在相邻帧之间的投影上

在这里插入图片描述

可传输性(泛化性):可传输性是指同一网络在不同摄像机、不同场景和不同数据集上的性能
实时性:减少计算时间,提高运行速度

2.深度图转换成实际距离

1)绝对深度:利用激光雷达等设备获取的相机与物体之间的距离
 如KITTI深度图是利用360度雷达设备获取稀疏的深度图,是以uint16的格式存储的,要从深度图中读取真实距离,除以256之后以米为单位
 将Kinect2原始深度数据转换为以米为单位的距离。Kinect实际上通过USB发送类似于视差图像的内容。OpenNI和libfreenect都能够使用设备报告的参数(基线,焦距和到参考平面的距离IIRC)将其转换为深度图像。深度=基线*焦距/视差,深度应与当前图像帧的Z轴相对应。1.0 / (raw_depth * -0.0030711016 + 3.3309495161)。

2)相对深度:
 用来获得ground truth depth的硬件设备具有一定误差和环境限制,因此获得的深度图具有一定误差。在误差的基础上进行建模,使得后续模型拟合的难度加大了。
因此提出,其实人类对深度的实际数值并不敏感,反而是对相对深度即物体的前后关系更加敏感。不能准确标注出多少米,其与真实深度之间差了一个基准值,这个值我们是不知道的

3.深度估计算法流程

1)有监督学习:
① 训练集RGBD格式
RGB+Depth Map,Depth Map 类似于灰度图像,只是它的每个像素值是距离物体的实际距离

groundtruth:常用的KITTI数据集和NYU-V2数据集中都主要包含两部分:
  1.label datasets:就是类别+相关信息
  2.raw datasets:产生RGB和deepth图像
网络输入是raw dataset的RGB图像,输出是深度图,与deepth图像作距离损失优化网络参数。训练好后,产生的深度图(灰度)中像素点的值体现视点距离
② 深度信息格式
 许多研究图像深度的论文里有提到用kitti数据集中LIDAR scanner得到的深度信息作为ground-truth,其中matrix每行有x,y,z,intensity,意思是前后距离(深度),左右偏移,上下偏移,激光反射强度。
③ 格式RGB+相对深度
 Single-Image Depth Perception in the Wild(经典论文):
 DIW数据集:户外图像和相对深度注释。该数据集每幅图片选取一对像素点进行一次问询,标注。每张图片上询问一对采样点能最大限度利用采样点的相对深度信息。在一张图中询问多对采样点不如在多张图中每张图询问一对采样点。采样点的选择:采样的两点关于中心对称,这样实际概率上各占50%。
 网络结构:网络是image2depth的
 相对距离构成的损失函数:对dpeth图中gt标注两个点之间根据注释rk算loss

在这里插入图片描述

2)无监督学习:
 数据集采用stereo images,两个相机(或者双目相机)在同一水平线上左右相距一定位置得到的两幅图片。这种图片获取的代价要比深度的ground truth 低一些,利用了深度信息和场景之间的一些物理规律来约束。

在这里插入图片描述

  • 11
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 深度估计是一种计算机视觉任务,它的目标是从图像中准确地估计不同位置的深度信息,以便进一步理解和分析图像。Python是一种流行的编程语言,它提供了强大的工具和库来处理图像和计算机视觉任务。 在深度估计任务中,Python可以用于加载图像数据集,对图像进行预处理和增强,以及构建和训练深度学习模型。Python提供了一系列优秀的图像处理库,如OpenCV和PIL,可以帮助我们对图像进行基本的操作和转换。 对于深度估计,Python中的深度学习库如TensorFlow和PyTorch可以用于构建和训练深度学习模型。这些库提供了现成的深度学习模型架构,如卷积神经网络(CNN)和残差网络(ResNet),用于实现深度估计任务。同时,它们还提供了优化算法和训练工具,以便对模型进行训练和调优。 此外,Python还提供了其他相关的库和工具,如NumPy和SciPy,用于进行数值计算和科学计算;以及matplotlib和seaborn,用于可视化和分析结果。 综上所述,Python在深度估计任务中扮演了重要的角色。它提供了丰富的工具和库,使得我们能够方便地处理和分析图像数据,并构建高效准确的深度学习模型。通过Python,我们能够更好地理解和解决深度估计问题,推动计算机视觉领域的研究和应用。 ### 回答2: 深度估计计算机视觉中的一项任务,旨在通过分析图像来估计出不同物体或场景的深度信息。Python是一种常用的编程语言,也被广泛应用于深度估计算法实现和数据处理中。 在深度估计中,Python提供了丰富的机器学习和计算机视觉库,例如TensorFlow、PyTorch和OpenCV等。这些库提供了强大的工具和函数,可以方便地进行深度学习模型的开发和训练。使用Python,可以构建深度卷积神经网络(CNN)或其他深度学习模型,以从图像中提取特征和预测深度。 Python还提供了大量的数据处理和图像处理库,如NumPy和PIL(Python Imaging Library)。这些库可以帮助我们对输入图像进行预处理、数据增强和数据的可视化。此外,Python还有丰富的可视化库,如Matplotlib和Seaborn,可以用于展示深度估计的结果和分析。 使用Python进行深度估计的过程通常包括以下步骤:数据准备、模型构建、训练与优化、测试与评估等。在数据准备阶段,我们可以使用Python库来加载和预处理图像数据。在模型构建阶段,可以使用Python编写网络结构、定义损失函数和优化器。训练与优化阶段可以通过Python实现模型的训练过程,使用已有的数据集进行模型拟合和参数调优。最后,在测试与评估阶段,我们可以使用Python编写代码来评估模型对新数据的深度估计效果,并进行可视化展示。 总而言之,Python在深度估计任务中的应用非常广泛。由于其简洁、易用且强大的特点,Python成为了研究人员和开发者们进行深度估计算法开发和实验的首选语言。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值