[论文阅读笔记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.rhkb.cn/news/107216.html

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

相关文章

兵力集中更容易进攻获胜

我兵力集中,敌兵力分散,进攻可胜 【安志强趣讲《孙子兵法》第21讲】 【原文】 进而不可御者,冲其虚也;退而不可追者,速而不可及也。 【趣讲白话】 进攻时,敌人无法抵御,那是攻击了敌人空虚的地方…

小程序input的placeholder不垂直居中的问题解决

input的placeholder不垂直居中&#xff0c;input设置高度后&#xff0c;使用line-height只能使输入的文字垂直居中&#xff0c;但是placeholder不会居中&#xff0c;反而会偏上。 首先placeholder样式自定义 有两种方法&#xff0c;第一种行内样式&#xff1a; <input ty…

大彩串口屏使用记录

写在最前面 屏幕型号 DC10600M070 IDE VisualTFT&#xff08;官方&#xff09; VSCode&#xff08;lua编程&#xff09; 用之前看一下官方那个1小时的视频教程就大概懂控件怎么用了&#xff0c;用官方的软件VisualTFT很简单 本文只是简单记录遇到的一些坑 lua编辑器 VisualTF…

uview ui 查看版号

版本查询2种方式 有两种方式可以查询到正在使用的uView的版本&#xff1a; // 通过console.log打印的形式 console.log(uni.$u.config.v);// 可以查阅uView的配置文件得知当前版本号&#xff0c;具体位置为&#xff1a; /uview-ui/libs/config/config.js

Linux centos7 bash编程(小练习)

一、打印九九乘法口诀 这一个for循环嵌套的小练习&#xff0c;难度不大。提供一种写法&#xff0c;供参考&#xff1a; #!/bin/bash # 文件名&#xff1a;99table.sh # 打印输出九九乘法口诀表 for i in {1..9} do for ((j1;j<$i;j)) do …

R-Meta分析核心技术教程

详情点击链接&#xff1a;全流程R-Meta分析核心技术教程 一&#xff0c;Meta分析的选题与检索 1、Meta分析的选题与文献检索 1)什么是Meta分析 2)Meta分析的选题策略 3)精确检索策略&#xff0c;如何检索全、检索准 4)文献的管理与清洗&#xff0c;如何制定文献纳入排除标准 …

【Git】测试持续集成——Git+Gitee+PyCharm

文章目录 概述一、使用Gitee1. 注册账号2. 绑定邮箱3. 新建仓库4. 查看项目地址 二、安装配置Git1. 下载安装包2. 校验是否安装成功。3. 配置Git4. Git命令5. Git实操 三、PyCharmGit1. 配置Git2. Clone项目3. 提交文件到服务器4. 从服务器拉取文件 概述 持续集成&#xff08;…

开源在物联网(IoT)中的应用

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

react解决死循环方法?

使用useeffect&#xff08;副作用&#xff09;方法结束这个操作 1、导入useeffect、useState 2、把下方代码写入&#xff1a;里面填写的是你要终止某个东西的代码 注意&#xff1a;不可不写&#xff0c;也可以写依赖或不写

基于Python+djangoAI 农作物病虫害预警系统智能识别系统设计与实现(源码&教程)

1.背景 随着科技的发展&#xff0c;机器学习技术在各个领域中的应用越来越广泛。在农业领域&#xff0c;机器学习技术的应用有助于提高农作物的产量和质量&#xff0c;降低农业生产的成本。本文针对农作物健康识别问题&#xff0c;提出一种基于机器学习方法的农作健康识别系统&…

Spring Boot整合RabbitMQ之路由模式(Direct)

RabbitMQ中的路由模式&#xff08;Direct模式&#xff09;应该是在实际工作中运用的比较多的一种模式了&#xff0c;这个模式和发布与订阅模式的区别在于路由模式需要有一个routingKey&#xff0c;在配置上&#xff0c;交换机类型需要注入DirectExchange类型的交换机bean对象。…

JMeter性能测试(上)

一、基础简介 界面 打开方式 双击 jmeter.bat双击 ApacheJMeter.jsr命令行输入 java -jar ApacheJMeter.jar 目录 BIN 目录&#xff1a;存放可执行文件和配置文件 docs目录&#xff1a;api文档&#xff0c;用于开发扩展组件 printable-docs目录&#xff1a;用户帮助手册 li…

docker harbor私有库

目录 一.Harbor介绍 二.Harbor的特性 三.Harbor的构成 四.Harbor构建Docker私有仓库 4.2在Server主机上部署Harbor服务&#xff08;192.168.158.25&#xff09; 4.2.1 这时候这边就可以去查看192.168.158.25网页 4.3此时可真机访问serverIP 4.4通过127.0.0.1来登陆和推送镜…

vue 中 axios 的安装及使用

vue 中 axios 的安装及使用 1. axios 安装2. axios使用 1. axios 安装 首先&#xff0c;打开当前的项目终端&#xff0c;输入 npm install axios --save-dev验证是否安装成功&#xff0c;检查项目根目录下的 package.json,其中的 devDependencies 里面会多出一个axios及其版本…

Linux(基础篇二)

Linux基础篇 Linux基础篇二5. 系统管理5.1 Linux中的进程和服务5.3 systemctl5.4 运行级别CentOS 6CentOS 7 5.5 关机重启命令 Linux基础篇二 5. 系统管理 5.1 Linux中的进程和服务 计算机中&#xff0c;一个正在执行的程序或命令&#xff0c;被叫做“进程”(process) 启动之…

OpenCV实战(基础知识三)

简介 OpenCV是一个流行的开源计算机视觉库&#xff0c;由英特尔公司发起发展。它提供了超过2500个优化算法和许多工具包&#xff0c;可用于灰度、彩色、深度、基于特征和运动跟踪等的图像处理和计算机视觉应用。OpenCV主要使用C语言编写&#xff0c;同时也支持Python、Java、C…

网络安全(红队)自学学习路线

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…

UE4 地形编辑基础知识 学习笔记

之前自己写过这样的功能&#xff0c;今天看到一个UE现成的 点击地形&#xff0c;选择样条 按住CTRL键点击屏幕中某一个点会在场景内生成一个这样的图标 再点两次&#xff0c;会生成B样条的绿线条 点击号再选择一个模型&#xff0c;会生成对应的链条状的mesh 拉高最远处的一个图…

python网络爬虫指南二:多线程网络爬虫、动态内容爬取(待续)

文章目录 一、多线程网络爬虫1.1 线程的基础内容、GIL1.2 创建线程的两种方式1.3 threading.Thread类1.4 线程常用方法和锁机制1.5 生产者-消费者模式1.5.1 生产者-消费者模式简介1.5.2 Condition 类协调线程 1.6 线程中的安全队列1.6 多线程爬取王者荣耀壁纸1.6.1 网页分析1.6…

开源双语对话语言模型 ChatGLM-6B 本地私有化部署

本文首发于&#xff1a;https://www.licorne.ink/2023/08/llm-chatglm-6b-local-deploy/ ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级…