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 还与明显被遮挡的对象(树叶、条形后面……)作斗争,有时会返回静态但语义上有意义的对象。

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

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

相关文章

TDengine(taos)数据库导出历史数据

业务需求:导出某个站点的累计充电量,累计放电量,光伏总放电量,进线总功率的所有数据‘ 1、登录taos,使用存数据的库; 提示Database changed;即为使用成功; 2、找到你想要导出的字段…

制作macOS Ventura U盘启动盘教程

macOS 14更新一段时间了,发现某些应用不适配想要无损降级,如何进行macOS的降级呢,除了备份好的时间机器备份,还需要一个可以引导的macOS U盘安装器,如何制作macOS 13 Ventura 系统启动U盘呢,小编带来对新手…

【uniapp】小程序开发7:自定义组件、自动注册组件

一、自定义轮播图组件、自动注册 以首页轮播图组件为例。 1、创建组件文件src/components/my-swipper.vue 代码如下&#xff1a; <template><view><view class"uni-margin-wrap"><swiper class"swiper" circular :indicator-dots…

ES6初步了解生成器

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

前端(二十三)——轮询和长轮询

&#x1f62b;博主&#xff1a;小猫娃来啦 &#x1f62b;文章核心&#xff1a;实现客户端与服务器实时通信的技术手段 文章目录 前言轮询技术轮询的概念轮询的实现原理轮询的优缺点轮询的使用场景 长轮询技术长轮询的概念长轮询的实现原理长轮询的优缺点长轮询的使用场景 轮询与…

《C和指针》笔记34:字符串函数

文章目录 1. 获取字符串长度strlen 2. 复制字符串strcpystrncpy 3. 拼接字符串strcatstrncat 4. 字符串比较strcmpstrncmp 1. 获取字符串长度 strlen 库函数strlen的原型如下&#xff1a; size_t strlen( char const *string );注意strlen返回一个类型为size_t的值。这个类型…

用 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…

【JavaEE】网络原理---TCP协议的易懂图文详解(确认应答、超时重传、连接管理、滑动窗口、流量控制)

一、TCP协议 TCP&#xff0c;即Transmission Control Protocol&#xff0c;传输控制协议。人如其名&#xff0c;要对数据的传输进行一个详细的控制。 1.1 TCP协议格式 &#xff08;为了方便排版这样化的&#xff0c;我们从上到下依次理解&#xff09; 二、TCP原理 2.1 确…

【Spring】使用aop切面编程时要给那些类加注解

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理 Spring 中使用aop切面编程时要给那些类加注解 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一…

使用达梦数据库的总结

–修改当前会话所在模式&#xff1a; set schema 模式名;–创建表空间、用户名并为用户指定表空间&#xff0c;并为用户授权 create tablespace "RSGL_BZK" datafile REGL_BZK.DBF size 7488 autoextend on next 128 maxsize 33554431 CACHE NORMAL; create user …

UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解

目录 0 引言1 全局对象&#xff08;全局变量&#xff09;1.1 游戏实例 GameInstance1.1.1 介绍1.1.2 使用 GameInstance 1.2 玩家控制器 PlayerController1.3 游戏世界类 UWorld &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;UE虚幻引擎专栏&…

优雅的使用String字符串处理各种类型转换

文章目录 &#x1f31f; 优雅的使用String字符串处理各种类型转换&#x1f34a; 基本类型转字符串&#x1f34a; 字符串转基本类型&#x1f34a; 字符串与字符数组的转换&#x1f34a; 字符串与字节数组的转换&#x1f34a; 其他类型转字符串&#x1f34a; 总结 &#x1f4d5;我…

Flask后端开发(一)-基础知识和前期准备

目录 1.背景介绍1.1. 项目背景1.2. 项目难点1.3. 项目环境 2. flask后端开发实现的功能3. flask部署和前后端对接3.1. flask运行配置和服务器部署3.2. flask前后端传参 4. 后端测试工具4.1. 工具介绍4.2. 工具使用 后记 1.背景介绍 1.1. 项目背景 就是前几个月临时接手了一个…

CPU眼里的C/C++: 1.3 汇编级单步调试函数执行过程

1. 目的 2. 基于 GDB 的汇编级单步调试 原始代码 #include <stdio.h>long test() {long a 1;a 2;return a; }int main() {int ret test();printf("test return %d\n", ret);return 0; }关键 gdb 命令 si 指令执行汇编级的单步调试info registers 读取寄…

【RocketMQ系列十四】RocketMQ中消息堆积如何处理

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

RabbitMQ原理(五):消费者的可靠性

文章目录 3.消费者的可靠性3.1.消费者确认机制3.2.失败重试机制3.3.失败处理策略3.4.业务幂等性3.4.1.唯一消息ID3.4.2.业务判断 3.5.兜底方案 3.消费者的可靠性 当RabbitMQ向消费者投递消息以后&#xff0c;需要知道消费者的处理状态如何。因为消息投递给消费者并不代表就一定…

Unsupervised Medical Image Translation with Adversarial Diffusion Models

基于对抗扩散模型的无监督医学图像翻译 论文链接&#xff1a;https://arxiv.org/abs/2207.08208 项目链接&#xff1a;https://github.com/icon-lab/SynDiff Abstract 通过源-目标模态转换对缺失图像进行补全可以提高医学成像方案的多样性。利用生成对抗网络(GAN)进行一次映…

Leetcode—104.二叉树的最大深度【简单】

2023每日刷题&#xff08;六&#xff09; Leetcode—104.二叉树的最大深度 递归实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int maxDepth(struct TreeNode* root){…

分类预测 | MATLAB实现SSA-CNN-GRU-Attention数据分类预测(SE注意力机制)

分类预测 | MATLAB实现SSA-CNN-GRU-Attention数据分类预测&#xff08;SE注意力机制&#xff09; 目录 分类预测 | MATLAB实现SSA-CNN-GRU-Attention数据分类预测&#xff08;SE注意力机制&#xff09;分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现…

C#,数值计算——分类与推理Phylo_upgma的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Phylo_upgma : Phylagglom { public override void premin(double[,] d, int[] nextp) { } public override double dminfn(doubl…