On Moving Object Segmentation from Monocular Video with Transformers 论文阅读

news2024/9/21 7:03:36

论文信息

标题:On Moving Object Segmentation from Monocular Video with Transformers
作者
在这里插入图片描述
来源:ICCV
时间:2023
代码地址:暂无

Abstract

通过单个移动摄像机进行移动对象检测和分割是一项具有挑战性的任务,需要了解识别、运动和 3D 几何。将识别和重建结合起来可以归结为融合问题,其中需要结合外观和运动特征来进行分类和分割。

在本文中,我们提出了一种用于单目运动分割的新颖融合架构 - M3Former,它利用Transformer的强大性能进行分割和多模态融合。由于从单目视频重建运动是不适定的,我们系统地分析了该问题的不同 2D 和 3D 运动表示及其对分割性能的重要性。最后,我们分析了训练数据的效果,并表明需要不同的数据集才能在 Kitti 和 Davis 上实现 SotA 性能。

Introduction

在这里插入图片描述

我们将我们的框架称为多模态 Mask2Former (M3Former),因为我们将来自多种模态的信息与屏蔽注意力相结合。由于单目视频仅提供单一模态流,因此我们利用冻结专家模型 [47,54,56] 来计算不同的运动表示,请参见图 1。我们的贡献有四个方面:

  1. 我们设计了一种新颖的带有编码器和解码器的双流架构。我们分析了该框架内不同融合策略的性能。

  2. 我们在我们的框架内系统地分析了之前工作中不同运动表示(光流、场景流、高维嵌入)的效果。

  3. 我们凭经验展示不同训练数据的效果。平衡不同来源的运动模式和语义类别对于现实视频的强大性能至关重要。

  4. 我们引入了一种非常简单的增强技术,以实现更好的多模态对齐。通过引入负数。在没有运动信息的示例中,我们迫使网络不要过度依赖外观数据。

Problem Statement

给定来自单个摄像机的视频 { I 1 , I 2 , . . . , I N } \{I_1, I_2, ..., I_N \} {I1,I2,...,IN},我们想要检测并分割通用的独立移动对象。对象被定义为空间连接的像素组,属于同一语义类。所有标签都合并为一个“对象”,因为只有运动状态很重要。检测器在训练期间只能看到有限数量的类。通用对象检测假设训练和测试类标签集之间不平衡。我们想要识别任何移动的物体,即使我们在训练期间从未见过的类。当一个物体的表观运动不是由相机自身运动引起时,该物体被定义为独立移动。当只有一部分在运动时,物体仍然被认为是运动的,例如当一个人移动一只手臂时,那么整个人就应该被分割。

Appoach

我们为该任务引入了 M3Former 架构,如图 2 所示。我们方法的主要思想是通过注意力灵活地融合外观和运动数据的多尺度特征。
在这里插入图片描述

Motion Representation

我们分析了单模态推理和与外观特征融合的性能。给定两个图像 I 1 , I 2 ∈ R H × W × 3 I_1, I_2 ∈ R_{H×W×3} I1,I2RH×W×3,我们对两帧之间的运动 F 1 → 2 F_{1→2} F12 感兴趣。

optical flow:RAFT

Higher-dimensional Motion Costs:光流是实际 3D 运动的 2D 投影。多个运动可以映射到同一个投影,因此重建是不明确的。从光流重建物体和相机运动有多种退化情况[76]。退化情况在应用程序中很常见,例如道路上的所有车辆共线行驶。

为了稳健地检测移动物体,我们需要某种形式的独立于运动结构的 3D 先验。 [76] 的作者制定了四个手工标准来计算两帧之间的更高维成本函数 C 12 ∈ R H × W × 14 C_{12} ∈ R^{H×W×14} C12RH×W×14。该成本函数在违反静态场景假设的区域具有更高的成本。计算涉及估计光流[54]、光学扩展[75]、相机运动[24]和单目深度[47]。 [44]的作者通过使用后向 F 2 → 1 F_{2→1} F21 和前向运动 F 2 → 3 F_{2→3} F23,将此成本函数扩展为三帧公式 C 13 ∈ R H × W × 28 C_{13} ∈ R^{H×W×28} C13RH×W×28。这种成本嵌入的计算涉及最多四个神经网络,每个神经网络都在自己的特定数据集上进行训练。

Scene Flow:
存在一个更简单的 minimal formulation-3D scene flow。给定两个 RGBD 框架 { I 1 , Z 1 } \{I_1, Z_1\} {I1,Z1} { I 2 , Z 2 } \{I_2, Z_2\} {I2,Z2},我们将运动计算为刚体变换场 F ∈ R H × W × 6 ∈ S E 3 F ∈ R^{H×W×6} ∈ SE3 FRH×W×6SE3。 RAFT-3D [56] 是 2D 光流网络 [54] 的直接 3D 等效,并且自然地包括几何优化。这项工作的主要思想是计算每个像素的运动 g ∈ SE3,而不对语义做出任何假设。

