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

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

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

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

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

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

相关文章

从零开始的 dbt 入门教程 (dbt cloud 自动化篇)

一、引 在前面的几篇文章中,我们从 dbt core 聊到了 dbt 项目工程化,我相信前几篇文章足够各位数据开发师从零快速入门 dbt 开发,那么到现在我们更迫切需要解决的是如何让数据更新做到定时化,毕竟作为开发我们肯定没有经历每天定…

【项目管理后台】Vue3+Ts+Sass实战框架搭建二

Vue3TsSass搭建 git cz的配置mock 数据配置viteMockServe 建立mock/user.ts文件夹测试一下mock是否配置成功 axios二次封装解决env报错问题,ImportMeta”上不存在属性“env” 统一管理相关接口新建api/index.js 路由的配置建立router/index.ts将路由进行集中封装&am…

GA遗传算法和ALNS算法的区别(我的APS项目七)

博主用最简单的方式告诉你遗传算法是什么,估计这是网上最简单的遗传算法入门教程了。首先我们先带入一个问题,我们要去9大城市旅游,想知道每个城市走一遍,总路程最短的出行顺序是什么? OK,题目我们已经明确…

Chrome 插件打包发布

插件打包发布 一、打包成 zip 包 最简单方便的一种其实就是打包成 zip 包,通过下载链接进行下载,在包里面通过设置版本号和数据库的版本号对比来提醒用户进行新包的下载。 二、发布到 Chrome 应用商店 1. 注册成为开发者 在发布到 chrome 应用商店之…

第八节:深入讲解SMB中的Http组件

一、概述 Http组作是SMB中的核心组件之一,在第七节中讲解了如何简洁的进行web程序部署和运行,这只是它的功能之一。在本节中,我们将介绍Http组件的重要属性。 二、请求头Request 1、支持方法 支持POST、GET、PUT、DELETE、OPTIONS等方法&a…

吴恩达深度学习笔记:神经网络的编程基础2.15-2.17

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第二周:神经网络的编程基础 (Basics of Neural Network programming)2.15 Python 中的广播(Broadcasting in Python)2.16 关于 python _ numpy 向量的说明&…

作为技术人员在日常工作中如何使用边界AICHAT工具

目录 1.1、解决日常问题1.2、编写日常程序1.3、优化日常工作中的代码1.4、边界AICHAT工具会员中心1.5、边界AICHAT工具普通用户的权益1.6、边界AICHAT工具超级永久会员的权益 有关边界AICHAT工具工具的介绍请参考之前的系列博文, 一款好用的AI工具——边界AICHAT&a…

【SpringSecurity】十六、OAuth2.0授权服务器、资源服务器的配置(理论部分)

文章目录 0、OAuth2服务端结构1、授权服务配置2、授权服务器 ⇒ 配置客户端详情3、授权服务器 ⇒ 管理令牌配置4、授权服务器:配置端点访问的安全约束5、资源服务器配置 相关📕: 【OAuth2授权服务器配置完整Demo】 0、OAuth2服务端结构 OAu…

微服务(基础篇-003-Nacos集群搭建)

目录 Nacos集群搭建 1.集群结构图 2.搭建集群 2.1.初始化数据库 2.2.下载nacos 2.3.配置Nacos 2.4.启动 2.5.nginx反向代理 2.6.优化 视频地址: 06-Nacos配置管理-nacos集群搭建_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p29&…

【Linux文本处理三剑客-grep、awk、sed】

grep, awk, 和 sed 是三个强大的文本处理工具,在Linux系统中广泛使用。每个工具都有其独特的特性和用法,下面我会对每一个工具进行简要的介绍和说明。 1.grep grep 是一个用于模式搜索的工具,它可以在文件或者标准输入中搜索包含特定模式的…

国内ip地址随意更换的潜在风险和策略

在数字化时代,IP地址是互联网通信的基础,而国内IP地址的随意更换可能带来一系列安全风险和问题。虎观代理小二将探讨国内IP地址随意更换的潜在影响以及如何有效应对这一挑战。 1.什么是国内IP地址? 国内IP地址是指在国内分配和使用的IP地址&…

边缘计算基础介绍及AKamai-linode产品分析

1、背景 随着互联网的发展,我们进入了大数据时代,这个时代也是移动互联网的时代,而且这个时代,大量的线下服务走到线上,随之而来的,比如外卖、叫车……于是,有各种各样的 App 和设备在收集你的…

对尾递归的理解,有哪些应用场景

文章目录 一、递归二、尾递归二、应用场景参考文献 一、递归 递归(英语:Recursion) 在数学与计算机科学中,是指在函数的定义中使用函数自身的方法 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身&am…

电子电器架构 —— 诊断数据DTC具体故障

电子电器架构 —— 诊断数据DTC具体故障 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师 (Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣…

qt5-入门-标签页部件QTabWidget-2-新增和删除标签页

参考: C GUI Programming with Qt 4, Second Edition 本地环境: win10专业版,64位,Qt5.12 上一篇: qt5-入门-标签页部件QTabWidget-1-CSDN博客 https://blog.csdn.net/pxy7896/article/details/136883359 目录 效果实…

机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】

目录 前言 一、什么是线性回归 二、什么是逻辑回归 三、基于Python 和 Scikit-learn 库实现线性回归 示例代码: 使用线性回归来预测房价: 四、基于Python 和 Scikit-learn 库实现逻辑回归 五、总结 线性回归的优缺点总结: 逻辑回归(Logistic…

WiFi已连接却不可上网是什么原因?

很多使用wifi上网的用户都遇到过这样的问题,就是电脑已经连接了wifi,但就是上不了网。着到底是怎么回事呢?今天,极客狗带大家一起来找找WiFi已连接却不可上网是什么原因,并给出对应的解决方。 原因分析: 可能是ip地址冲突所导致,也有可能是宽带出先故障,不妨试试下面的…

零基础入门数据挖掘系列之「特征工程」

摘要:对于数据挖掘项目,本文将学习应该从哪些角度做特征工程?从哪些角度做数据清洗,如何对特征进行增删,如何使用PCA降维技术等。 特征工程(Feature Engineering)对特征进行进一步分析&#xf…

Python - 深度学习系列30 - 使用LLaMA-Factory微调模型

说明 最实用的一种利用大语言模型的方式是进行微调。预训练模型与我们的使用场景一定会存在一些差异,而我们又不可能重头训练。 微调的原理并不复杂,载入模型,灌新的数据,然后运行再训练,保留checkpoints。但是不同项…

ExoPlayer架构详解与源码分析(12)——Cache

系列文章目录 ExoPlayer架构详解与源码分析(1)——前言 ExoPlayer架构详解与源码分析(2)——Player ExoPlayer架构详解与源码分析(3)——Timeline ExoPlayer架构详解与源码分析(4)—…