Consistent Video Depth Estimation - 时序一致的视频深度估计算法

2023-05-16

Paper name

Consistent Video Depth Estimation

Paper Reading Note

URL: https://arxiv.org/pdf/2004.15021.pdf
代码 URL:https://github.com/facebookresearch/consistent_depth

TL;DR

SIGGRAPH 2020 的文章,提出了一种基于视频的重建方案,结合基于深度学习的深度估计方法及传统的基于几何约束的方法,来得到准确和一致的深度;具体采用的方法是在测试时对单帧深度估计网络进行 finetune,让模型学会满足特定场景的几何约束,同时也保持合成合理深度的能力


Introduction

  • 基于手持的相机或手机采集到的视频进行场景的 3D 重建有重要的利用价值,比如可以进行视频特效处理、场景三维建模,然而难度也很大,典型问题有低纹理区域、重复纹理、遮挡以及视频采集可能带来的高噪声、抖动、运动模糊、 卷帘变形(rolling shutter deformations)、相邻帧 baseline 过小、运动物体等问题,所以传统方法一般效果都不太好,比如下图的 b (部分区域深度缺失)和 c(几何不连续、抖动的深度) 所示
    在这里插入图片描述
  • 传统重建方法(如 colmap)结合稀疏 sfm 和稠密 multi-view stereo,因为基线匹配中的噪声,通常会加入启发式平滑先验,这通常会导致受影响区域几何不正确,这些方法往往就直接将低置信度的区域丢弃了(上图b中的空洞)
  • 现在基于深度学习的方法在单帧上重建效果较好,能得到稠密的深度图,并且由于是单帧处理,也不会收到视频中运动物体的影响,然而这些方法在处理视频时产生的深度抖动较大,另外也存在不是米制的绝对深度(与绝对深度差一个 scale),这就导致了单帧方法在处理视频时有几何不一致问题。目前已有的视频深度估计方式无论是隐式得基于 RNN 的方法或者基于多视角重建的显式方法,都局限于静态场景建模
  • 本文提出了一种基于视频的重建方案,结合基于深度学习的深度估计方法及传统的基于几何约束的方法,来得到准确和一致的深度;具体采用的方法是在测试时对单帧深度估计网络进行 finetune,让模型学会满足特定场景的几何约束,同时也保持合成合理深度的能力

Dataset/Algorithm/Model/Experiment Detail

实现方式

在这里插入图片描述 整个 PPL 分为两个阶段:预处理、测试时训练

  • 预处理
    • 基于 colmap 进行传统的 SFM 重建,基于 Mask RCNN 过滤场景中的人来提升特征点提取与匹配的准确性,得到相机准确的内参与外参以及场景的稀疏点云
    • 基于光流估计不同帧之间的稠密匹配关系
  • 测试时训练
    • 对单帧深度估计模型进行 finetune,如上图所示,基于不同帧的稠密匹配关系采样匹配帧,将匹配帧送入单帧深度估计网络得到估计的深度图,通过对估计的深度图进行重投影,并对重投影结果的稠密匹配进行对比可以确认估计的深度图是否满足几何一致性,最后设计了 spatial loss 和 disparity loss 来对网络进行 finetune

预处理细节

  • scale 匹配: SFM(colmap) 与深度估计网络的 scale 一般是不匹配的,也即两者估计的深度的值域范围不同,这里通过调节 SFM 的 scale 来进行匹配,因为只需要简单在相机内参上乘上一个 sacle,匹配方式为对每张深度图进行中值对齐配准:
    在这里插入图片描述
    其中 D i N N D_{i}^{NN} DiNN 为深度估计网络得到的深度, D i M V S D_{i}^{MVS} DiMVS 为 colmap 产生的深度, D(x) 代表 pixel x 处的深度
    • 整体 scale 就是对所有深度图 scale 取平均
      在这里插入图片描述
    • 对相机内参进行更新
      在这里插入图片描述
  • 匹配帧选取: 因为直接选取所有匹配对是 O(N2) 的时间复杂度,所以这里采用的是对相邻帧及逐步稀疏采样的帧进行光流计算,从而在 O(N) 时间复杂度下处理
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 光流计算: 这里光流计算需要先基于 homography warp 保证匹配帧之间的重合区域足够多,从而确保光流估计的效果;为了处理运动物体及遮挡问题,这里使用前向后向一致性检查:移除前向-后向误差大于 1 pixel 的像素
    • 另外移除 overlap 太小的匹配帧:有效像素匹配小于 20%

