[论文阅读笔记26]Tracking Everything Everywhere All at Once


论文地址: 论文
代码地址: 代码

这是一篇效果极好的像素级跟踪的文章, 发表在ICCV2023, 可以非常好的应对遮挡等情形, 其根本的方法在于将2D点投影到一个伪3D(quasi-3D)空间, 然后再映射回去, 就可以在其他帧中得到稳定跟踪.

这篇文章的方法不是很好理解, 代码也刚开源, 做一下笔记备忘.


0. Abstract

传统的光流或者粒子视频跟踪方法都是用有限的时间窗口去解决的, 所以他们并不能很好的应对长时遮挡, 也不能保持估计的轨迹的全局连续性. 为此, 我们提出了一个完整的, 全局的连续性的运动表示方法, 叫做OmniMotion. 具体地, OmniMotion将一个视频序列表示成一个准-3D的规范量(quasi-3D canonical volume), 然后通过定义一个双射(也就是从平面空间到所谓的canonical的空间), 这样我们通过一个准3D空间, 就可以描述一个完整的运动(因为补偿了2D缺失的信息).

1. Method

由于对相关领域知识的匮乏, 先略过Introduction和Related Work部分, 先来看方法.

从整体流程上, OmniMotion将一整个视频序列作为输入, 同时还输入不太准确的带噪的运动估计(例如光流估计), 然后解出一个完整的, 全局的运动轨迹.

那么如何解决遮挡问题呢? 遮挡, 只是在2D的图像平面下遮挡了, 但是在3D信息中是可以恢复出来的. 为此, 我们将场景给投影到某个3D空间, 这个空间可以尽可能描述像素完整的运动. 比如说, 第 t 1 t_1 t1帧的某个像素 x 1 x_1 x1, 给投影到这个3D空间变为 x ′ x' x, 然后在第 t 2 t_2 t2帧我们再将这个 x ′ x' x投射到2D平面, 就得到了对应的点 x 2 x_2 x2. 由于这个3D不需要真正的进行3D重建(因为真正的3D重建是需要知道相机的内参和外参, 内参包括图像中心的坐标, 相机的焦距等, 外参需要知道相机的朝向等, 是比较复杂的), 因此我们将该空间成为quasi-3D.

所以具体是如何做的呢?

1.1 规范3D量的组成

我们将前述的规范3D量记为 G G G. 和神经辐射场(NeRF)一样, 我们在 G G G上定义了一个基于坐标的网络 F θ F_{\theta} Fθ, 该网络将 G G G中的3D坐标 u u u映射到密度 σ \sigma σ颜色 c c c. 其中密度可以告诉我们表面(surface)在这个3D空间中的位置, 颜色是可以在训练过程中计算光度损失(photometric loss).

1.2 3D双射

如前所述, 我们需要定义一个从本地坐标(也就是视频或图像坐标)到quasi-3D空间的一个映射, 以及逆映射, 这样我们可以再映射回别的时间索引的帧找到对应点. 然而, 实际上该工作是将本地的2D坐标给提升到3D的(后面会讲如何做的), 然后从提升后的本地3D坐标投影到quasi-3D空间. 整个映射和逆映射的过程如下:

x j = T j − 1 ∘ T i ( x i ) x_j = \mathcal{T}_j^{-1}\circ \mathcal{T}_i(x_i) xj=Tj1Ti(xi)

其中 i , j i,j i,j是frame index, 因此, 我们定义的映射是和时间有关的. 然而, 中间产物 u = T i ( x i ) u= \mathcal{T}_i(x_i) u=Ti(xi)应该是与时间无关的.

在实现上, 映射是用可逆神经网络(INN)做的.

1.3 计算运动

流程上, 我们在2D图像上的一个像素 p i p_i pi, 我们首先将其提升到3D, 变成 p i ′ p_i' pi. 方法是在一个射线上进行采样. 然后用上一节定义的3D双射投影到第 j j j帧对应的3D点, 最后再降维回2D就可以了.

具体地, 由于我们已经将相机的运动包含在映射 T \mathcal{T} T内了 , 因此我们直接将相机建模成固定的正交相机. 固定正交相机的含义是, 物体不再具有近大远小的特征. 这样一来, 我们就可以很容易的将2D坐标拓展到3D坐标. 也就是说, 既然物体的大小不再随着深度的变化而变化, 那么2D像素点 ( x i , y i ) (x_i, y_i) (xi,yi)不论深度如何, 它的值(RGB)一直是一样的, 因此前述的射线可以这样定义:

r i ( z ) = o i + z d , o i = [ p i , 0 ] ∈ R 3 , d = [ 0 , 0 , 1 ] r_i(z)=o_i+zd, \\ o_i = [p_i, 0] \in \mathbb{R}^3, d = [0, 0, 1] ri(z)=oi+zd,oi=[pi,0]R3,d=[0,0,1]

因此我们在这个射线上采集 K K K个样本, 就相当于在这个固定正交相机拍摄的3D场景中进行深度采样.

