CVPR 2017|SfMLearner:单目视频中深度和姿态估计的无监督算法

简介: 将相邻帧(包括当前帧、上一帧、下一帧)输入Pose CNN,得到旋转矩阵R和平移矩阵T,预测相机的位姿变化

🏆作者提出了一个单目相机的视频序列进行深度估计与运动估计,作者的方法是完全无监督的,端到端的学习,作者使用了单视角深度网络和多姿态网络,提出了一个图像(predict)与真实的下一帧(goundturth)计算loss,作为无监督的依据,实现无监督学习。使用KITTI数据集证明了他们的有效性:1.合成的深度图与监督学习的方法是可比的;2. 在可比较的输入设置下,姿势估计与已建立的SLAM系统相比性能优越


b75af4c7b41eadde74bcc551da94e669.png


会议/期刊:CVPR2017


论文题目:《Unsupervised Learning of Depth and Ego-Motion from Video》


论文链接Unsupervised Learning of Depth and Ego-Motion from Video (arxiv.org)


开源代码:tinghuiz/SfMLearner: An unsupervised learning framework for depth and ego-motion estimation from monocular videos (github.com)


原理分析


eb08018bdb2a0e28a754d6308985fe4b.png


SfMLearner算法的原理:


  • 利用Depth CNN对当前图像进行深度估计,得到当前图像的深度图


  • 将相邻帧(包括当前帧、上一帧、下一帧)输入Pose CNN,得到旋转矩阵R和平移矩阵T,预测相机的位姿变化


  • 将1、2得到的当前深度图和相邻帧对的R、T矩阵,计算出当前帧和下一帧的映射关系,然后将当前帧warp到下一帧


深度学习论文中的warp是指什么?


warp就是将一个图像上的点变换到另一张图像上


  • 最后将warp出来的图像(predict)与真实的下一帧(goundturth)计算loss,作为无监督的依据,实现无监督学习


实施细节


image-20221228103846238.png


1.将当前帧 𝐼 𝑡 输入到 Depth CNN 并预测出当前帧的深度图D t


2.将其与邻近帧 𝐼 𝑡 − 1 和 𝐼 𝑡 + 1 组成邻近帧对 {𝐼 𝑡 , 𝐼 𝑡 − 1  } 和 {𝐼 𝑡 , 𝐼 𝑡 + 1 } 分别输入到 Pose CNN,预测出六个自由度的帧间位姿变化(r x , r y , r z , tx,ty,tz)。可以得到旋转矩阵 𝑹 和平移矩阵 𝒕。


其中 R 为 3*3 的旋转矩阵,𝑡 = [ 𝑡 𝑥 , 𝑡 𝑦 , 𝑡 𝑧 ] ,𝑹 和 𝒕 合成为一个 4 *4 位姿变化矩阵 𝑇 𝑡 → 𝑠


image.png


3.现在令 𝑝 𝑡为当前帧齐次像素坐标系下的坐标,𝑝 𝑠 为邻近 帧齐次像素坐标系下的坐标,根据 CNN 预测出的当前帧深度图 𝑫 𝑡 和帧间位姿 变化矩阵 𝑻 𝑡 → 𝑠 ,可以得到 𝐼 𝑡 , 𝐼 𝑠  帧间映射关系:


image.png


其中𝑲 为相机内参矩阵,在本文实验中相机内参矩阵 𝑲 是已知的。下面对该映射关系公式进行分析


当前帧的像素坐标系下坐标为p t ,首先要将坐标从像素坐标系转换到成像坐标系,成像坐标系:𝑝 𝑡 ’ ∼ 𝑲 − 1 𝑝 𝑡  ,然后要将坐标从成像坐标系转换成相机坐标系,相机坐标系:𝑝 𝑡 ’’ ∼ 𝑫 𝑡 ( 𝑝 𝑡 ) 𝑝 𝑡 ’,即 𝑝 𝑡 ’’ ∼ 𝑫 𝑡 ( 𝑝 𝑡 ) 𝑲 − 1 𝑝 𝑡;此时坐标是三维坐标, 左乘位姿变化坐标就可以得到变换后的三维坐标:𝑝 𝑠 ’ = 𝑻 𝑡 → 𝑠 𝑝 𝑡 ’’;最后将变换后的三维坐标从相机坐标系转换到像素坐标系:𝑝 𝑠 ∼ 𝑲 𝑝 𝑠 ’,即:


image.png

25fb07b690881595ae5a55005bc6d1cb.png


参考链接:https://blog.csdn.net/qq_46058802/article/details/126227358

像素坐标系像素坐标系的原点在左上角,并且单位为像素。比如一张224*224的图片,它的原点就在左上角的地方,然后x轴长224,y轴长224


成像坐标系:图像坐标系的坐标原点是成像平面的中心。例如:红色圈出来的区域,即是图像坐标系, 红色的原点,可以记为图像坐标系的原点


43ae9287f0aa15e523d53577816a3b2d.png


相机坐标系:下图红色坐标轴表示的,即是一个相机坐标。 与世界坐标非常像,只是世界坐标的原点是固定的,而相机坐标的原点,可以是任意的相机位置


passat_sensors_920.png


😎世界坐标、相机坐标、图像坐标和像素坐标的关系:


582e708e4f29460b9615175dd14b6b24.png


4.最后,得到了帧间的像素级映射关系后,我们就可以像光流一样进行帧间的 warp 操作


003f11f7ef3a01d819cd063bc4f58108.png


