提出一种算法——重构单眼视频中所有像素的稠密的几何一致的深度,其利用了传统的SFM(从运动中重构)来建立视频中像素的几何约束。与经典重建中的特殊先验不同的是,本文使用的是基于学习的先验(如:训练卷积神经网络来估计单张图像的深度)。在测试阶段,微调网络来满足特定输入视频的几何约束,同时保留其在约束较少的视频部分来合成看似合理的深度细节。定量分析,方法确实比以往的单眼重构方法具有更高的精度和更高的几何一致性。可视化的情况下,本文的结果也似乎更为稳定。本文的算法能够处理-手拍的中等程度运动的视频。面向的应用包括场景重建、视觉特效等。
利用图像序列进行三维场景重建的研究屡见不鲜。最初,视频中的运动所带来的场景结构的估计不稳定,即模型鲁棒性差,使其只能在实验环境下,即具有高度校准和可预测的设置,才能表现良好。有时甚至产生的是稀疏结构(如:解决只跟踪一些孤立点的深度)。随后,由于高质量的开源重建系统和基于学习的技术的最新进展,从更随便得到的视频中,产生更密集的结构得到了良好的进展。
3D重建最简单的输入来源就是手机视频,其最为普遍。如果能从这样的输入中实现完全密集和准确的重建,这将是非常有用的——然而,这个过程是相当困难的。
任何图像重构系统都存在必须处理的典型问题,如纹理较差的区域、重复图案、遮挡;视频还存在更多的难题,比如更高的噪声等级、震动、运动模糊、滚动快门变形、相邻帧之间的小基线,包括动态的物体,比如人。因此,研究中总会遇到各种各样的问题,比如在深度图中缺失区域(b)、不一致的几何形状以及闪烁(c)等。

传统的方法:稀疏的SFM+密集的多视图点云——本质上匹配极线的补丁,如果匹配正确时,可以实现几何上准确的重建。但是,由于前面提到的复杂性,匹配通常是有噪声的,通常需要使用启发式平滑先验进行正则化。这通常会导致受影响区域出现不正确的几何形状,因此许多方法以低置信度完全丢弃像素,在重建中留下“洞”(如b1)。
最近,基于学习的单张图像方法得到巨大进展。这样就能摈弃启发式正则化(heuristic regularization),直接从数据中学习场景的先验,这样可以更好地在传统重建方法中,对先前弱甚至错误的部分能够进行更好地合成场景的可信深度。尤其,在重建动态场景方面表现出色,因为从单帧的角度,静态对象和动态对象是相同的。但是,如果对每帧都进行独立的处理,那么估计的深度经常不规律地闪烁,而且它也不是度量的,(即与单张缩放因子的真实深度无关),这实际上就是视频重建时几何上的不一致,就好像物体随相机在晃动,而不是在真实场景运动。
视频深度估计的方法有哪些呢?
但是,解决的主要是静态场景。(静态场景还能算视频???小赵困惑,先留疑)
文章就提出了他们的方法:一种新的基于视频的重构系统——结合了传统方法的优势+基于学习的技术。具体而言:利用传统获得几何约束的方法,实现精确、一致的深度,利用基于学习的先验来合理的填充前者弱约束区域的方法。在测试时微调单个图像深度估计网络的权值,以便它学习满足特定场景的几何形状,同时保持其在必要时合成可信的新深度细节的能力。我们的测试时间训练策略允许我们同时使用短期和长期的约束,防止随时间的漂移。
结果:所得到的深度视频是完全密集和详细的,有清晰的物体边界。整个视频满足几何一致性,从而无闪烁出现。

1 Supervised monocular depth estimation——有监督的单眼深度估计
本文的方法建立在单图像深度估计的最新进展的基础上,进一步提高了视频深度估计的几何一致性。
2 Self-supervised monocular depth estimation——自监督的单眼深度估计
3 Multi-view reconstruction——多视点重建
相比之下,我们的方法产生密集的深度,即使存在中等程度的动态场景运动。
4 Depth from video——视频深度
相比之下,虽然本文也利用了来自多视图几何的约束,但深度是从(微调的)单图像深度估计模型中估计的,从而自然地处理动态对象,而不需要显式的运动分割。
5 Temporal consistency——时间一致性
本文工作的不同之处在于,目标是从一个几何一致的视频中产生深度估计。这对于随意捕捉的视频尤其重要,因为随着时间的推移,实际的深度可能在时间上不一致。
6 Depth-aware visual effects——深度感知视觉效果
本文工作从随意捕获的视频实现深度一致的估计,能够实现视频特效。
7 Test-time training——测试时间训练
与以往的方法相比,我们的方法以更高的时间平滑度实现了精确和详细的重建,这对许多基于视频的应用非常重要。
除了这些目标之外,本文的方法和之前的方法之间还有一些重要的技术差异。前人的方法执行一个二进制对象级分割,并估计每个对象的刚性转换。这适用于刚性物体,如街景中的汽车,但不适用于高度变形的物体,如人。也有人使用了一个类似于本文的几何损失,然而,它们只对连续的帧对和相对姿态进行训练。本文使用绝对的姿态和长期的时间连接,消融实验证明了其对获得良好的结果是至关重要的。

