GSANet:使用无监督学习实现视频对象分割

2024-08-25 21:36

本文主要是介绍GSANet:使用无监督学习实现视频对象分割,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​Abstract

无监督视频对象分割的目标是在视频序列中分割出最显著的对象。然而,复杂背景的存在和多个前景对象的出现使这一任务充满挑战。为了解决这个问题,我们提出了一种引导槽注意力网络,以增强空间结构信息并获得更好的前景与背景分离。通过查询引导初始化的前景和背景槽,基于与模板信息的交互对其进行迭代优化。此外,为了改进槽与模板的交互并有效融合目标和参考帧中的全局和局部特征,我们引入了K-近邻过滤和特征聚合转换器。该模型在两个流行数据集上达到了最新的性能水平。此外,通过各种对比实验,我们展示了该模型在复杂场景中的鲁棒性。

源代码:https://github.com/Hydragon516/GSANet.

Instroduction

视频对象分割(VOS)是计算机视觉中的一项关键任务,旨在逐帧分割视频序列中的对象。VOS被用作视频字幕生成、光流估计和自动驾驶等任务的预处理。VOS任务根据是否有明确的目标监督信息可以分为半监督和无监督两种方法。在半监督VOS中,模型提供了初始帧的分割掩码,其目标是在整个视频序列中跟踪并分割指定对象。而无监督VOS要求模型在没有任何外部指导或初始帧掩码的情况下,寻找并分割视频序列中最显著的对象。无监督VOS是一个更具挑战性的任务,因为它涉及到在输入视频中搜索一致出现的常见对象并有效提取它们的特征。
由于无监督VOS的难度,基于深度学习的无监督VOS模型近年来备受关注。特别是,许多方法整合了光流等额外的运动信息与RGB外观信息,因为目标对象通常表现出显著的运动。这些方法专注于如何恰当地融合外观和运动信息。这两种信息可以相互补充并为预测提供有用的线索。然而,它们存在过度依赖运动线索而忽略场景结构信息(如颜色、纹理和形状)的问题。在场景结构复杂或光流图质量较低的情况下,这些方法无法可靠运行。
为了解决这些问题,我们提出利用最初在以对象为中心的学习中引入的槽注意力机制。这一机制使得从充满上下文信息的特征中提取关键的空间结构信息成为可能,这是区分前景和背景所必需的。我们关注槽注意力的原因是对象为中心的学习与无监督VOS之间有着共同的直觉,即两者都旨在自我学习并分割对象和背景的显著特征。在以对象为中心的学习中,槽注意力生成随机初始化的空槽,并对输入图像特征执行迭代多头注意力,以为每个槽存储单个对象和背景信息。这些存储在每个槽中的对象和背景的单个信息通过捕捉单个对象及其上下文的独特特征和相互作用,提供了稳健的前景和背景区分能力。这种区分的直觉也可以应用于无监督VOS模型,以增强区分最显著对象的能力。然而,现有的基于槽注意力的图像分割方法存在一个显著的局限性,即它们仅在具有统一颜色和布局的合成图像或通过颜色和形状或简单纹理(如光流图)清晰区分的对象上效果良好,而在复杂的现实场景中表现不佳。这一限制的原因有:1)随机初始化的槽难以在复杂场景中代表合理的上下文,2)现有的简单多头注意力操作缺乏稳健的特征区分能力,以及3)在存在复杂背景和多个相似对象的情况下,对所有输入特征的注意力可能成为噪声。
为了解决这些局限性,我们提出了一种新的引导槽注意力网络(GSA-Net)机制,该机制使用引导槽、特征聚合转换器(FAT)和K-近邻(KNN)过滤。该模型通过嵌入编码器目标帧特征中的上下文信息生成引导槽,这些信息包括关于前景和背景候选的粗略空间结构信息。我们的槽注意力机制不同于现有的槽注意力机制,它们采用随机初始化的空槽作为查询特征,而我们的方法防止了槽在迭代多头注意力的初始阶段以错误方式训练。此外,为槽提供指导信息使得模型在复杂的现实场景中保持稳健的上下文提取能力。更进一步地,我们的模型从目标帧和参考帧中提取并聚合全局和局部特征,用作引导槽注意力的键和值。为此,我们设计了FAT以创建有效聚合全局和局部特征的特征。这些特征与引导槽进行迭代注意,以通过传递丰富的上下文信息逐步优化槽的空间信息。通过这种方式,我们补充了之前槽注意力的简单多头注意操作,增强了特征区分能力。特别是,提出的槽注意力使用KNN过滤在特征空间中采样与槽接近的特征,依次传递用于槽重建的有用信息。这在具有多个类似目标对象的复杂场景中稳定了槽优化过程,并帮助生成精确的重建图。换句话说,我们的槽注意力逐步采样并使用与目标对象高度相似的输入特征,而不是像现有方法那样同时使用所有输入特征。图1显示了提出的引导槽注意力在挑战性场景中仍然保持强大的前景和背景分离能力。
我们的方法在两个广泛使用的数据集上进行了评估:DAVIS-16和FBMS。这些数据集包含多样且具挑战性的场景,我们的模型在这两个数据集上都达到了最新的性能水平。此外,通过各种消融研究,我们证明了模型的有效性,并展示了它在挑战性序列中实现稳健视频对象分割的能力。

