当前位置: 首页 > news >正文

Monocular arbitrary moving object discovery and segmentation 论文阅读

基本信息

题目:Monocular Arbitrary Moving Object Discovery and Segmentation
作者
在这里插入图片描述
来源:BMVC
时间:2021
代码地址:https://github.com/michalneoral/Raptor

Abstract

我们提出了一种发现和分割场景中独立移动的物体或其部分的方法。给定三个单眼视频帧,该方法输出语义上有意义的区域,即对应于整个对象的区域,即使只有其中一部分移动。

基于 CNN 的端到端方法的架构称为 Raptor,它结合了语义和运动主干,将其输出传递到最终的区域分割网络。语义主干以与类无关的方式进行训练,以便泛化到训练数据之外的对象类。运动分支的核心是根据光流、光学扩展、单深度和估计的相机运动计算出的几何成本量。

对所提出的架构在 KITTI、DAVIS-Moving 和 YTVOSMoving 数据集上的实例运动分割和二元动静态分割问题的评估表明,所提出的方法在所有数据集上实现了最先进的结果,并且能够很好地泛化到各种环境。对于KITTI数据集,我们提供了升级的实例运动分割注释,涵盖了所有运动对象。

Introduction

只有单个相机可用(单目视觉),相机不一定是静态的,并且处理需要是因果的。目标是发现并分割所有独立移动的“物体”。我们将该问题称为移动对象发现和分割 – MODaS

Object define

MODaS 规范的关键是实例或对象的定义。常用的定义(参见第 2 节)是几何定义——一组经历相同刚性运动并在空间上连接的像素。此定义在两种重要情况下失败:(i) 当对象不是刚性的时,以及 (ii) 当两个语义不同但邻近的对象移动相似时(参见图 1)。对于应用程序来说,过度分割和分割不足的情况都是有问题的。例如,当一个人移动她的腿时,应该返回整个人的轮廓,因为要预测位置的是人,而不是腿。因此,移动对象在几何上被定义,其部分独立于相机运动而移动,并且在语义上,它是语义上有意义的实体。
在这里插入图片描述

Object discovery

对象发现与现代检测器密切相关,因为它们不仅输出位置,还输出可能数百个类别的分割[18]。在这方面,我们更进一步,使用以与类无关的方式训练的检测器[14],其中所有类都合并为单个“对象”类。这样,检测器可以更好地概括训练期间未见过的类别的对象(例如,当训练数据仅包含马时检测到骆驼)。为了将其与已知类的检测问题区分开来,我们将其称为对象发现。

Independent motion

独立运动。当一个物体(或其部分)的表观运动不是相机自我运动的结果时,该物体(或其一部分)被认为是独立移动的。一般来说,从单目相机识别此类运动是一个不适定问题。由于光流本身只是 3D 场景运动的 2D 投影,因此其解释是不明确的。单目深度估计的最新进展提供了克服这些模糊性的可能方法。对于统计数据与训练数据集相似的场景,单一深度可以作为真实深度的有用先验,并且能够消除观察到的运动的歧义[46]

Contribution

我们提出了一种名为 Raptor 的基于 CNN 的架构,它基于语义和几何处理的新颖组合。我们表明,与类无关的语义部分导致了语义上有意义的对象的发现,而几何运动成本量处理解决了明显的运动歧义。该网络发现刚性和非刚性移动对象及其实例分割掩模。与大多数方法 [14、15、20、31、33、38、46] 不同,Raptor 架构使用三个框架进行 MODaS。我们是第一个将几何部分扩展到两帧处理之外的人。

我们表明,对两个方向(向前和向后)的几何特征的估计提高了 Raptor 的发现和分割输出的精度

Architecture

所提出的 Raptor 架构如图 2 所示。它有两个输入分支:一个生成语义特征(绿色),另一个使用运动成本量 (MCV) 生成运动特征(橙色)。它们的输出被连接并发送到混合任务级联(HTC)[11]头,该头生成移动对象掩模。

在这里插入图片描述

Semantic backbone

语义主干(图 2 (a))改编自 DetectoRS 架构 [29]。它围绕递归特征金字塔主干 (RFP) 和可切换空洞卷积 (SAC) 构建。我们使用主干网的 ResNet-50 变体。