本文的方法以单目视频作为输入,并估计每个视频帧的相机姿态以及密集的、几何上一致的深度图(达到比例模糊度)。术语几何一致性不仅意味着深度映射不会随时间而闪烁,而且还意味着所有的深度映射都是相互一致的。也就是说,可以通过像素的深度和相机姿态在帧之间精确地投射像素。例如,一个静态点的所有观测结果都应该映射到世界坐标系中的一个共同的3D点,而不会发生漂移。
当输入视频是随意捕获的,其深度估计具有很多挑战特性。因为它们经常是用手持、未校准的相机拍摄,拍摄的视频存在运动模糊和滚动快门变形。恶劣的照明条件可能会导致噪音水平的增加和额外的模糊。最后,这些视频通常包含动态移动的物体,如人和动物,从而打破了许多为静态场景设计的重建系统的核心假设。
传统方法:正如在前面几节中解释的,在场景中有问题的部分,传统的重建方法通常会产生“洞”(或者,如果被迫返回结果,估计非常嘈杂的深度)。但是,在这些方法有足够的信心返回结果的领域,它通常是相当准确和一致的,因为它们强烈依赖于几何约束。
基于学习方法:最近基于学习的方法具有互补特性,这些方法可以很好地处理上述的挑战,因为它们利用强大的数据驱动,然后从任何输入图像预测可信的深度映射。然而,这些方法对每个帧都独立地处理,会导致几何上不一致和时间闪烁的结果。
本文的想法是结合这两种方法的优势。利用现有的单图像深度估计网络,经过训练为一般颜色图像合成可信(但不一致)深度,使用传统重建方法从视频中提取的几何约束对网络进行微调。因此,该网络学会了在一个特定的视频上产生几何上一致的深度。
本文方法分为两个阶段:
预处理:
测试时间训练:

1 Camera registration——相机参数
2 Scale calibration——尺度校准
3 Frame sampling——帧采样
4 Optical flow estimation——光流估计
1 Geometric loss = spatial loss +disparity loss:
2 Discussion——讨论
3 Optimization——优化
4 Implementation details——复现细节
1 实验设置

2 定量分析
比较方法:将本文的结果与目前最先进的三类深度估计算法进行了比较。

Quantitative comparison:如上图所示,光度误差、不稳定性和漂移度量与完整性的关系图。在所有三个指标中,本文的方法都优于以前算法。当评估不稳定性和漂移指标时,本文结果特别突出,重点在于其一致性。如下表,描述的更为具体。

Visual comparison:如下图所示,对不同的深度估计方法做定性比较。传统的多视图立体方法在高纹理区域产生精确的深度,可以建立可靠的匹配。这些深度图包含大孔(黑色像素),如下图b所示。基于学习的单图像深度估计方法为每个单独的视频帧生成密集的、可信的深度图。然而,随着时间的推移,闪烁的深度会导致几何上不一致的深度重建。基于视频的方法,如NeuralRGBD可以了时间闪烁,但由于用于深度估计的时间窗口有限,会出现漂移。

3 消融实验
进行消融研究,以验证采用的几种设计选择的有效性。首先研究了损失的影响以及管道中不同步骤的重要性,包括尺度校准和重叠测试。在下表中总结了这些结果。下图也显示了各种模块的重要程度。


实验表明,使用长期约束有助于提高估计深度随时间变化的稳定性。由于视差损失也有助于减少时间闪烁,在下图中进一步研究了两种设计选择的影响。结果表明,包括来自长期帧对的约束将导致更尖锐和时间上更稳定的结果。相比之下,虽然添加视差损失可以减少时间闪烁,但当只使用连续的帧对时,它会产生模糊的结果。

4 对公共基准测试的定量比较
提供三个公开的基准数据集的定量结果,以评估本文的深度估计的性能。在所有的评估设置中,调整输入图像的大小,使最长的图像尺寸为384。微调了20个epoch的单眼深度估计网络(与立体视频数据集中使用的评估设置相同)。
TUM-RGBD dataset:本文方法在所有的评估指标中都比之前的方法相比有很大的优势。特别是,提出的测试时间训练显著提高了Li等人的基线模型的性能

ScanNet dataset:本文方法实现了与最先进的算法的竞争性能,性能略低于在扫描网训练集上训练的DeepV2D方法。