3.Method

3.1. 整体架构

图2展示了所提出的GSA(Guided Slot Attention,指导槽注意力)的整体结构。所提出的模型使用一个目标帧图像和NR个参考帧图像作为输入。首先,槽生成器从编码后的目标帧图像特征中生成前景和背景指导槽。这些槽包含目标前景对象和背景的指导信息。此外,GSA使用局部提取器提取目标图像的局部特征,包括详细信息,并使用全局提取器提取参考帧的全局特征。我们设计了一个聚合Transformer来整合这些信息,并有效地融合目标帧特征和参考帧特征。最终,模型使用聚合后的特征和指导槽进行槽注意力。在这个过程中,槽通过基于KNN算法的融合特征进行精细调整。结果,槽包含了不同的特征信息,以生成准确的掩码。请注意,所提出的模型具有与RGB图像流相同的光流(optical flow)流,该过程在图2中被省略。由RGB图像和光流生成的特征将在一个解码器中进行拼接。

## 3.2. 槽生成器


 


结果,槽生成器创建了一个指导槽块

,通过此过程,槽生成器使用有用的特征初始化槽,以进行最终的掩码生成,并用它们作为指导。因此,与使用随机初始化槽的先前槽注意力方法不同,可以为对象创建一个稳健且准确的掩码。特别是,我们在第4.6节中证明,每个槽在模型训练后都包含前景和背景的信息。

3.3. 局部与全局提取器

图3(b)和(c)分别展示了所提出的局部提取器和全局提取器的结构。我们在训练时使用一个目标帧和多个参考帧。局部提取器旨在通过在特征层次上进行k均值聚类来提取目标帧的详细信息。此外,全局提取器为每个前景对象和背景生成软对象区域,并利用这些区域提取参考帧的全局信息,充分利用大量信息。
 


接下来,通过通道级softmax操作生成

,该过程可表示为:
 

3.4. 特征聚合Transformer

3.5. 指导槽注意力

提出的指导槽注意力在概念上类似于之前的方法,因为它受到先前方法的启发。然而,如图4所示,提出的槽注意力在结构上有几个改进。首先,如第3.2节所述,提出的槽注意力使用从槽生成器生成的指导槽。这与之前的槽注意力方法使用随机初始化的空槽形成对比。所提出的模型通过使用提供了前景和背景区分的初始指导信息。因此,这使槽包含更准确的前景和背景特征。
其次,使用K最近邻(KNN)算法从聚合特征中选择与每个槽最接近的N个特征,其中n = 1, 2, …, N。它旨在通过与槽执行的注意力操作来精炼特征,以尽量减少噪声并在注意力过程中稳定学习。另一方面,之前的槽注意力计算槽与所有输入特征之间的注意力。这解决了先前方法中的一个著名问题,即许多相似的对象作为噪声出现,导致性能下降。
最后,所提出的模型使用与先前工作类似的迭代注意机制来更新槽,但我们应用了第3.4节描述的FAT。FAT在指导槽和选定特征

之间执行自注意力操作。

3.6. 掩码生成和损失函数

如图2所示,在指导槽注意力之后,模型获取了聚合特征和精细化槽,用于前景和背景。在以对象为中心的学习任务中,槽注意力(Slot Attention)使用基于自编码器的槽解码器进行无监督图像分割。然而,对于无监督视频对象分割,由于我们可以获得目标对象的真实掩码,我们设计了一个基于槽余弦相似度的新槽解码器。我们计算编码器特征与特征之间的像素级余弦相似度。由、和生成的RGB流相关性图


