XMem: Long-Term Video Object Segmentation with an Atkinson-Shiffrin Memory Model论文以及代码浅析

多重记忆系统模型(Atkinson—Shiffrin memory mode)

该理论模型[1]是Atkinson和Shiffrin1968年提出的一种信息加工理论模型

主要核心有两点:

一是记忆存贮过程分为感觉记忆、短时存贮、长时存贮

二是短时记忆是感觉记忆与长时记忆的缓冲器,并作为信息保持进入长时记忆的加工器

短时记忆与感觉记忆的区别在于它是对信息进行了变换和编码,它存贮信息的周期约为30s,长时记忆是对短时记忆不断复述的结果。

在 XMem 中,

感觉记忆对应于每帧更新的 GRU [11] 的隐藏表示。它提供了时间平滑度,但由于表示漂移而无法进行长期预测。

工作记忆是从历史框架的子集中聚合而成的,并平等地考虑它们 [36,9] 而不会随着时间的推移而漂移.

为了控制工作记忆的大小,XMem 经常将其表示整合到长期记忆中,XMem 将长期记忆存储为一组高度紧凑的原型.

XMem: Long-Term Video Object Segmentation
with an Atkinson-Shiffrin Memory Model

University of Illinois Urbana-Champaign

引言:

XMem,这是一种用于长视频的视频对象分割架构,具有统一的特征内存存储,受 Atkinson-Shifferin 内存模型的启发而作

遵循 Atkinson-Shiffrin 模型,我们开发了一种架构,该架构包含多个独立但深度连接的特征记忆存储:快速更新的感觉记忆、高分辨率工作记忆和紧凑的因此持续的长期记忆

三种记忆单元: 快速的感知记忆, 高分辨率的工作记忆, 连续的长期记忆

认为这种性能和 GPU 内存消耗的不良联系是使用单一特征内存类型的直接后果。为了解决这个限制,我们提出了一个统一的内存架构,称为 XMem

用户给定参考一帧!!!!

作者发现的问题是,模型内存消耗很大 , 内存消耗和准确性紧密联系在一起

作者提出了一个使用较小记忆单元的前提下,保持准确度的办法

创新点:

1.设计了XMEM。 受Atkinson-Shiffrin记忆模型[1]的启发,引入了不同时间尺度的记忆存储,并为它们配备了一个记忆读取操作,用于长视频和短视频的高质量视频对象分割。

  1. 开发了一个记忆巩固算法,从工作记忆中选择有代表性的原型,并开发了一个记忆增强算法,将这些原型丰富成一个紧凑而强大的长期记忆存储表示。

作者使用 STCN 作为工作记忆主干

在这里插入图片描述

感知记忆:每帧都更新一次

工作记忆:每第 r 帧更新一次

长期记忆:当工作记忆充满时,以更为紧凑的方式提取为长期记忆, 过于长久的记忆会丢弃

在这里插入图片描述

Q: 论文中如何实现三个记忆单元的,

论文模型的整体Forward是怎样的流程

论文是CNN网络还是Transformer网络

论文中的

key_dim 默认64 value_dim 默认512 hidden_dim 默认64

keyEncoder: 采用 Resnet50 编码,并且只获取后三层(f4,f8,f16)的值  ,channel【256,512,1024】

​	输入:一张图片

​	输出:(f4,f8,f16)的值  ,channel【256,512,1024】

KeyProjection:keyproj(x), shrinkage, selection   -》64

​	输入:x

​	输出: keyproj(x), shrinkage, selection




valueEncoder :采用Resnet18编码,V4,V8,V16 ,channel【64,128,256】, 实际只保留了V16【256】

​	传入参数,值的维度,隐藏层的维度	

​	输入:图片,图片的F16【1024】,隐藏层数据,mask,others

​	输出:g ,hidden



Decoder:

​	特征融合,FeatureFusionBlock	

​			结构:MainToGroupDistributor, GroupResBlock, CBAM, GroupResBlock

​						MainToGroupDistributor: 默认是 将x 和g cat一下, 【x,g】

​						GroupResBlock: 两个卷积,没有batchnorm

​						CBAM:默认通道注意力,不开启空间注意力





​			传入参数:x_in_dim,         g_in_dim,        g_mid_dim,         g_out_dim

​						   	(1024, val_dim + hidden_dim,    512,     512)

​			输入:x , g 

​			输出:g
	隐藏层更新, HiddenUpdater, 实际上可以理解为GRU模块

​			结构: GConv2D    普通卷积

​			传入参数g_dims,        mid_dim,         hidden_dim

​							([512, 256, 256 + 1],      256,       hidden_dim)

​			运算: g[0] + g[1] +g[2]  然后cat 然后 GRU运算

上采样模块,		UpsampleBlock 

​		思想:跳跃先维度变换到上采样维度,然后直接值相加,整个文章的思路就是同一层值相加来保证信息不丢失

​		传入参数:skip_dim, g_up_dim, g_out_dim, scale_factor=2

​							512,            512,             256

​		输入:skip_f,        up_g

​		输出: g

Xmen的四种模式下的输入和对应的输出

encode_key
传入 frames, 经过resnet50 编码获得  f16, f8, f4
f16经过三个不同卷积, 获得key, dim为1 的shrinkage, 与key dim 相同的 selection(sigmoid)

输出 key, shrinkage, selection, f16, f8, f4      B*C*T*H*W



encode_value   【ValueEncoder, resnet18】 最后的结果结合之前的信息,综合GRU,
由于需要给定一张参考图去做分割,
输入  前时刻的h0, 参考图的image,mask,当前的f16,其他
输出  g16, h16




read_memory
传入:   query_key       : B * CK * H * W
        query_selection : B * CK * H * W
        memory_key      : B * CK * T * H * W
        memory_shrinkage: B * 1  * T * H * W
        memory_value    : B * num_objects * CV * T * H * W
结构:
	    affinity = get_affinity(memory_key, memory_shrinkage, query_key, query_selection)
	    -》
	    	    	similarity = get_similarity(mk, ms, qk, qe)
    				affinity = do_softmax(similarity)
    				
        memory = readout(affinity, memory_value)
返回 memory
        
        
        

segment

特征F 是通过读取操作获得 F = vW(key,quary)

quary -> 通过特征提取器resnet50获得,

实现细节

注意到默认的序列长度为 3 不足以训练感觉记忆,因为它严重依赖于初始状态。因此,我们改为对长度为 8 的序列进行采样。
inity, memory_value)
返回 memory

segment






特征F 是通过读取操作获得   F =  vW(key,quary)

quary -> 通过特征提取器resnet50获得, 







实现细节



注意到默认的序列长度为 3 不足以训练感觉记忆,因为它严重依赖于初始状态。因此,我们改为对长度为 8 的序列进行采样。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林丿子轩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值