KITTI dataset:结果表明,我们的方法确实提高了在80%以上的测试帧的性能(即使当与具有高分辨率输出的模型相比)。然而,由于COLMAP在场景中具有大动态对象的序列中产生错误的姿态估计,微调方法不可避免地会产生具有非常大误差的深度估计。本文的方法也难以处理重要的动态场景运动。因此,当结果在所有的测试帧上被平均时,方法并没有得到明显的改进。

一致的视频深度估计使有趣的基于视频的特殊效果。如下图显示了这些效应的样本。

所提出的视频深度估计方法存在一些局限性和缺点。
Poses:方法目前依赖于COLMAP来从单眼视频中估计相机的姿态。然而,在具有挑战性的场景下,例如,有限的相机平移和运动模糊,COLMAP可能无法产生可靠的稀疏重建和相机姿态估计。较大的姿态误差对本文的结果有很强的退化效应。这限制了方法对此类视频的适用性。
Dynamic motion:本文方法仅支持包含适度物体运动的视频,不支持极端的物体运动。
Flow:本文依赖于FlowNet2来建立几何约束。不可靠的光流通过向前向后的一致性检查进行过滤,但它可能以一致的方式偶然错误。在这种情况下,将不能产生正确的深度。尝试使用稀疏流(在常规网格上对密集流进行子采样),但效果不佳。
Speed:当使用视频中的所有帧来提取几何约束时,不支持在线处理。例如,对于一个包含244帧和708个采样流对的视频,测试时间训练步骤大约需要40分钟。而在未来开发在线和快速的变体将对实际应用非常重要。
文章提出了一种简单而有效的方法来估计从单眼视频的一致深度。利用传统的多视图重建方法提取的几何约束,并使用它们来微调预先训练好的单幅图像深度估计网络。使用测试时间微调策略,网络学习在整个视频上产生几何上一致的深度估计。同时,进行了广泛的定量和定性评价。结果表明,本文方法优于几种最先进的深度估计算法。同时,一致的视频深度估计使引人注目的基于视频的视觉效果。
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、
2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图
两个gsub产生不同的结果。谁能解释一下为什么?代码也可在https://gist.github.com/franklsf95/6c0f8938f28706b5644d获得.ver=9999str="\tCFBundleDevelopmentRegion\n\ten\n\tCFBundleVersion\n\t0.1.190\n\tAppID\n\t000000000000000"putsstr.gsub/(CFBundleVersion\n\t.*\.).*()/,"#{$1}#{ver}#{$2}"puts'--------'putsstr.gsub/(CFBundleVersio
目前我正在使用这个正则表达式从YoutubeURL中提取视频ID:url.match(/v=([^&]*)/)[1]我怎样才能改变它,以便它也可以从这个没有v参数的YoutubeURL获取视频ID:http://www.youtube.com/user/SHAYTARDS#p/u/9/Xc81AajGUMU感谢阅读。编辑:我正在使用ruby1.8.7 最佳答案 对于Ruby1.8.7,这就可以了。url_1='http://www.youtube.com/watch?v=8WVTOUh53QY&feature=feedf'url
深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG
我希望特定模型的所有数据库交互都通过集群中的mongo主节点,因此我将模型设置为使用强一致性。classPhotoincludeMongoid::Documentwithconsistency::strongfield:number,type:Integer#let'ssayaphotonumberisuniqueinthedbvalidate:unique_numberend但这似乎不起作用,因为当我保存两张非常靠近的照片时,我仍然遇到验证错误。photo1#dbhasnumber=1forthisobjectphoto1.update_attributes(number:2)pho
进行这种深度检查的最佳方法是什么:{:a=>1,:b=>{:c=>2,:f=>3,:d=>4}}.include?({:b=>{:c=>2,:f=>3}})#=>true谢谢 最佳答案 我想我从那个例子中明白了你的意思(不知何故)。我们检查子哈希中的每个键是否在超哈希中,然后检查这些键的对应值是否以某种方式匹配:如果值是哈希,则执行另一次深度检查,否则,检查值是否相等:classHashdefdeep_include?(sub_hash)sub_hash.keys.all?do|key|self.has_key?(key)&&ifs
我有一个Rails应用程序,它从WorldWeatherOnlineAPI获取响应。我正在使用rest-clientgem,响应采用JSON格式。我使用以下方法解析响应:parsed_response=JSON.parse(response)parsed_response显然是一个散列。我需要的数据是哈希内的字符串,数组内的哈希,另一个数组内的哈希,另一个哈希内的另一个哈希内的字符串。最内层的嵌套散列在["hourly"]中,这是一个由8个散列组成的数组,每个散列有20个键,拥有各种天气参数的字符串值。数组中的每个哈希值都是一天中的不同时间(预测是每三小时一次,3*8=24小时)。因此