VOS论文阅读:Fast Video Object Segmentation using the Global Context Module(2020 ECCV)

2023-11-01


在这里插入图片描述
A real-time, high-quality semi-supervised video object segmentation algorithm:Its accuracy is on par with the most accurate, time-consuming online learning model, while its speed is similar to the fastest template-matching method with sub-optimal accuracy.
论文中建立了一个实时、高精度的半监督模型,精度与准确率高、耗时久的online-training方法相当,速度与精确率一般、速度快的template-matching方法相当。
(这篇依旧是基于STM思路的改善,在最终的结果比较里,相比与STM(NO YTB)的结果只能是有竞争力,并未显著提升,但是速度提高显著为STM的3倍。2020 ECCV部分论文均为基于STM的改进,其余几篇在我博客里)

Contribution

STM makes a further step to use all previous frames with the corresponding object segmentation results to infer the object mask on the current frame.

2019 ICCV论文 STM在获得最高性能的同时,存在一个影响性能的关键问题就是时空存储的成本,在STM中随着对视频序列中帧的预测,将已经预测的帧放入memory module,就意味着不断增大的内存消耗和Key Query匹配时的时间消耗为了性能、内存和速度的权衡,STM最终建议选择每5帧存入memory module,但是时间的线性复杂度依然存在,并且记忆频率的降低破坏了利用来自先前帧的信息的原始目的。

这篇论文的core component是一个新颖的全局上下文模块global context module),
(1):该模块可以有效地汇总(summarizes)和传播(propagate)整个视频序列中的信息(区别于仅适用一帧或几帧来指导当前帧分割的方法,使用了来自视频序列中的所有帧)
(2):该模块使用了固定大小的特征表示,即使用了与视频长度无关的恒定内存,显著减少了内存和计算成本, light-weight,从而实现了实时速度。

同时,Experiments on DAVIS and YouTube-VOS benchmarks show that our proposed global context module can achieve top accuracy in video object segmentation and is highly efficient that runs in real time.

pipeline:充分利用先前帧以及预测出的mask,通过Global Context Module 产生Global Context Features来增强当前帧的外观表示,产生更好的分割结果。当视频向前移动一帧,该表示会自动更新。
在这里插入图片描述

Method

Global Context Module

结构为解码器-编码器结构,并且GC模块构建在编码器的顶部,其中主要操作为:
1、对处理后的帧及其预测的mask进行上下文特征的提取和更新
2、使用上下文特征描述用于处理当前帧,使用Decoder生成最终分割结果。
蓝色的Encoder使用RGB和Mask作为输入,以将帧和分割信息编码仅特征空间中。
黄色的Encoder使用当前帧的RGB图像作为输入,编码特征嵌入。
在这里插入图片描述

Context Extraction and Update

当提取全局上下文特征时,全局上下文模块首先按照与STM模块相同的步骤生成keyvalue,其大小分别为H×W×CnH×W×Cm,其中CnCm是通道数。与直接存储keyvalue的STM模块不同,全局上下文模块通过全局汇总进一步处理。

全局汇总不将key视做每个位置尺寸为Cm的H×W向量,而是将Cm 1通道映射为所有位置的未归一化权重(Cm × HW)。对于每个这样的加权,全局上下文模块计算value的加权总和,其中每个值由标量在加权的相应位置处加权。 每个这样的加权和称为全局上下文向量。 全局上下文模块将所有CM全局上下文向量组织到全局上下文矩阵中,作为全局摘要的输出。 该步骤可以有效地实现为key矩阵和value矩阵的转置之间的矩阵乘积,可以由以下公式表示:
在这里插入图片描述
其中t表示当前帧,Xt是GC模块的输入(即当前帧在Encoder模块的输出),k和v是生成key和value的模块,Ct是该帧对应的上下文矩阵,然后通过简单地利用该上下文矩阵来更新全局上下文矩阵。Gt是前t帧的全局上下文,G0是一个零矩阵,通过权重加权,表示了每个Ct对于总体Gt的贡献。
在这里插入图片描述