测试时训练

  • Geometric loss
    1. 基于光流得到匹配帧 i,j 之间的对应关系
      在这里插入图片描述
    2. 将 i 帧中的点基于内参和深度映射到相机坐标系中
      在这里插入图片描述
    3. 将 i 帧相机坐标系中的点通过相机外参转换到 j 帧的相机坐标系中
      在这里插入图片描述
    4. 将 i 帧中转换到 j 帧的点重新映射会图像坐标系
      在这里插入图片描述
    • image-space loss(图像空间损失):即对比光流映射得到的图像像素( f i → j ( x ) f_{i \to j}(x) fij(x) )与基于重投影得到的像素( p i → j ( x ) p_{i \to j}(x) pij(x) )计算 L2 损失
      在这里插入图片描述

    • disparity loss(视差损失): 约束不同相机坐标系下的视差一致,也即希望同一个空间点在不同帧预测的深度图中深度保持一致(几何一致性)
      在这里插入图片描述
      其中 u i u_{i} ui 是 i 帧的焦距, z i z_{i} zi z i → j z_{i \to j} zij 分别是是将 i 帧相机坐标系与 i 到 j 的 z 分量 (深度)

  • 整体损失:
    在这里插入图片描述

实验结果

  • finetune 设置:一般训练 20 epoch,对于 244 帧的视频,在 4 NVIDIA Tesla M40 上需要训练 40 min

自采集数据实验

  • 因为现有数据集主要是合成场景,特定场景(自动驾驶),单张图片,静态场景的视频,所以这里使用了自采集的数据集,4个静态场景,3个动态场景
    • 注意采集设备是 stereo 相机,后续会利用右目数据及 stereo disparity 进行评测

在这里插入图片描述

  • 评价指标设定

    • Photometric error Ep : 利用左图估计的深度转换为视差,将左图的像素映射到右图上,计算 photometric loss
      • 单目深度尺度不确定性是通过将深度与 stereo disparity 的 scale 、shift进行对齐,stereo disparity 是利用了光流网络预测值的水平分量,对齐方式是基于 RANSAC 的线性回归
    • Instability Es : 衡量时序帧预测的稳定性,方式是基于 KLT tracker 得到 2D 的 track,基于预测的深度、相机内参、camera pose 映射到 3D 中对比映射点的稳定性,理论上同一个 track 映射到 3D 中应该是一个固定的点(注:这里值计算所有相邻帧的映射偏差)
    • Drift Ed:上面的指标 Es 只计算相邻帧的映射偏差,这里会以所有帧映射到 3D 的 track 的协方差矩阵的最大特征值作为评测指标,评测随着时间增加造成的累积误差
  • 对比实验结果
    在这里插入图片描述

  • 消融实验
    在这里插入图片描述

  • 仅用相邻帧的效果不如使用长时间约束的好
    在这里插入图片描述

  • 有了时序一致性较好的深度,可以支持更好的 CG 合成效果

在这里插入图片描述

公开数据集实验

  • 可视化(第一列是原图,第二列是通过时空体积的扫描线切片)
    在这里插入图片描述
  • 公开数据集点一般,据说主要是光流估计不太准(KITTI车前向移动较大),使用 monodepth2 作为基础网络,可以看到也没怎么掉点(作者具体调查发现在 80%的帧都是涨点的,视频可视化效果也是更好,但就是点更低,因为 COLMAP 生成的 camera pose 在动态目标下不够准,所以 finetune 后部分帧效果明显变差)
    在这里插入图片描述在这里插入图片描述
  • ScanNet 数据集下可以相比于 baseline 涨点

在这里插入图片描述