为了将检测管道转换为对象发现方法,以便它更好地推广到未知类,我们遵循[14]的类不可知训练的思想。我们在对象分割问题 [21] 上训练主干网络和临时 HTC 头,将所有对象类别合并为单个“对象”类别。本次训练不存在运动分支。 [14] 中已经表明,这种方法可以更好地预测未知类。训练结束后,HTC 头被丢弃,语义主干权重被固定。

Motion branch

运动分支(图 2 (b))的灵感来自于最近的刚体运动分割方法 [46]。它使用单眼深度 D t D_t Dt 、光流 F t − > t + 1 F_{t->t+1} Ft>t+1、光学扩展 E t + 1 E_{t+1} Et+1 和自我运动估计 [ R t + 1 , t t + 1 ] [R_{t+1},t_{t+1}] [Rt+1,tt+1] 作为前向运动成本体积 (MCV) 构造的输入。我们使用 F t − > t − 1 F_{t->t-1} Ft>t1 E t − 1 E_{t-1} Et1 [ R t − 1 , t t − 1 ] [R_{t-1},t_{t-1}] [Rt1,tt1] 进一步计算“向后”MCV。和[46]一样,我们为每个方向构建一个 14 通道 MCV,包括:对极几何的每像素 Samson 误差、每像素旋转单应性重投影误差、3D P+P 成本、深度对比度成本、重建 3D来自光流的场景点、校正运动场、光流和光学扩展的不确定性以及 3D 角度 P+P 成本。这些成本旨在指示与估计的自我运动的不一致,同时处理共面或共线运动或自我运动简并的各种模糊性。

运动分支主干架构与语义主干架构类似,但它不是基于 ResNet-50,而是基于 ResNet-18 DetectoRS 架构构建。输入是每个方向的 14 通道运动成本量。图像特征不直接输入到运动主干。向前和向后方向的MCV一一穿过运动主干。运动分支是用另一个临时 HTC 头单独预训练的,没有 MODaS 问题的语义主干。训练结束后,临时 HTC 头再次被丢弃,运动主干被固定。

Semantic + motion

语义 + 运动(图 2 (b)) 两个分支的输出被连接起来。

语义分支产生五个特征张量 F 1 / 4 、 F 1 / 8 、 F 1 / 16 、 F 1 / 32 、 F 1 / 64 F_{1/4} 、F_{1/8}、 F_{1/16} 、 F_{1/32} 、 F_{1/64} F1/4F1/8F1/16F1/32F1/64 ,空间分辨率递减,每个特征张量有 256 个通道。

原始运动分支生成每个方向 256 个通道的特征张量。面对训练设备的内存限制,我们通过额外的 1x1 卷积层将输出标准化为 128 通道。然后,两个方向的输出与语义主干的特征连接并馈送到 HTC 头(总共 512 个通道)。由于 MCV 仅针对刚体运动而设计,因此它会报告铰接对象的仅部分不一致问题。 HTC 头的任务是将这些部分不一致与语义特征结合在一起,并输出完整的运动对象分割掩模。

两个分支在最终训练中都是固定的,并且只有最终的 HTC 头部接受了移动物体发现的训练。运动分支归一化 1x1 CNN 层在训练的最后阶段与 HTC 一起进行训练。

Improvement of MCV components

MCV 组件的改进。运动分支使用多种外部算法来生成其输入。我们还小心翼翼地将它们带到文献中最先进的版本。我们使用 RAFT [32] 代替原来较旧且较弱的 VCN [45] 光流估计器。我们在广泛的数据集上训练 RAFT(鲁棒视觉挑战风格,如先前的作品 [24, 39] 展示了增强的泛化能力)。使用此光流估计,我们还重新训练了光学扩展部分。

与原始 VCN 不同,RAFT 不输出超出范围的置信度,这是 MCV 中的通道之一。我们将其替换为类似的前向-后向一致性成本,该成本针对 MCV 计算为 F t − > t + 1 + w a r p ( F t + 1 − > t ; F t − > t + 1 ) F_{t->t+1} + warp(F_{t+1->t} ;F_{t->t+1}) Ft>t+1+warp(Ft+1>t;Ft>t+1),其中 warp 操作转换流 $F_{t+1->t}到框架 t。我们不设置该值的阈值。