Context Distribution

在将上下文特征存储之后,需要对distribution process,首先
模型使用与STM相同的方法为当前帧产生QueryValue。但是与STM不同的是,STM模块使用Query来计算与Memory中Key的相似性得分,然后计算使用相似性得分加权后的memory value的总和;而GC模块,则把Query解释为对内存中全局上下文特征的一组加权权重,并计算上下文特征的加权作为对应当前帧的分布式上下文信息,公式:q为计算Query的模块,Xt为当前帧通过Encoder计算得到的特征,Gt-1为前t-1帧的全局上下文特征,Dt为通过加权的分布式全局特征
在这里插入图片描述
全局上下文模块即summarize过去帧中上下文特征在当前帧的Query 位置中感兴趣的语义区域,与STM模块的区别如下图所示:
在这里插入图片描述
STM模块通过首先通过query-key匹配来识别此类区域,然后通过加权和来汇总其值来实现此目的。 全局上下文模块更有效地实现了相同的目标,因为全局上下文向量已经是所有过去框架中具有相似语义的区域的全局摘要。querying location仅需要确定全局上下文向量的适当权重即可产生一个向量,该向量汇总了所有自身感兴趣的区域。

Comparison with the Space-Time Memory Module

Implementation

Encoder和Decoder的设计上和STM一致,使用ResNet50作为作为 context encodercurrent encoderbackbone,其中 context encoder 使用四通道输入(RGB+Mask),current encoder使用三通道输入(RGB)。使用Res4产生的特征图来生成key和value。
在通过context distribution operation后,将上下文特征压缩到256通道后送入Decoder里。
key value query的产生均由3×3卷积实现,并且将Cm设置为512,将Cn设置为128

论文中使用了更大的channel测试,在提高复杂性的同时,反而带来了性能的衰减。
在这里插入图片描述

Training

Pre-training on images

使用静态数据集MSRA10KECSSDHKU-IS,共计15000张图像。使用图像随机变换产生相邻的三帧:随机旋转[-30,30],随机缩放比例[-0.75,1.25],thin plate spline (TPS) warping和随机裁剪生成视频模拟数据。
在4 GPU,8 batch-size的情况下,训练100 epoch。

Fine-tuning on videos

在视频数据集上对预训练模型进行fine-tune,学习率为1e-6,训练30 epcoh。每个训练样本包含几个从训练视频中按时间顺序排列的帧(测试了不同的视频clip长度3\6\9,但是>3的长度没有收益),使用随机旋转、缩放和随机帧采样间隔来获得更长的外观变化的鲁棒性。
在训练阶段,第一帧使用真值送入Encoder,网络预测出第二帧的预测mask,然后将损失反向传播;使用网络预测的第二帧mask送入Encoder中,以推断第三帧上的mask。

Result

DAVIS 2016:
在这里插入图片描述
STM :6.7 Fps
RANet :8.3 Fps
GC :25.0 Fps
并且STM的时间复杂度随着视频序列长度而线性增加。
在这里插入图片描述
DAVIS 2017:
在这里插入图片描述
Youtube-VOS:
在这里插入图片描述

GC 全局上下文特征的可视化:
展示了global context key的两个通道的可视化。
在这里插入图片描述

一些想法

