CVPR 2017|SfMLearner:单目视频中深度和姿态估计的无监督算法
创始人
2024-05-02 08:40:19
0

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

文章目录

    • 原理分析
    • 实施细节
    • 限制条件

image-20221228161301139

会议/期刊: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)

原理分析

image-20221228161620944

SfMLearner算法的原理:

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

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

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

    深度学习论文中的warp是指什么?
    warp就是将一个图像上的点变换到另一张图像上

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

实施细节

image-20221228103846238
  1. 将当前帧 𝐼𝑡𝐼_𝑡It​ 输入到 Depth CNN 并预测出当前帧的深度图DtD_tDt​

  2. 将其与邻近帧 𝐼𝑡−1𝐼_{𝑡−1}It−1​ 和 𝐼𝑡+1𝐼_{𝑡+1}It+1​ 组成邻近帧对 {𝐼𝑡,𝐼𝑡−1𝐼_𝑡 , 𝐼_{𝑡−1}It​,It−1​} 和 {𝐼𝑡,𝐼𝑡+1𝐼_𝑡 , 𝐼_{𝑡+1}It​,It+1​} 分别输入到 Pose CNN,预测出六个自由度的帧间位姿变化(rx,ry,rz,tx,ty,tzr_x,r_y,r_z,t_x,t_y,t_zrx​,ry​,rz​,tx​,ty​,tz​)。可以得到旋转矩阵 𝑹 和平移矩阵 𝒕。

    其中 R 为 3*3 的旋转矩阵,𝑡 = [𝑡𝑥,𝑡𝑦,𝑡𝑧][𝑡_𝑥 , 𝑡_𝑦 , 𝑡_𝑧 ][tx​,ty​,tz​],𝑹 和 𝒕 合成为一个 4 *4 位姿变化矩阵 𝑇𝑡→𝑠𝑇_{𝑡→𝑠}Tt→s​
    T=∣Rt0T1∣T=\left|\begin{array}{ll} \boldsymbol{R} & \boldsymbol{t} \\ \mathbf{0}^{T} & 1 \end{array}\right|{\color{Red} } T=​R0T​t1​

  3. 现在令 𝑝𝑡𝑝_𝑡pt​ 为当前帧齐次像素坐标系下的坐标,𝑝𝑠𝑝_𝑠ps​ 为邻近 帧齐次像素坐标系下的坐标,根据 CNN 预测出的当前帧深度图 𝑫𝑡𝑫_𝑡Dt​ 和帧间位姿 变化矩阵 𝑻𝑡→𝑠𝑻_{𝑡→𝑠}Tt→s​,可以得到 𝐼𝑡,𝐼𝑠𝐼_𝑡 , 𝐼_𝑠It​,Is​ 帧间映射关系:
    ps∼KTt→sDt(pt)K−1ptp_{s} \sim \boldsymbol{K} \boldsymbol{T}_{t \rightarrow s} \boldsymbol{D}_{t}\left(p_{t}\right) \boldsymbol{K}^{-1} p_{t}{\color{Purple} } ps​∼KTt→s​Dt​(pt​)K−1pt​
    其中𝑲 为相机内参矩阵,在本文实验中相机内参矩阵 𝑲 是已知的。下面对该映射关系公式进行分析

    当前帧的像素坐标系下坐标为ptp_tpt​,首先要将坐标从像素坐标系转换到成像坐标系,成像坐标系:𝑝𝑡’𝑝_𝑡 ’pt​’ ∼ 𝑲−1𝑝𝑡𝑲^{−1}𝑝_𝑡K−1pt​,然后要将坐标从成像坐标系转换成相机坐标系,相机坐标系:𝑝𝑡’’∼𝑫𝑡(𝑝𝑡)𝑝𝑡’𝑝_𝑡 ’’ ∼ 𝑫_𝑡 (𝑝_𝑡 )𝑝_𝑡 ’pt​’’∼Dt​(pt​)pt​’,即 𝑝𝑡’’∼𝑫𝑡(𝑝𝑡)𝑲−1𝑝𝑡𝑝_𝑡 ’’ ∼ 𝑫_𝑡 (𝑝_𝑡 )𝑲^{−1}𝑝_𝑡pt​’’∼Dt​(pt​)K−1pt​;此时坐标是三维坐标, 左乘位姿变化坐标就可以得到变换后的三维坐标:𝑝𝑠’=𝑻𝑡→𝑠𝑝𝑡’’𝑝_𝑠 ’ = 𝑻_{𝑡→𝑠}𝑝_𝑡 ’’ps​’=Tt→s​pt​’’;最后将变换后的三维坐标从相机坐标系转换到像素坐标系:𝑝𝑠∼𝑲𝑝𝑠’𝑝_𝑠 ∼ 𝑲𝑝_𝑠 ’ps​∼Kps​’,即:
    ps∼KTt→sDt(pt)K−1ptp_{s} \sim \boldsymbol{K} \boldsymbol{T}_{t \rightarrow s} \boldsymbol{D}_{t}\left(p_{t}\right) \boldsymbol{K}^{-1} p_{t} ps​∼KTt→s​Dt​(pt​)K−1pt​
    image-20221228205746276

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

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

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

    image-20221228204245125

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

    passat_sensors_920

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

    img

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

    image-20221228210223193

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

限制条件

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

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

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

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

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

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

image-20221228211454714

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

image-20221228211802739

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...