图中当前帧 𝐼 𝑡 上的像素点 𝑝 𝑡可以根据预测出的深度图和位姿变化矩阵,映射到 邻近帧 𝐼 𝑠上的 𝑝 𝑠 点。该映射后的点不一定会刚好映射到 𝐼 𝑠 的像素点上,而是大概率如图中一样,映射到由 𝐼 𝑠 上的image.png四个像素点组成的方格里。因 此这里和 DFF 的 warp 操作一样,要用双线性插值算法,求出 𝑝 𝑠  的值,再将此值 返回给当前帧 𝐼 𝑡  的像素点 𝑝 𝑡 ,从而完成 warp 操作


限制条件


1.图片中没有运动的对象,场景是静态的


2.目标视图和源视图之间没有遮挡


3.表面是朗伯型的,使得光一致性误差是有意义的


朗伯面是指在一个固定的照明角度下从所有视场方向上观测都具有相同亮度的表面,也就是反射亮度是一个常数。理想朗伯面是物体表面对入射光进行完全的反射,吸收率为0


为了提高对第一点因素(图片中没有运动的对象,场景是静态的)的抗性,作者额外训练了一个解释模型。输出一个像素级的粗糙蒙版(掩码),用来过滤掉会运动的物体,该 mask 用于 loss 计算的时候,对运动 的物体赋予一个较小的权重,对背景区域赋予一个较大的权重,以实现让网络自动屏蔽掉对场景变换估计有干扰的区域


在下图中,Pose CNN和解释模型共享前面的解码器流程,然后分别扩展到预测6-DOF相对姿势和多尺度可解释性掩码两个分支网络。经过红色网络的即是解释模型


31a492ca3da810452536cf15b444e789.png


高亮的部分就是估计出来运动的对象,该块像素会被赋予一个比较低的权重计算loss


1fc9f3e01b44aa9ccd8a03b043e89a6d.png

相关文章
|
5天前
|
算法 安全 数据库
基于结点电压法的配电网状态估计算法matlab仿真
**摘要** 该程序实现了基于结点电压法的配电网状态估计算法,旨在提升数据的准确性和可靠性。在MATLAB2022a中运行,显示了状态估计过程中的电压和相位估计值,以及误差随迭代变化的图表。算法通过迭代计算雅可比矩阵,结合基尔霍夫定律解决线性方程组,估算网络节点电压。状态估计过程中应用了高斯-牛顿或莱文贝格-马夸尔特法,处理量测数据并考虑约束条件,以提高估计精度。程序结果以图形形式展示电压幅值和角度估计的比较,以及估计误差的演变,体现了算法在处理配电网状态估计问题的有效性。
|
9天前
|
机器学习/深度学习 自然语言处理 算法
m基于深度学习的OFDM+QPSK链路信道估计和均衡算法误码率matlab仿真,对比LS,MMSE及LMMSE传统算法
**摘要:** 升级版MATLAB仿真对比了深度学习与LS、MMSE、LMMSE的OFDM信道估计算法,新增自动样本生成、复杂度分析及抗频偏性能评估。深度学习在无线通信中,尤其在OFDM的信道估计问题上展现潜力,解决了传统方法的局限。程序涉及信道估计器设计,深度学习模型通过学习导频信息估计信道响应,适应频域变化。核心代码展示了信号处理流程,包括编码、调制、信道模拟、降噪、信道估计和解调。
31 8
|
6天前
|
数据采集 算法 安全
CVPR 2024:给NeRF开透视眼!稀疏视角下用X光进行三维重建,9类算法工具包全开源
【6月更文挑战第28天】CVPR 2024亮点:SAX-NeRF框架开源!融合X光与NeRF,提升3D重建效果。X3D数据集验证,Lineformer+MLG策略揭示物体内部结构,增强几何理解。虽有计算成本及泛化挑战,但为计算机视觉和医学影像开辟新路径。[论文链接](https://arxiv.org/abs/2311.10959)**
27 5
|
5天前
|
算法
m基于GA遗传优化的高斯白噪声信道SNR估计算法matlab仿真
**MATLAB2022a模拟展示了遗传算法在AWGN信道中估计SNR的效能。该算法利用生物进化原理全局寻优,解决通信系统中复杂环境下的SNR估计问题。核心代码执行多代选择、重组和突变操作,逐步优化SNR估计。结果以图形形式对比了真实SNR与估计值,并显示了均方根误差(RMSE),体现了算法的准确性。**
13 0
|
7天前
|
传感器 算法
技术心得记录:四元数及姿态解算Mahony算法
技术心得记录:四元数及姿态解算Mahony算法
12 0
|
14天前
|
存储 算法 Java
面试高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 二分 + 哈希表 + 堆 + 优先队列 合集
面试高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 二分 + 哈希表 + 堆 + 优先队列 合集
|
2月前
|
算法 计算机视觉
基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真
该内容是关于使用MATLAB2013B实现基于高斯混合模型(GMM)的视频背景提取和人员跟踪算法。算法通过GMM建立背景模型,新帧与模型比较,提取前景并进行人员跟踪。文章附有程序代码示例,展示从读取视频到结果显示的流程。最后,结果保存在Result.mat文件中。
|
2月前
|
算法
视频讲解|基于多目标粒子群算法的配电网储能选址定容
视频讲解|基于多目标粒子群算法的配电网储能选址定容
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
|
2月前
|
机器学习/深度学习 算法 搜索推荐
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(上)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例