Experiments

MCV 的构建需要内部相机参数和相机运动 [R;t] 的估计,以分解基本矩阵。我们选择 NG-RANSAC [6] 进行基本矩阵估计,因为它允许在未来的工作中进行可能的端到端训练。

对于不包含相机固有参数的数据集,我们将焦距设置为 1 / m a x ( I w i d t h , I h e i g h t ) 1/max(I_{width},I_{height}) 1/max(Iwidth,Iheight),并将主点设置为图像的中点。

Failure case

在这里插入图片描述

(见图 5)最常见的问题是缓慢移动的物体、远离相机的物体或靠近扩展点的物体。它们的检测可能需要更长的时间整合。观察到的另一个问题是合并不明确的对象实例(带包的人、摩托车及其驾驶员等)。 Raptor 还与明显被遮挡的对象(树叶、条形后面……)作斗争,有时会返回静态但语义上有意义的对象。

相关文章:

Monocular arbitrary moving object discovery and segmentation 论文阅读

基本信息 题目:Monocular Arbitrary Moving Object Discovery and Segmentation 作者: 来源:BMVC 时间:2021 代码地址:https://github.com/michalneoral/Raptor Abstract 我们提出了一种发现和分割场景中独立移动的…...

ROS | 命名空间

文章目录 概述一、定义介绍二、原理解读1.命名空间2.调用规则概述 本节详细介绍了ROS中的命名空间机制原理和使用。 一、定义介绍 在ROS(Robot Operating System)中,命名空间是一种用于组织和区分节点、话题、服务和参数等资源的层次结构。命名空间使用斜线(/)作为分隔符…...

【中国数据】中国基础矢量数据(shp格式)

数据目录 数据举例 数据获取 专栏分享常用的地理空间数据,包括矢量数据、栅格数据、统计数据等,订阅专栏后,从私信查收专栏完整数据包,持续同步更新。...

Docker:创建主从复制的Redis集群

一、Redis集群 在实际项目里,一般不会简单地只在一台服务器上部署Redis服务器,因为单台Redis服务器不能满足高并发的压力,另外如果该服务器或Redis服务器失效,整个系统就可能崩溃。项目里一般会用主从复制的模式来提升性能&#x…...

c++ 智能指针

1. 起源 c++ 把内存的控制权对开发人员开放,让程序显式的控制内存,这样能够快速的定位到占用的内存,完成释放的工作。但是这样也会引发一些问题,也就是普通指针的隐患: 1.1 野指针 出现野指针的有几个地方 : 指针声明而未初始化,此时指针的将会随机指向内存已经被释放…...

【vue3】依赖注 provide、inject(父组件与儿子、孙子、曾孙子组件之间的传值)

一、基本用法&#xff1a; //父组件 import { ref, provide } from vue const radio ref<string>(red) provide(myColor,radio) //注入依赖//儿子组件、孙子组件、曾孙子组件 import { inject } from vue import type { Ref } from vue; const myColor inject<Ref&l…...

docker 部署tig监控服务

前言 tig对应的服务是influxdb grafana telegraf 此架构比传统的promethus架构更为简洁&#xff0c;虽然influxdb开源方案没有集群部署&#xff0c;但是对于中小型服务监控需求该方案简单高效 本文以docker-compose来演示这套监控体系的快速搭建和效果。 部署 docker-compos…...

ETL工具与数据处理的关系

ETL工具与数据处理之间存在密切的关系。数据处理是指对原始数据进行清洗、整理、加工和分析等操作&#xff0c;以便生成有用的信息和洞察力。而ETL工具则提供了一种自动化和可视化的方式来执行这些数据处理任务。通过ETL工具&#xff0c;用户可以定义数据抽取、转换和加载的规则…...

Flink几个性能调优

1 配置内存 操作场景 Flink是依赖内存计算&#xff0c;计算过程中内存不够对Flink的执行效率影响很大。可以通过监控GC&#xff08;Garbage Collection&#xff09;&#xff0c;评估内存使用及剩余情况来判断内存是否变成性能瓶颈&#xff0c;并根据情况优化。 监控节点进程的…...