The essence is to learn an invariant representation that accounts for the variation of object appearance across frames.
半监督VOS的实质就是通过第一帧及其mask,学习一个不变的表示,该表示形式说明对象外观在整个帧中的变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VOS论文阅读:Fast Video Object Segmentation using the Global Context Module(2020 ECCV) 的相关文章

  • Python三维绘图——Matplotlib

    菜鸡的第一篇博客 学习一下大佬的笔记 1 创建三维坐标轴对象Axes3D 方法一 利用关键字 projection 3D 来实现 方法一 利用关键字 objection 3d from matplotlib import pyplot as
  • JAVA【设计模式】开闭原则

    开闭原则 一 设计模式的规范 二 开闭原则 三 示例 开闭原则设计 UML关系图 一 设计模式的规范 设计模式遵循六 原则 单 职责 个类和 法只做 件事 替换 多态 类可扩展 类 依赖 倒置 细节依赖抽象 下层依赖上层 接 隔离 建 单
  • QT-事件循环机制

    QT事件循环理解 一 常见问题 问题 Qt中常见的事件有哪些 答 鼠标事件 QMouseEvent 键盘事件 QKeyEvent 绘制事件 QPaintEvent 窗口尺寸改变 QResizeEvent 滚动事件 QScrollEvent
  • R语言缺失值探索的强大R包:naniar

    简介 缺失值在数据中无处不在 需要在分析的初始阶段仔细探索和处理 在本次示例中 会详细介绍naniar包探索缺失值的方法和理念 它和ggplot2和tidy系列使用方法非常相似 上手并不困难 有时 解释缺失值出现的原因可能很简单 比如 可能
  • 紧跟产业区块链趋势,杭州米链科技运用区块链科技,赋能实体产业

    近日 2020年全球区块链发展趋势报告 发布 报告中指出 进入2020年之后 疫情倒逼全球各国和各行业的数字化进程加速 进而推动互联网服务也进一步升级 即需从消费互联网发展到 产业互联网 产业互联网的发展 对相关信息基础设施的可信 开放 敏
  • 【待完善】常见更改源操作(ubuntu、centos、pip等等)

    1 pip 临时切换 在进行安装时 加上 i https pypi tuna tsinghua edu cn simple选项 如 pip3 install tensorflow model analysis i https pypi tu
  • VisualStudio Code 安装 及常用插件

    首先检查电脑位数64还是32 在电脑桌面 鼠标右键单击 此电脑 属性 系统类型 官网下载页面 https code visualstudio com Download 一 同意协议 二 选择安装路径 英文路径 默认C盘也可以 默认安装路径为
  • 千年虫”bug归来,新一代程序员将如何解决

    新的十年开始了 二十年前 在千禧之年钟声敲响的时候 诸多 Y2K 应急队的程序员坐在电脑前惴惴不安 他们此前刚刚用最简单易行的 懒人方法 修补了一个被称为 千年虫 Millennium Bug 又称 Y2000 problem 简称 Y2K
  • 网络地址转换NAT

    1 局域网内主机如何与互联网上主机通信 假设局域网内主机分配到本地IP地址 但想和互联网上的主机通信 那么应当采取什么措施呢 最简单的办法就是设法申请一些全球IP地址 但这几乎无法做到 因为IPv4地址资源很早就被列强瓜分完毕 ipv4地址
  • 服务器租用机房机房的类型应该如何选择

    服务器租用机房机房的类型应该如何选择 1 单电信机房 单电信服务器机房业务模式比较固定 访问量也不是很大 适合新闻类网站或政务类网站 如果网站的PV流量持续增加 建议后期采用租赁CDN的方式解决非电信用户访问网站速度过慢的问题 2 双线机房
  • 3. 静态编译和动态编译

    简单的说 1 平时直接 gcc o 编译的都是动态编译的方法 2 动态编译是 gcc shared fPIC o 的方法生成 so动态库 再用 gcc o 把 so和main c编译成可执行文件 总结 静态库是必须要链接到执行文件中去的 而
  • 【NLP】第 7 章:使用序列到序列神经网络进行文本翻译

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 设计模式-单例模式-懒汉式饿汉式探讨

    文章目录 基础概念 饿汉式实例 懒汉式实例 懒汉式实例 互斥锁方式保障线程安全 懒汉式实例 双重检查锁定 Double Checked Locking 保障线程安全 大型项目中单例模式实用 数据库连接池 C语言 单例模式实现线程池 C语言单
  • Linux系统下解压当前目录下的所有.zip文件到指定目录

    可以使用以下的命令在Linux系统下解压当前目录下的所有 zip文件到指定目录 find type f name zip exec unzip o d path to destination 解释 find type f name zip
  • matlab读写xlsx文件

    做数据分析时经常需要将分析的结果写入文件保存 这里就说明一下matlab读写xlsx文件的方法 调用函数如下 写文件 files 文件路径 A 数据 sheet xlsx工作表 x1Range 工作表的单元格 files strcat pw
  • [技术讨论]PCB晶振layout需要注意事项

    晶振是单片机的心脏 所以晶振的重要性不言而喻 那么在PCB layout的时候 我们对晶振要有哪些注意事项呢 一 晶振的两个重要参数 晶振的频偏是指晶振输出的频率与其额定频率之间的差异 通常以ppm 百万分之一 为单位表示 频偏可能会受到晶
  • 怎么在云服务器上跑深度学习项目,深度学习训练

    MMCV 是一个面向计算机视觉的基础库 它支持了很多开源项目 注意事项 RTX 3000 系列显卡在 PyTorch 1 8 1 For CUDA 11 1 上 MMCV 目前工作不正常 使用此系列显卡时 请选择 PyTorch 1 7 1
  • C语言循环数组解决数学问题,通过C语言数组解决一些简单的递推数学问题

    通过C语言数组解决一些简单的递推数学问题 c语言是一种十分适合解决数学问题的编程语言 其中数组对于解决递推问题有十分优秀的作用 数组 数组就是变量的集合 是一种指定义变量的方法 一维数组 定义 类型 数组 数量 里的整数表示变量的数量 in
  • 【猿人学WEB题目专解】猿人学第2题

    据说 看我文章时 关注 点赞 收藏 的 帅哥美女们 心情都会不自觉的好起来 前言 作者简介 大家好我是 user from future 意思是 来自未来的用户 寓意着未来的自己一定很棒 个人主页 点我直达 在这里肯定能找到你想要的 专栏介

