单目深度估计基础理论和论文学习总结

单目深度估计基础理论和论文学习总结

image

一、背景知识:

三维刚体运动的数学表示:旋转平移矩阵、旋转向量、欧拉角、四元数、轴角模型、齐次坐标、各种变换等

照相机模型:单目/双目模型,单目中的世界坐标系/相机坐标系/图像坐标系的互相转换、畸变与矫正,双目涉及的视差和深度的反比关系、基线,鱼眼模型和校正等

图像变换:线性变换、仿射变换、透视(投影变换)

图像相似度评价指标:SSIM/PSNR/MSE、平滑损失、ξ等。

参考:《视觉SLAM十四讲》

二、综述类文章:

1、基于深度学习的单目深度估计综述

黄飘:基于深度学习的单目深度估计综述

一篇中文的比较全的综述,每一项介绍的比较简单,适合复习的时候看,包括背景介绍、有监督无监督方法、数据集、相关工作等。

2、Deep Learning based Monocular Depth Prediction: Datasets, Methods and Applications

英文的极其全的综述,非常好

3、深度学习之单目深度估计(上、下)

桔子毛:深度学习之单目深度估计 (Chapter.1):基础篇

桔子毛:深度学习之单目深度估计 (Chapter.2):无监督学习篇

这一套比较详细地讲了理论,收获很大,了解了有监督方法的网络架构设计:couse-fine网络设计、基于FCN和更深的resnet50的设计,和无监督方法具体用的损失函数如光度重建误差的含义、SSIM指标含义、齐次坐标的含义、利用立体图像重建的naïve方法的思路、左右视图重建方式改变的NOLR方法的好处(可以一一对应没有空洞)、基于左右一致性的monodepth思路和他的损失函数的设计、视差图和深度图的关系、半监督的方法、基于视频重建方法的思路和他针对运动物体设计的mask约束的思路等等,但因为是2017年写的,后面的就没有了,monodepth2的改进要另外查。

三、视频课程:

1)付费课程:单目深度估计方法: 理论与实战

https://app0s6nfqrg6303.h5.xiaoeknow.com/v1/goods/goods_detail/p_6172be24e4b0cf90f9bca141?type=3

还没更完,比较全面系统,提供了一些参考资料和论文目录

2)免费课程::

主要讲无监督:

单目无监督深度估计综述_哔哩哔哩_bilibili

主要讲有监督:

单目深度估计-薛峰_哔哩哔哩_bilibili

四、基础论文阅读收获总结:

1、监督方法:

Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (2014 NIPS)

Eigen组做的初次尝试,backbone使用AlexNet,分为course-fine两个网络,采用全局-局部策略,损失函数RMSE,全连接层输出。

Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-Scale Convolutional Architecture (ICCV 2015)

上一篇的拓展,backbone换成VGG16,增加了一个fine网络,同时预测深度、发现和label

Deeper Depth Prediction with Fully Convolutional Residual Networks(FCRN)

第一次使用DCN进行深度估计,backbone使用RESNET50,但由于深度深,效果比较平滑,不如VGG输出的轮廓清晰。

2、无监督方法:

(1)使用立体图像重建损失:

Naïve方法:使用正向投射的方法计算重建损失

Unsupervised CNN for Single View Depth Estimation: Geometry to the Rescue(ECCV 2016)

使用目标图像到源图像的逆投射重建,损失函数使用L1损失和平滑损失,逆投射可以保证原图和重建图可以一一对应,不会出现空洞。

image

Monodepth: Unsupervised Monocular Depth Estimation with Left-Right Consistency(2017 CVPR)

使用左右一致性损失,用SSIM和L1相结合的损失函数,网络在多个尺度输出深度图

image

image

image

(2)使用视频流重建损失:

Unsupervised Learning of Depth and Ego-Motion from Video(CVPR 2017)

使用pose CNN和depth CNN同时预测位姿和深度,利用前后帧进行重建,还使用了motion explanation mask作为动态目标的处理,预测一个尽可能大的mask,并使重建损失函数最小.

下面公式一相当于两个相机坐标系下的转换,即原图像先用内参的逆转换到他的相机坐标系,再用旋转平移矩阵转到另一个相机坐标系,再用内参转到另一个相机的图像坐标系,注意这里用的也是逆向转换,而深度Z是数乘,可以变换位置。

image

image

image

Monodepth2:Digging Into Self-Supervised Monocular Depth Estimation

主要是基于单目视频流的方法,也可加入双目立体图像训练,已精读,总结如下:

主体上继承上一篇的视频无监督方案,加入三点提升。

损失函数:上两篇的结合,主要包括光度重建损失和L1损失的加权、边缘平滑损失

image

image