后端工程进阶| 青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天 并发编程 协程Goroutine通道Channel锁Lock 并发基础 串行程序与并发程序&#xff1a;串行程序特指只能被顺序执行的指令列表&#xff0c;并发程序则是可以被并发执行的两个及以上的串行程序的综合体。并发程序与并行程序…...

EPPlus库的安装和使用 C# 中 Excel的导入和导出

安装 工具栏->NuGet 包管理器->管理解决方案的NuGet程序包 安装到当前项目中 使用 将 DataGridView 数据导出为Excel 首先&#xff0c;需要将数据DataGridView对象转换为DataTable private void btnExport_Click(object sender, EventArgs e) {// 1.将当前页面的data…...

深度学习使用Keras进行迁移学习提升网络性能

上一篇文章我们用自己定义的模型来解决了二分类问题,在20个回合的训练之后得到了大约74%的准确率,一方面是我们的epoch太小的原因,另外一方面也是由于模型太简单,结构简单,故而不能做太复杂的事情,那么怎么提升预测的准确率了?一个有效的方法就是迁移学习。 迁移学习其…...

越流行的大语言模型越不安全

源自&#xff1a;GoUpSec “人工智能技术与咨询” 发布 安全研究人员用OpenSSF记分卡对GitHub上50个最流行的生成式AI大语言模型项目的安全性进行了评估&#xff0c;结果发现越流行的大语言模型越危险。 近日&#xff0c;安全研究人员用OpenSSF记分卡对GitHub上50个最流…...

搜维尔科技:伦敦艺术家利用Varjo头显捕捉盲人隐藏的梦想

在伦敦举行的弗里泽艺术博览会上,与专业级虚拟现实/XR硬件和软件领域的全球领先者Varjo合作,展示一个突破性的混合现实艺术装置, 皇家国家盲人学会 (rnib),英国领先的视力丧失慈善机构。 这个名为"公共交通的私人生活"的装置是一个互动的声音和图像雕塑,旨在让有眼光…...

如何将html转化为pdf

html转换为pdf html2pdf.js库&#xff0c; 基于html2canvas和jspdf&#xff0c;只能打印2-3页pdf&#xff0c;比较慢&#xff0c;分页会截断html2canvas 只能打印2-3页pdf&#xff0c;比较慢&#xff0c;分页会截断 // canvasDom-to-image 不支持某些css属性Pdfmake html-to-p…...

ES6初步了解生成器

生成器函数是ES6提供的一种异步编程解决方案&#xff0c;语法行为与传统函数完全不同 语法&#xff1a; function * fun(){ } function * gen(){console.log("hello generator");}let iterator gen()console.log(iterator)打印&#xff1a; 我们发现没有打印”hello…...

飞桨大模型套件:一站式体验,性能极致,生态兼容

在Wave Summit 2023深度学习开发者大会上&#xff0c;来自百度的资深研发工程师贺思俊和王冠中带来的分享主题是&#xff1a;飞桨大模型套件&#xff0c;一站式体验&#xff0c;性能极致&#xff0c;生态兼容。 大语言模型套件PaddleNLP 众所周知PaddleNLP并不是一个全新的模型…...

【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]

阅读导航 前言一、unordered系列容器二、unordered_map1. unordered_map简介⭕函数特点 2. unordered_map接口- 构造函数- unordered_map的容量- unordered_map的迭代器- unordered_map的元素访问- unordered_map的修改操作- unordered_map的桶操作 三、unordered_set1. unorde…...

创建 Edge 浏览器扩展教程(上)

创建 Edge 浏览器扩展教程&#xff08;上&#xff09; 介绍开始之前后续步骤开始之前1&#xff1a;创建清单 .json 文件2 &#xff1a;添加图标3&#xff1a;打开默认弹出对话框 介绍 在如今日益数字化的时代&#xff0c;浏览器插件在提升用户体验、增加功能以及改善工作流程方…...

container_of解析及应用

container_of是一个C语言中比较少见&#xff0c;但实际经常用到的宏&#xff0c;在Linux kernel中也有大范围的应用。...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...