由于以相同的刚体运动移动,像素自然地组合成具有语义意义的对象。我们围绕这个想法 - 给定场景中的多个刚体运动,我们想要推断实例分割。

虽然用于光流训练的数据集有许多不同的[1,48,10,22],但用于场景流训练的数据集较少[41]。我们发现,现有模型权重不能很好地转移到我们的所有训练数据集。因此,我们针对训练数据对 RAFT-3D 进行微调,但在评估期间使用已发布的检查点 [56]。 3D 运动估计的性能很大程度上取决于深度图质量。训练主要以高质量或真实深度进行。在对野外数据进行推理时,我们无法获得 Z1、Z2 的准确绝对比例单目深度。我们根据深度质量来消除运动估计和分割的性能。

Fusion

基于图像的检测器可以很好地解决分割和检测任务,但在运动分类上表现不佳。在训练数据有限的情况下,简单地使用单目视频数据进行运动分割是一项具有挑战性的任务。当使用运动作为中间数据表示(充当归纳偏差)时,该任务就可以解决。然而,为了稳健地分割具有语义意义的移动对象,将图像和运动数据结合在一起至关重要。因此,运动分割任务可以被视为多模态融合问题。

Transformer非常灵活 - 例如将Transformer适应视频实例分割只需要更改位置编码和很少的微调[13]。

这种灵活性是一个关键优势,因为它为将来使用更长的时间窗口留下了可能性。以类似的方式,我们添加特定于模态的位置编码,并组合来自多种模态的数据而不是时间帧。当使用多种模式时,我们将双流架构中的特征与专用参数 θ r g b 、 θ m o t i o n θ_{rgb}、θ_{motion} θrgbθmotion 相结合。每个分支首先分别对其自己的模态进行训练,然后通过对两个分支进行微调来学习融合。我们尝试了多种方法来融合不同位置的信息。我们的不同流基于 SotA 分割架构 Mask2Former [14]。

在这里插入图片描述

Experiments

在这里插入图片描述
在这里插入图片描述

在我们的第一个实验中,我们专注于单一模式。

我们训练了 30 个 epoch,更多细节请参见 Suppl。秒。 7.1.表 3 显示了 FlyingThings3D 测试拆分的结果。我们使用 3D 输入数据获得了最佳结果,这表明 3D 运动使网络更容易学习任务,并且通常优于 2D 运动。

预测运动和真实运动之间的差距为现成的估计器留下了改进的空间。有趣的是,我们包括一个纯图像基线模型。我们可以在此数据集上训练强大的图像检测器,因为前景物体始终处于运动状态并且与背景不同。请注意,如果数据包含对象类(可以移动但不能移动),情况就不会如此。

稍后我们将看到,纯图像基线如何仅在不惩罚误报的指标上表现良好。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

智慧停车视频解决方案:如何让AI助力停车管理升级?

一、项目背景 停车场的管理区域由于面积比较大,进出车辆多,所以在保安方面决不能有任何的麻痹和松懈,继续采用过去保安方式已远远不能满足现代安全防范的需求。为满足停车场的安全和科学系统化管理的需要,以及为了对随时发生的情…

希尔排序和直接插入排序代码对比

两段代码相似的地方也是两个算法一致的地方:即直接插入算法的整体流程和希尔算法的每个组内进行直接插入的流程。 不同点就是希尔算法会依次将整个序列分成…16、8、4、2、1组,每次在每个小组内进行直接插入,以此保证下一次扩大分组内元素数时…

用 Go 访问 MySql 数据库

所有代码样例 package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql" )var db *sql.DB// 初始化连接 func initDB() (err error) {db, err sql.Open("mysql", "root:mm..1213tcp(127.0.0.1:3306)/chapte…

使用python实现http协议的方法

要使用Python编写一个接口,其入参格式为x-www-form-urlencoded,你可以使用requests库。requests库是一个流行的HTTP库,它使得发送HTTP请求变得非常简单。 下面是一个简单的示例,展示如何使用requests库发送一个POST请求&#xff…

苹果IOS系统企业IPA文件签名需要提供APP开源代码吗?

在科技发展日益迅速的今天,我们所生活的世界已变得越来越便捷。而在这个过程中,智能手机、移动应用以及与之相关的技术也在影响着我们日常生活的方方面面。苹果公司,作为行业巨头之一,不仅改变了全球智能手机的发展趋势&#xff0…