随机推荐

  • 【计算机视觉

    文章目录 一 ZeroWaste 二 Aircraft Context Dataset 三 BdSLImset Bangladeshi Sign Language Image Dataset 四 COCO Tasks 五 Deep PCB
  • fragment中嵌套viewpager,vierpager中有多个fragment,不显示 .

    http blog csdn net shaoyizhe2006 article details 27352349
  • PID 算法 (温控为例子)

    一 位式控制 位式控制算法输出信号一般只有高低两种状态 算法输出信号out的依据 PV lt SP gt H PV gt SP gt L 对于系统惯性 会导致系统震荡 PID算法 基于位式控制 做了很多优化 SP Set Point PV
  • 《数学建模实战攻略:常用数学理论与方法Matlab》

    一 简介 在数学建模过程中 选择合适的数学理论和方法对于解决问题至关重要 在本篇博客中 我们将介绍数学建模中经常用到的一些数学理论和方法 包括线性代数 微积分 概率论与统计以及优化方法 此外 我们将通过一个简单的示例来展示如何使用MATLA
  • 【纯干货】神奇的Ctrl键,Linux运维常用快捷键!

    Ctrl 可以带来什么意想不到的效果呢 是否所有的Linux运维常用快捷键你都已经掌握了呢 小编发现不少小伙伴们在学习以及Linux运维工作中 操作命令行还在用很土很没效率的方法 例如频繁用方向键移动命令行光标 频繁敲重复的命令等 为了解决
  • HA主备路由模式的原理

    HA是High Availability缩写 即高可用性 可防止网络中由于单个防火墙的设备故障或网络故障导致网络中断 保证网络服务的连续性和安全强度 目前 ha功能已经是防火墙内一个重要组成部分 主备模式 Active standby 在一
  • cerr与cout的区别

    概念 std cerr是ISO C 标准错误输出流 对应于ISO C标准库的stderr 与std cout不同 ISO C 要求当cerr被初始化后 cerr flags unitbuf非零 保证流在每次输出操作后被刷新 且cerr ti
  • Sublime Text的安装与配置记录

    Sublime Text作为一款优质的Code编辑器 已更新至第4个版本 本文记录关于Sublime Text 4 版本4126 的安装 汉化 以及常用配置方法 安装 访问官网下载安装包 https www sublimetext com
  • 如何注册快手引流号?快手引流账号应该注意什么?

    快手短视频的影响力越来越大 用户也是越来越多 一个流量聚焦的平台 通过用户分享自制的短视zhi频形式获取了大量粉丝 而且不屏蔽任何引流信息 可以说是非常开放 自由 快手在短时间内就拥有大量的用户数不得不说它的推广很到位 那么快手账号应该如何
  • 【题解】游戏 (2019.08.01纪中【NOIP提高组】模拟 B 组T1) DP 博弈论

    题目来源 中山纪念中学 题目描述 Alice和Bob在玩一个游戏 游戏是在一个N N的矩阵上进行的 每个格子上都有 一个正整数 当轮到Alice Bob时 他 她可以选择最后一列或最后一行 并将其删除 但 必须保证选择的这一行或这一列所有数
  • 使用Docker部署Node.js中的Vue项目

    1 准备工作 使用服务器 阿里云 服务器系统 CentOS 7 项目配置 准备好一个项目 该项目下有以下文件 对 package json 文件进行修改 设置项目启动的端口号和使用的ip 注 在修改package json文件中的host为
  • 图解 Java 垃圾回收机制,写得非常好!

    什么是自动垃圾回收 自动垃圾回收是一种在堆内存中找出哪些对象在被使用 还有哪些对象没被使用 并且将后者删掉的机制 所谓使用中的对象 已引用对象 指的是程序中有指针指向的对象 而未使用中的对象 未引用对象 则没有被任何指针给指向 因此占用的内
  • UnsatisfiedDependencyException: Error creating bean with name XXXController'

    在springboot中遇到了UnsatisfiedDependencyException Error creating bean with name XXXController 的问题 代码如下 controller public cla
  • 编辑器组件monaco

    1 配置代码编辑器子组件monaco js
  • 计算机网络篇-运输层

    运输层 运输层向上层应用层提供通信服务 运输层是端到端的通信 也就是说通信的两端是两个主机中的应用进程 运输层还有一个很重要的功能 分用 复用 运输层的两个主要协议 用户数据报协议UDP 不需要建立连接 传输控制协议TCP 提供面向连接的服
  • AngularJS自动化测试之karma+jasmine单元测试

    单元测试专门用于测试小型 独立的代码单元 单个函数 或者较小的功能 其主要难点在于划分小的功能块 本位主要介绍AngularJS的单元测试的环境搭建 Karma是一个基于Node js的JavaScript测试执行过程管理工具 Test R
  • C++实现【获取鼠标位置】以及控制鼠标【打开窗口并点击】

    获取鼠标位置的函数源代码来自 C 认知系列 实时获取鼠标坐标 c 获取鼠标坐标 Zalamp的博客 CSDN博客 鼠标点击操作代码来自 C 控制鼠标移动到指定位置并且左键点击 c 鼠标移动 蜚语77的博客 CSDN博客 在特定程序中实现鼠标
  • Python 合并同一文件夹下所有Excel_xlsx文件

    转载 How to Consolidate Multiple Excel Workbooks With Python 想要将同一文件夹下xlsx文件合并为一个文件 代码 代码来源 仅供学习 import pandas as pd impor
  • Windows域认证(Kerberos认证)图解

    图文经过梳理与绘制已较为详细 希望能帮助大家更清晰 直观地了解Kerberos的认证过程 相关名词 DC 域控制器 KDC 密钥分发中心 AD 账户数据库 AS 身份验证服务 TGS 票据发放服务 TGT 认证票据 Ticket 票据 Ma
  • VOS论文阅读:Fast Video Object Segmentation using the Global Context Module(2020 ECCV)

    Fast Video Object Segmentation using the Global Context Module 2020 ECCV Contribution Method Global Context Module Conte