Thoughts

  • 以前的时序一致性约束的根本原理主要是在时序上增加时序一致性的 loss,比如深度估计里面基于 RNN 的隐式一致性约束,或基于光流的显示一致性约束,这里直接希望学习到的时序深度能满足几何空间的一致性约束,显然是更直接有效的约束方式
  • 预处理中众多繁琐的操作都是希望测试时训练的数据尽量准确,保证 finetune 时的数据准确性很关键
  • 其中 kitti 数据集相比于 pretrain 模型掉点作者给的解释方法值得借鉴,证明了该方法能在 80% 的帧涨点,只是剩下 20% 数据的掉点更严重导致了整体掉点
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Consistent Video Depth Estimation - 时序一致的视频深度估计算法 的相关文章

  • 如何在 iOS 和 macOS 上的 Safari 中使用网络摄像头录制视频?

    我已经发布了几条路径 1 录制视频https caniuse com feat html media capture https caniuse com feat html media capture但它仅适用于 iOS 并且无法自定义 我
  • 视频作为网站背景? HTML 5

    我想使用视频作为背景 而不是自动拉伸到整个屏幕 背景 的图像 我还想旋转视频和图像 以便以任何顺序显示随机视频 图像 如果知道如何延迟视频播放 以便视频在网站加载后 30 秒只播放一次 那就太好了 thx 看看我的 jquery video
  • 加载视频数据集(Keras)

    我正在尝试实现 LRCN C LSTM RNN 来对视频中的情绪进行分类 我的数据集结构分为两个文件夹 train set 和 valid set 当你打开其中任何一个时 你可以找到3个文件夹 积极 消极 和 惊喜 最后 这 3 个文件夹中
  • ffmpeg通过添加框或边框来扩展(而不是调整大小)视频大小

    假设我有一个特殊分辨率的视频 例如 1280x718 我想将其更改为 1280x720 但我宁愿只在顶部和底部添加一行 而不是将 718 像素垂直插值到 720 所以基本上 我正在寻找一种方法告诉 ffmpeg 创建 1280x720 的输
  • 如何在 Angular2 中嵌入视频?

    我想开发单页应用程序 它是一个视频门户 用户可以登录 查看视频列表 导航到单个视频 对视频进行评分 并可以执行所有媒体相关任务 例如 播放 暂停 调整音量和寻找视频位置 既然有
  • 是否可以使用 S3 进行 Flash 伪流?

    我一直在使用 S3 来存储和提供 FLV 和 MP4 视频 它效果很好 但内容是渐进下载的 我想知道是否有可能让所谓的 伪流 与 S3 一起使用 伪流允许观看者在下载完整视频之前在视频中向前搜索 并仅将必要的位发送到 Flash 播放器 我
  • 如何使用 ffmpeg 提取时间精确的视频片段?

    这并不是一个特别新的问题领域 但我已经尝试过那里建议的内容 但运气不佳 那么 我的故事 我有一大段 15 秒的直接来自camera mov 视频 我想从中提取特定的块 我可以通过开始时间和停止时间 以秒为单位 来识别该块 我首先尝试执行我称
  • 如何获取优酷access_token

    我在哪里可以找到access token refresh token在我的优酷账号里 我找到了如何使用外部脚本通过 API 将视频上传到 youku com 但我需要access token refresh token使用它 您需要对优酷应
  • 当 mp4 是唯一来源时,自定义 HTML5 视频控件不起作用

    问题 我只有一个视频源 mp4 因为我正在尝试向 tumblr 视频添加自定义控件 如果只有mp4作为源video duration返回为NaN 作为使用 3 个源 mp4 webm ogg 时的测试 它可以工作 所以video durat
  • 在 ffmpeg 中,如何使用scale2ref 过滤器缩放 dvdsub 字幕以匹配视频大小?

    我有一个从直播电视录制的 mpeg 文件 其中包含视频以及多个音频和字幕流 我的最终目标是能够创建较小的视频文件 因为 mpeg 文件大小为数 GB 我在这条道路上的第一步只是能够选择视频 音频和字幕流中的每一个并将它们复制到 mkv 文件
  • Android 从 C++ 端播放原始音频

    我需要能够在 Android 系统的 C 端以自定义文件格式传输音频 我正在致力于移植自定义媒体播放器 并且需要能够打开自定义文件并从中传输音频 这很重要 因为我认为从性能角度来看将整个播放器移植到 JAVA 是不可行的 并且通过 JNI
  • Android-全屏视频视图

    我正在尝试使此 VideoView 以全屏模式显示 public class ViewVideo extends Activity private String filename private static final int INSER
  • FFmpeg - 来自 NodeJS 的 RTMP 流,流比实时更快

    我的目标是在 Node 中渲染画布 并将该画布流式传输到 RTMP 服务器 最终是 Twitch 但现在我正在在本地 RTMP 服务器上测试 流式传输到 RTMP 的标准方式似乎是ffmpeg 所以我使用它 从 NodeJS 中作为子进程生
  • 使用 Vlc DotNet 库显示视频

    我在 Visual Studio 2012 中制作了一个 C Windows 窗体应用程序 并从该网页添加了 dll http vlcdotnet codeplex com http vlcdotnet codeplex com 我已经获得
  • 如何在 cv2.VideoWriter 中使用 FPS 参数?

    好的 所以我正在制作视频 我想确切地知道如何使用 FPS 参数 它是一个浮点数 所以我假设这是我想要的每帧之间的间隔 你能给个例子吗 我只想知道视频会如何随着 FPS 参数值的变化而变化 因为我制作的视频现在太快了 谢谢 确实只是这样 fr
  • 如何改变HTML5视频的播放速度?

    如何更改 HTML5 中的视频播放速度 我查过视频标签的属性 https www w3schools com html html5 video asp在 w3school 但无法做到这一点 根据这个网站 http www chipwreck
  • 在 Android 上提取/修改视频帧

    我有一个视频文件 我想获取视频的每一帧并对帧进行一些修改 例如在其中绘制另一个位图 放置一些文本等 Android 中是否有任何 API 框架可用于从视频中获取帧 我在 iOS 中使用他们的 AVFramework 做了类似的事情 如果可以
  • iOS:AVPlayer 视频预加载

    我正在使用 AVPlayer 来播放视频 它们的长度很短 2 5秒 它们以随机顺序播放 问题是 当更改视频并开始播放新视频时 设备会滞后很短的时间 但我不希望更改流畅 有没有办法用 AVPlayer 预加载视频 尝试使用AVQueuePla
  • 在 HTML5 中设置视频高度

    也许这是一个简单的问题 但它真的让我发疯 我只想设置 HTML5 视频的高度和宽度 我正在使用这段代码
  • 在 Twitter 上上传视频的最佳方式

    我必须从我的 java 应用程序将视频上 传到 Twitter 发布带有视频的推文文本 我使用 twitter4j 上传图像 效果很好 我对上传视频的最佳方式感到困惑 我在这个链接中找到了https github com mrisney t