酒石酸盐晶体是优质葡萄酒的一个特征?

来自云仓酒庄品牌雷盛红酒分享澄清一下,葡萄酒中的酒石酸盐晶体,在德国被称为“温斯坦”,既无害也不是质量差的标志,相反,它们是富含矿物质的葡萄酒的特征。虽然酒石酸盐可以在年轻的葡萄酒中结晶,但它们最…

iconfont

iconfont-阿里巴巴矢量图标库https://www.iconfont.cn/ UI - 优设网 - 学设计上优设 (uisdc.com)https://www.uisdc.com/category/uiicon TreeNode moveNode (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); Point pt; …

C++问题总结

文章目录 C指针和引用的区别:悬空指针和野指针如何避免悬空指针和野指针多态析构函数可以为虚函数吗,为何建议为虚函数C程序的编译过程可以分为四个主要阶段线程池有死锁问题吗,死锁了解多少,递归锁知道吗常见的几种锁 网络什么是…

Pillow库(PIL)入门教程

Pillow库,PIL的升级版,一个免费开源的Python图像处理库。 Pillow 库(有时也称 PIL 库) 是 Python 图像处理的基础库,它是一个免费开源的第三方库,由一群 Python 社区志愿者使用 Python 语言开发而成&#…

LoongArch 指令集 流水线设计

简易版流水线 流水线总体思想-自己感悟 将指令执行分成若干个阶段(五级流水-取值,译码,执行,访存,写回),每个阶段干自己的事(生成相应的控制信号,完成自己的工作&#x…

PostgreSQL12中浮点数输出算法优化带来的小问题

最近碰到同事发来这样两个SQL,开发反馈输出的结果异常。 bill# select 0.1284*100::float;?column? --------------------12.839999999999998 (1 row)bill# select (0.1284*100)::float;float8 --------12.84 (1 row) 乍一看其实能看出明显的区别,由于…

CDN加速技术:国内外优劣势

在当今数字化时代,网站速度和性能对于用户体验和在线业务的成功至关重要。为了提供更快速的内容交付和优化用户体验,内容分发网络(CDN)技术应运而生。本文将分析CDN的国内外优劣势,探讨其价格因素,并通过实…

由浅入深,全面解析AMBA ACECHI协议

IC工程师,在设计芯片时,如果是基于各种复用IP的SOC芯片,那必定要接触到AMBA总线协议。 AMBA总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有高速度低功耗等特点。协议的主要动机是用一…

Android build.gradle读取String中文件及gradle.properties数据

在网上找了好久没有一个完整的学习文档,自己总结下,方便后面使用,话不多说直接上代码 首先获取路径 def path getProjectDir().getPath()"/src/"variant.productFlavors[0].name"/res/values/strings.xml"System.out…

音视频(二)之使用FFMpegSDK在我们自己的代码中进行推流

前言 上一篇文章我们介绍了如何使用FFMpeg工具进行推流。但如果要在我们的代码工程中,实现推流。就要下载FFMpegSDK包,调用相关API,在我们自己的程序中实现推流。 FFMpegSDK下载 下载动态库文件 选择这个下载 使用FFMpegSDK推流 下载FF…

jacob朗读中文,jacob生成中文语音音频文件,以生成MP3文件为例,不需要配置DLL

前言 本文使用jacob朗读文字和生成中文语音音频文件功能,与不同的是,本文不需要配置DLL到JVM根目录,只需要从项目类路径加载DLL即可。 jacob介绍 Jacob 是一个 Java 库,允许 Java 应用程序与Microsoft Windows DLL 或 COM 库进行通信。它通过使用自定义DLL来实现这一点,…

docker镜像仓库

Hlarbor harbor是一个开源的云原生镜像仓库, 它允许仓库用户存储,使用docker镜像。可以将harbor看做是私有的dockerhub,它提供了更新安全性和控制性, 让组织能够安全的存储和管理镜像。 harbor RBAC:基于角色访问控制…

ImportError: DLL load failed: 找不到指定的模块。解决方法 from ._nnls import nnls 报错

实验时遇到过如下错误 ImportError: DLL load failed: 找不到指定的模块。 往前查看错误位置发现如下错误 from ._nnls import nnls 或者 from scipy import special, optimize, from ._nnls import nnls 解决方法: 依次执行下述命令 conda remove --force numpy …

[大三上]区块链和分布式计算

[大三上]区块链和分布式计算 区块链中的分布式系统: 分布式最大的应用: 区块链, 分布式系统是区块链的一个基础 分布式计算: 分布式计算(Distributed Computing):指将一个计算任务分解成多个子任务,分配给不同的计算节点&#…