然后, 这么一堆样本, 我们用映射 T i \mathcal{T}_i Ti投影到quasi-3D空间, 然后再用之前说的映射 F θ F_{\theta} Fθ转换成密度和颜色的量 ( σ , c ) (\sigma, c) (σ,c), 即, 对于第 k k k个样本:

( σ k , c k ) = F θ ( T i ( x i k ) ) x j k = T j − 1 ( ( σ k , c k ) ) (\sigma_k, c_k) = F_\theta(\mathcal{T}_i(x_i^k)) \\ x_j^k = \mathcal{T}_j^{-1}((\sigma_k, c_k)) (σk,ck)=Fθ(Ti(xik))xjk=Tj1((σk,ck))

随后, 我们根据第 j j j帧的这 K K K个对应样本, 得到第 j j j帧的估计:

x ^ j = ∑ k = 1 K T k α k x j k , where   T k = Π l = 1 k − 1 ( 1 − α l ) , α k = 1 − exp ⁡ { − σ k } \hat{x}_j = \sum_{k=1}^KT_k\alpha_kx_j^k, \\ \text{where} ~~T_k=\Pi_{l=1}^{k-1}(1-\alpha_l), \\ \alpha_k = 1-\exp\{-\sigma_k\} x^j=k=1KTkαkxjk,where  Tk=Πl=1k1(1αl),αk=1exp{σk}

以上的过程叫做alpha compositing, 是NeRF中一个常用的技巧. 意义是, 密度实际上表达了3D空间中存在物体的可能性, 1 − exp ⁡ { − σ k } 1-\exp\{-\sigma_k\} 1exp{σk}就是一种对概率的衡量. 对于是否采纳第 k k k个样本, 重要性为 T k α k T_k\alpha_k Tkαk, α k \alpha_k αk已经解释. T k T_k Tk的含义是在这之前的样本的联合可信程度, 也就是说, 之前有一个样本已经比较可信了, 那么这个样本就可以更少的采纳.

以上是个人理解

因此, 上面的过程总结为下图:
在这里插入图片描述

2. Training

这个工作是用已有的光流方法生成标签, 指导训练的. 这部分重点先记一下损失函数.

损失函数由三部分构成, 一个是位置误差, 也就是坐标误差. 一个是颜色误差, 这就是前面 c c c的作用, 还有一个是因为要保证平稳性而加入的罚项. 其中1, 3项采用1范数, 第二项采用2范数.

Flow loss:

L f l o = ∑ f i → j ∣ ∣ f ^ i → j − f i → j ∣ ∣ 1 , f ^ i → j = p ^ j − p i \mathcal{L}_{flo} = \sum_{f_{i \to j}}|| \hat{f}_{i \to j} - f_{i \to j}||_1, \\ \hat{f}_{i \to j} = \hat{p}_j - p_i Lflo=fij∣∣f^ijfij1,f^ij=p^jpi

photometric loss:

L p h o = ∑ i , p ∣ ∣ C ^ i ( p ) − C i ( p ) ∣ ∣ 2 2 \mathcal{L}_{pho} = \sum_{i, p}|| \hat{C}_{i}(p) - C_i(p)||_2^2 Lpho=i,p∣∣C^i(p)Ci(p)22

smooth loss:

L r e g = ∑ i , x ∣ ∣ x i + 1 − x i + x i − 1 − x i ∣ ∣ 1 \mathcal{L}_{reg} = \sum_{i, x}|| x_{i + 1} - x_i + x_{i - 1} - x_i||_1 Lreg=i,x∣∣xi+1xi+xi1xi1

意义是保证前一帧和后一帧的差距尽量小.

最终的loss是这三项的线性组合.

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

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

相关文章

嵌入式设备应用开发(发现需求和提升价值)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 很多做技术的同学,都会陷入到技术的窠臼之中。对于如何做具体的产品、实现具体的技术,他们可能很感兴趣。但是做出来的东西做什么用,或者说是有没有竞争力,事实上他们不是很关心…

身为一个后端程序员如何快速制作后端管理系统的UI