表示如下:

4.Experiments

定量结果。表1显示了所提出的GSA-Net的定量结果。我们的模型分别在ResNet101和MiT-b2骨干编码器上进行了评估。在大多数传统的无监督视频对象分割(VOS)方法中,采用了单尺度测试而不进行测试时增强。然而,为了与HFAN进行公平比较,我们包括了多尺度测试和测试时增强的结果。如表所示,我们的方法在这两个具有挑战性的数据集上都达到了最新的性能水平。特别是,与HFAN在512×512分辨率下的性能相比,所提出的GSA-Net在实现更快的FPS和更高性能的同时,展示了相当的表现。与DAVIS-16 相比,FBMS包括了单对象和多对象场景。显著的是,即使在这些更复杂的场景中,我们提出的方法也大幅度超越了所有现有的方法。这一结果展示了GSA-Net在处理包含多个对象的视频时的鲁棒性。
 


定性结果。 我们使用DAVIS-16数据集将我们提出的GSA-Net模型与两个最新的模型HFAN和TMO进行了性能比较。图5中展示的结果表明,GSA-Net在各种具有挑战性的视频序列中都优于HFAN和TMO。特别是,GSA-Net在具有复杂背景且目标对象与其他对象在外观上相似的情况下表现出强大的鲁棒性,这在Breakdance序列中得到了展示。此外,GSA-Net模型即使在对象具有极端尺度变化的情况下,也能实现一致的特征提取,这在Motocross-Jump序列中得到了证明。总体而言,这些结果表明,GSA-Net在处理具有挑战性的视频序列中的对象跟踪任务方面是一种很有前途的方法。
 


消融分析。本节包含对所提出模型的各种消融实验。所有实验都在与ResNet101骨干相同的512×512图像分辨率下进行评估。
指导槽的效果。表2 (b)、©和图6展示了所提出的指导槽的效果。与现有的随机初始化槽的方法相比,使用所提出的槽生成器生成的槽在所有评估指标中显示出显著的性能提升。特别是,图6展示了在使用随机初始化槽和指导槽时最终精细化的前景和背景槽掩码,它在包含多个对象的复杂RGB图像中表现出强大的目标对象区分能力。
 


 


KNN过滤和FAT的效果。表2 (d)、(e)和(f)展示了所提出的KNN过滤和FAT的有效性,两者在所有评估指标中都显示出了显著的性能提升。特别是,FAT通过有效地整合来自目标帧的局部信息和参考帧的全局信息,展示了比标准Transformer块更强的掩码精度。此外,KNN过滤在包含多个目标对象的FBMS数据集上展示了高性能的提升,表明通过特征采样,它能够通过槽注意力有效提取多对象的广义特征。
测试时迭代次数的影响。图7和图8展示了在模型测试阶段,根据所提出的指导槽注意力的迭代次数T,性能的变化情况。所提出的指导槽注意力通过反复应用注意力机制,提高了精细化槽掩码的质量。特别值得注意的是,所提出的方法在三次迭代后表现出性能提升,之后的性能变化不再显著。这表明,通过KNN过滤和FAT,槽已经得到了充分的精细化。随着迭代次数的增加,模型的推理时间也会增加,因此T=3被认为是最优的。
 

结论

本文的主要贡献可以总结如下:

1.本文提出了一种新的引导槽注意力机制,用于无监督视频对象分割,该机制利用引导槽和KNN过滤有效分离复杂场景中的前景和背景空间结构信息。
2.提出的模型通过嵌入目标帧的粗略上下文信息生成引导槽,并从目标帧和参考帧中提取并聚合全局和局部特征,以通过引导槽注意力迭代优化槽。
3.提出的方法在两个流行数据集上达到了最新的性能水平,并通过各种消融研究展示了在挑战性序列中的稳健性。

本文引用文章:

Guided Slot Attention for Unsupervised Video Object Segmentation

关注我的公众号auto_driver_ai(Ai fighting), 第一时间获取更新内容。

AiFighing是全网第一且唯一以代码、项目的形式讲解自动驾驶感知方向的关键技术,关注我,一起学习自动驾驶感知技术。

这篇关于GSANet:使用无监督学习实现视频对象分割的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106710

相关文章

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(