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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL表的增删改查---多表查询和联合查询

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

保研复习概率论1

1.什么是随机试验(random trial)? 如果一个试验满足试验可以在相同的条件下重复进行、试验所有可能结果明确可知(或者是可知这个范围)、每一次试验前会出现哪个结果事先并不确定,那么试验称为随机试验。 …

ssm+vue的消防物资存储系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的消防物资存储系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

PyQT5学习--新建窗体模板

目录 1 Dialog 2 Main Window 3 Widget Dialog 模板,基于 QDialog 类的窗体,具有一般对话框的特性,如可以模态显示、具有返回值等。 Main Window 模板,基于 QMainWindow 类的窗体,具有主窗口的特性,窗口…

重生奇迹mu弓箭手技能

1、弓箭手职业技能:多重箭:同时射出三发弓箭,给予复数敌人伤害,根据弓的不同,射出的数量也不同。天堂之箭:弓箭垂直射向天际,准确的落在敌人的头顶上,造成严重的伤害。 2、连技技能…

动态规划之数字三角形模型

题目:1015. 摘花生 思路 很经典的动态规划问题。 定义:v[i][j]表示位置是i,j的花生数量,f[i][j]表示走到位置i,j所能获得的最大花生数量。初始状态:f[1][1],目标状态:f[n][m]状态转移:由于题目规定只能向…

2024-03-24 需求分析-智能问答系统-调研

一. 需求列表 基于本地知识库的问答系统对接外围系统 数字人语音识别二. 待调研的公司 2.1 音视贝 AI智能外呼_大模型智能客服系统_大模型知识库系统_杭州音视贝 (yinshibei.com) 2.2 得助智能 智能AI客服机器人-智能电话机器人客服-电话电销机器人-得助智能 (51ima.com) 2…

Redis常见数据类型(1)

Redis提供了5种数据结构, 理解每种数据类型的特点对于Redis开发运维非常重要, 同时掌握每种数据类型的常见命令, 会在使用Redis的时候做到游刃有余. 内容如下: 预备知识: 几个全局命令, 数据结构和内部编码, 单线程机制解析. 5种数据类型的特点, 命令使用, 应用场景示例. 键遍历…

03-SparkSQL入门

0 Shark Spark 的一个组件,用于大规模数据分析的 SQL 查询引擎。Shark 提供了一种基于 SQL 的交互式查询方式,可以让用户轻松地对大规模数据集进行查询和分析。Shark 基于 Hive 项目,使用 Hive 的元数据存储和查询语法,并基于Hiv…

信号的小波包能量谱计算(以轴承振动信号为例,Python环境)

小波分析是近30年来发展起来的数学分支,是Fourier分析划时代发展的结果,由法国工程师Morlet首先提出,后广泛应用于信号处理、图像处理与分析、地震勘探、故障诊断、自动控制等领域,小波就是小的波形,所谓“小”是指它具…

备忘录导出的HTML文档转换MarkDown尝试记录

备忘录导出的HTML文档转换MarkDown尝试记录 1. pandoc命令行2. HTML转换MARKDOWN3. MD导入CSDN记录过长报错及压缩尝试参考 本地备忘录写了些旅游攻略,想做个纪念,导出为长图片ok,导出为HTML,也可以。但是导出图片是base64格式的&…

2、事件修饰符、双向绑定、style样式使用、v-for循环遍历、v-if 和 v-show

一、事件修饰符 1、.stop 阻止冒泡事件 给谁加了阻止冒泡事件&#xff0c;谁下面的盒子就不会执行了 <div id"app"><div class"parent" click"log3"><div class"child" click"log2"><button click.…

厨师上门服务小程序开发与运营指南

随着移动互联网的普及&#xff0c;各种生活服务类APP应运而生。厨师上门服务小程序作为一种新型的服务模式&#xff0c;为用户提供了便捷、个性化的餐饮服务。本文将为您介绍厨师上门服务小程序的开发与运营方法&#xff0c;帮助您快速搭建起一款实用的小程序。 一、小程序开发…

MyEclipse打开文件跳转到notepad打开问题

问题描述 windows系统打开README.md文件&#xff0c;每次都需要右键选择notepad打开&#xff0c;感觉很麻烦&#xff0c;然后就把README.md文件打开方式默认选择了notepad&#xff0c;这样每次双击就能打开&#xff0c;感觉很方便。 然后某天使用MyEclipse时&#xff0c;双击RE…

Linux系统——硬件命令

目录 一.网卡带宽 1.查看网卡速率——ethtool 网卡名 2.查看mac地址——ethtool -P 网卡名 二、内存相关 1.显示系统中内存使用情况——free -h 2.显示内存模块的详细信息——dmidecode -t memory 三、CPU相关 1.查看CPU架构信息——lscpu 2.性能模式 四、其他硬件命…

网络:DHCP 协议简介

文章目录 1. 前言2. DHCP 协议简介2.1 DHCP 客户端广播 DHCPDISCOVER 消息2.2 DHCP 服务器回复 DHCPOFFER 消息2.3 DHCP 客户端广播 DHCPREQUEST 消息2.4 DHCP 服务器回复 DHCPACK 消息2.5 剩余的工作 3. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&…

h5增强表单---数据列表和属性

h5增强表单---数据列表 下拉列表 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</ti…

Echarts功能记录

基础配置 工具箱toolbox 对应功能 案例中使用到的第三方脚本

力扣450 删除二叉搜索树中的节点 Java版本

文章目录 题目描述思路代码 题目描述 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除…

学生如何帮老师撰写审稿意见

开头先介绍这篇文章做了什么&#xff0c;达到了什么样的目的、有什么创新点、应用&#xff0c;然后第一段最后一句写上&#xff0c;如果你进行了如下补充&#xff0c;明确表达了相关内容等&#xff0c;就能够接收你的文章&#xff08;在我们暂时不想接收他的文章的情况下&#…