主要提升:

  1. 一个最小重投影误差,用来提升算法处理遮挡场景的鲁棒性、

  2. 一种全分辨率多尺度采样方法,可以减少视觉伪影

  3. 一种_auto-masking loss_,用来忽略训练像素中违反相机运动假设的像素点

第一点意思是其他方法是采用多个输入图片投影误差的均值,这样由于有些像素存在遮挡,找不到对应的像素,导致损失函数惩罚较大,会引起结果边缘不准,本文采用的是多张输入图片中最小的冲投影损失所谓损失函数,可以使深度边缘更清晰,准确性更高。

第二点意思是其他方法是在CNN每一层输出的深度图上直接计算损失,导致低分辨率的深度图可能出现空洞和视觉伪影(texture-copy artifacts.),本文把每一个中间层输出的深度图都用双线性插值上采样到与输入一致的分辨率,减少了视觉伪影。

第三点意思是其他方法是单独计算基于运动物体的mask,有的无法评估,有的用基于光流(optical flow)的比较复杂的方法,本文采用了自动计算的mask,使用二值化的参数μ表示计算简单且结果准确。定义如下:

image

其他问题:

1、 本算法失效的情况:违反朗伯假设的,如畸变的,反光的,饱和度高的区域,和边缘模糊、形状复杂的目标

2、 提到full eigen数据集里面有一些相机静止的序列,依然表现较好,还有一个KITTI补全的数据集评测效果也较好,后面可以看看如何补全。

3、 用了reflection padding代替zero padding,解码器中对于超出边界之外的点用最近的边界像素代替。位姿网络中用轴角表示法,旋转平移矩阵乘以0.01,预测6个自由度的位姿。最后的尺度恢复采用中值缩放的方式,把输出和真值缩放到同样的尺度。真值采用整个测试集的真值尺度。

4、 实验部分围绕三个改进点分别测试。

Featdepth: Feature-metric Loss for Self-supervised Learning of Depth and Egomotion

目前深度估计方法的问题:

虽然重建损失有效,但有问题,因为正确的深度和姿态对于小的光度误差是充分的,但不是必要的 • 例如,即使深度和姿态被错误估计,无纹理像素还是具有小的光度损失

贡献:

学习具有更好梯度的特征表示来克服上述问题,并相应地将光度损失推广到特征损失

提出Feature-metric loss,对特征图计算光度误差,即使在无纹理区域也明确限制其具有判别性

提出FeatureNet(自编码器),利用单视图重构来学习特征表示

结合两个正则化损失,确保在特征表示上定义的损失可以更好的下降

image

(3)伪监督方法

Pseudo Supervised Monocular Depth Estimation with Teacher-Student Network

伪监督方法(知识蒸馏),用无监督双目训练教师网络,输出单目的伪标签来有监督地训练学生网络,同时加入有监督的语义分割增强器来提升效果,使用遮挡mask处理遮挡问题**(精读)**

3、 半监督方法:

Semi-Supervised Deep Learning for Monocular Depth Map Prediction(2017 CVPR)

稀疏深度真值和自监督结合,但纯自监督的效果不如monodepth

最强自动驾驶学习资料和落地经验:链接

  • 32
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单目深度估计是指通过一张单独的图像来估计场景中物体的深度信息。传统的单目深度估计方法并不理想,因为从单张图片中获取具体的深度相当于从二维图像推测出三维空间,这是一个非常复杂的函数。即使人眼在两只眼睛来定位自然世界的物体的情况下也存在问题,更何况使用单张照片。因此,人们更加关注研究立体视觉(Stereo Vision),即从多张图片中得到深度信息。通过比较多张图片之间的视角变化,可以计算出图片之间的视差(disparity),从而得到深度信息。\[3\] 然而,随着深度学习的发展,利用深度学习方法进行单目深度估计也取得了一定的进展。Cao等人提出将单目深度估计看作是一个分类问题,将连续的深度离散化,对深度范围进行分类和排序。这种方法相比于传统的回归方法更加简化了问题,同时也取得了较好的效果。\[1\] 单目深度估计在许多应用场景中都有重要的作用。除了前面提到的应用场景,如3D重建、障碍物检测和SLAM等,单目深度估计还可以应用于虚拟现实、增强现实、自动驾驶等领域。深度估计作为上游任务,为这些下游任务提供了重要的深度信息支持。\[2\]因此,单目深度估计在计算机视觉领域具有重要的研究和应用价值。 #### 引用[.reference_title] - *1* [单目深度估计梳理(1) -- 有监督学习之单任务篇](https://blog.csdn.net/qq_17027283/article/details/129351192)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [单目深度估计--深度学习篇](https://blog.csdn.net/weixin_43702653/article/details/123831009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值