随机推荐

  • 云计算思维导图

    根据近期的云计算学习心得 xff0c 将云计算部分内容制作成思维导图 xff0c 方便于广大云计算学习者作为辅导讲义 xff01 思维导图内容主要包含 xff1a 1 云计算概述 2 云体系结构 3 网络资源 4 存储资源 5 硬件介绍 6
  • 路由器重温——串行链路链路层协议积累

    对于广域网接口来说 xff0c 主要的不同或者说主要的复杂性在于理解不同接口的物理特性以及链路层协议 xff0c 再上层基本都是 IP 协议 xff0c 基本上都是相同的 WAN口中的serial接口主要使用点对点的链路层协议有 xff0c
  • 路由器重温——PPPoE配置管理-2

    四 配置设备作为PPPoE服务器 路由器的PPPoE服务器功能可以配置在物理以太网接口或 PON 接口上 xff0c 也可配置在由 ADSL 接口生成的虚拟以太网接口上 1 配置虚拟模板接口 虚拟模板接口VT和以太网接口或PON接口绑定后
  • Python入门自学进阶——1--装饰器

    理解装饰器 xff0c 先要理解函数和高阶函数 首先要明白 xff0c 函数名就是一个变量 xff0c 如下图 xff0c 定义一个变量名和定义一个函数 xff0c 函数名与变量名是等价的 既然函数名就是一个变量名 xff0c 那么在定义函
  • Python入门自学进阶-Web框架——21、DjangoAdmin项目应用

    客户关系管理 以admin项目为基础 xff0c 扩展自己的项目 一 创建项目 二 配置数据库 xff0c 使用mysql数据库 xff1a 需要安全mysqlclient模块 xff1a pip install mysqlclient D
  • Python入门自学进阶-Web框架——33、瀑布流布局与组合查询

    一 瀑布流 xff0c 是指页面布局中 xff0c 在显示很多图片时 xff0c 图片及文字大小不相同 xff0c 导致页面排版不美观 如上图 xff0c 右边的布局 xff0c 因为第一行第一张图片过长 xff0c 第二行的第一张被挤到第
  • Python入门自学进阶-Web框架——34、富文本编辑器KindEditor、爬虫初步

    KindEditor 是一个轻量级的富文本编辑器 xff0c 应用于浏览器客户端 一 首先是下载 xff1a http kindeditor net down php xff0c 如下图 下载后是 解压缩后 xff1a 红框选中的都可以删除
  • Python入门自学进阶-Web框架——35、网络爬虫使用

    自动从网上抓取信息 xff0c 就是获取相应的网页 xff0c 对网页内容进行抽取整理 xff0c 获取有用的信息 xff0c 保存下来 要实现网上爬取信息 xff0c 关键是模拟浏览器动作 xff0c 实现自动向网址发送请求 xff0c
  • 6、spring的五种类型通知

    spring共提供了五种类型的通知 xff1a 通知类型接口描述Around 环绕通知org aopalliance intercept MethodInterceptor拦截对目标方法调用Before 前置通知org springfram
  • 路由器接口配置与管理——1

    路由器的接口相对于交换机来说最大的特点就是接口类型和配置更为复杂 xff0c 一般吧路由器上的接口分为三大类 xff1a 一类用于局域网的LAN接口 xff0c 一类用于广域网接入 互联的WAN接口 xff0c 最后一类可以应用于LAN组网
  • 路由配置与管理——静态路由配置与管理

    静态路由是一种最简单的路由 xff0c 需手工配置 xff0c 用一条指令指定静态路由的目的IP地址 子网掩码 下一跳IP地址 xff0c 或者出接口 优先级等主要参数值就可以了 还可根据实际需要配置静态路由与BFD或者NQA的联动 一 路
  • TCP实现局域网通信

    TCP实现局域网通信 TCP客户端通信步骤 xff1a 1 xff1a 创建套接字 sockfd 61 socket AF INET SOCK STREAM 0 2 xff1a 填写服务器结构体信息 span class token key
  • 路由策略和策略路由配置与管理-1

    路由策略和策略路由配置与管理 路由策略 与 策略路由 之间的区别就在于它们的主体 xff08 或者说 作用对象 xff09 不同 xff0c 前者的主体是 路由 xff0c 是对符合条件的路由 xff08 主要 xff09 通过修改路由属性
  • IP组播基础及工作原理——1

    IP组播在一些多用户定向发送的网络应用中使用非常普遍 xff0c 如远程多媒体会议 远程教学 视频点播 定向电子商务 xff0c 以及ISP的IPTV xff08 网络电视 xff09 等 学好IP组播基础知识及配置与管理方法 xff0c
  • IP组播配置与管理实战——1

    IGMP 配置与管理 IGMP xff08 InternetGroup Management Protocol xff0c 因特网组管理协议 xff09 是TCP IP 协议族 中负责IPv4组播成员管理 的协议 xff0c 需要在组播组成
  • Linux:利用返回值传出参数,地址传递,值传递,使用回调函数赋值几个例程。

    利用返回值传出参数 xff0c 地址传递 xff0c 值传递 使用回调函数赋值几个例程 代码 xff1a include lt stdlib h gt include lt stdio h gt include lt unistd h gt
  • 一步一步实现多尺度多角度的形状匹配算法(C++版本)

    前言 用过halcon形状匹配的都知道 xff0c 这个算子贼好用 xff0c 随便截一个ROI做模板就可以在搜索图像中匹配到相似的区域 xff0c 并且能输出搜索图像的位置 xff0c 匹配尺度 xff0c 匹配角度 现在我们就要利用op
  • 查看麒麟操作系统版本

    root 64 tbase01 nkvers Kylin Linux Version Release Kylin Linux Advanced Server release V10 Tercel Kernel 4 19 90 23 8 v2
  • Parallax-tolerant Image Stitching - 解决大视差图片拼接的方法

    Paper name Parallax tolerant Image Stitching Paper Reading Note URL http web cecs pdx edu fliu papers cvpr2014 stitching
  • Consistent Video Depth Estimation - 时序一致的视频深度估计算法

    Paper name Consistent Video Depth Estimation Paper Reading Note URL xff1a https arxiv org pdf 2004 15021 pdf 代码 URL xff1