前言 我的专业领域在后端开发上,前端我仅仅是熟悉,但是要从头开发一个前端UI界面有点难为人了。那么身为一个后端程序员我们怎么来开发后端管理系统UI界面呢? 方案1:现成的模版来套(有一定的前端基础,只是…

搭建开发环境-Mac

概述 上一篇搭建开发环境-WSLUbuntu 记录了WSL 和Ubuntu 下开发环境的搭建。这一篇就说下Mac开发环境的搭建。 就像很多人误以为Mini 是专为女孩子设计的高颜值车,其实是一辆极其hardcore 的拉力车一样。 很多人都被Mac 那高颜值蒙蔽了,其实这是一台生产…

基于swing的旅游管理系统java jsp旅行团信息mysql源代码

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于swing的旅游管理系统 系统有1权限:管…

flask获取请求对象的get和post参数

前言 get请求参数是在URL里面的,post请求参数是放在请求头里面的 get请求: index_page.route("/get") def get():var_a request.args.get("a", "jarvis")return "request:%s,params:%s,var_a:%s" %(request…

上传镜像到阿里云的ACR

1、开通阿里云ACR 2、在ACR 中创建命名空间 3、本地安装docker 4、登录到 开通ACR,需要配置访问凭证 [rootmaster ~]# docker login --username***lb registry.cn-beijing.aliyuncs.com Password: 5、给镜像打标签 [rootmaster ~]# docker images REPOSITORY …

【中危】Apache XML Graphics Batik<1.17 存在SSRF漏洞 (CVE-2022-44729)

zhi.oscs1024.com​​​​​ 漏洞类型SSRF发现时间2023-08-23漏洞等级中危MPS编号MPS-2022-63578CVE编号CVE-2022-44729漏洞影响广度极小 漏洞危害 OSCS 描述Apache XML Graphics Batik 是一个开源的、用于处理可缩放矢量图形(SVG)格式图像的工具库。 受影响版本中&#xff0…

prometheus + grafana进行服务器资源监控

在性能测试中,服务器资源是值得关注一项内容,目前,市面上已经有很多的服务器资 源监控方法和各种不同的监控工具,方便在各个项目中使用。 但是,在性能测试中,究竟哪些指标值得被关注呢? 监控有…

Jupyter Notebook 配置根目录

注:本文是在 Windows 10 上配置 Jupyter Notebook 打开的默认根目录,Linux 同。 步骤一:创建 Jupyter Notebook 配置文件 使用以下命令创建 Jupyter Notebook 配置文件(如果尚未创建): jupyter notebook …

python连接Microsoft SQL Server 数据库

python代码 Author: tkhywang 2810248865qq.com Date: 2023-08-21 11:22:24 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-08-21 11:29:30 FilePath: \PythonProject02\Microsoft SQL Server 数据库.py Description: 这是默认设置,请设置customMade, 打开koroFi…

Spring boot(一)

Spring Boot是一个构建在Spring框架顶部的项目。它提供了一种简便,快捷的方式来设置,配置和运行基于Web的简单应用程序。 它是一个Spring模块,提供了 RAD(快速应用程序开发)功能。它用于创建独立的基于Spring的应用程序,因为它需…

第61步 深度学习图像识别:多分类建模(TensorFlow)

基于WIN10的64位系统演示 一、写在前面 截至上期,我们一直都在做二分类的任务,无论是之前的机器学习任务,还是最近更新的图像分类任务。然而,在实际工作中,我们大概率需要进行多分类任务。例如肺部胸片可不仅仅能诊断…

基于Java+SpringBoot+Vue前后端分离图书电子商务网站设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

css滚动条的使用

前言: css滚动条的使用。 1、使用案例1:背景不要,只展示一个滚动条 如果是默认整体,::就够用了,如果是某个元素,可以 .abc:: ,如果是scss这种的 &:: ::-webkit-scrollbar {width: 6px; } ::-webkit…

【学习FreeRTOS】第20章——FreeRTOS内存管理

1.FreeRTOS内存管理简介 在使用 FreeRTOS 创建任务、队列、信号量等对象的时,一般都提供了两种方法: 动态方法创建:自动地从FreeRTOS管理的内存堆中申请创建对象所需的内存,并且在对象删除后,可将这块内存释放回Free…

使用威胁搜寻增加网络安全

什么是威胁搜寻 威胁搜寻(也称为网络威胁搜寻)是一种主动网络安全方法,涉及主动搜索隐藏的威胁,例如组织网络或系统内的高级持续性威胁和入侵指标。威胁搜寻的主要目标是检测和隔离可能绕过网络外围防御的威胁,使管理…

怎么把pdf转换成jpg格式?

怎么把pdf转换成jpg格式?在我们日常的办公过程中,PDF文件是一个经常被使用来传输文件的格式。它能够确保我们的文件内容不会混乱,并以更加完美的方式呈现出来。然而,PDF文件也存在一些缺陷。例如,它无法直接编辑&#…

学信息系统项目管理师第4版系列02_法律法规

1. 信息安全的法律体系可分为四个层面 1.1. 一般性法律法规,如宪法、国家安全法,国家秘密法 1.2. 规范和惩罚信息网络犯罪的法律,如刑法、《全国人大常委会关于维护互联网安全的决定》等 1.3. 直接针对信息安全的特别规定,如《…

Spring AOP 的实现及原理

目录 什么是 Spring AOP ?AOP 是啥 ?Spring AOP 可以干啥 ? AOP 的组成Spring AOP 的实现Spring AOP 的实现原理 什么是 Spring AOP ? AOP 是啥 ? 我们知道 OOP 是面向对象编程, 那 AOP 又是啥呢 ? AOP(Aspect Oriented Prog…

适应高速率网络设备的-2.5G/5G/10G网络变压器/网络滤波器介绍

Hqst盈盛(华强盛)电子导读:在高速发展的互联网/物联网时代,为满足高网速的网络数据传输需求,网络设备在制造中也要选用合适的网络变压器/滤波器产品,有哪些可供选择的高速率网络变压器产品也是广大采购人员…