周末大概看了一下最近的vos领域的发展,简单地介绍一下发表于cvpr2022 的这篇工作。
VOT和VOS其实是非常相像的,只是target一个是bbox,一个是mask;这篇文章是半监督的VOS,主要是在其他帧中跟踪某一帧的mask。可以简单概括一下半监督vos的几种主流方法:
顾名思义,先学习一个通用的分割特征,然后在测试阶段将网络在目标视频上进行微调,这是online的方法,后面两种都是offline的方法
以反馈的方式不断微调所得到的mask,从而获取高质量的segmentation mask
将一些帧编码为embeddings,将这些embeddings存储到memory bank中,对当前帧进行分割;同时这也是vos的最主流的方向,我猜大概是因为vos的视频片段都很简短吧:)
基于Matching based方法会有如下的几个缺点:
在STM 中,image和mask分别被encode到两个embedding spaces中,分别是key和value,将以前所有帧都做这样的处理后concat到一起,输入到Space-time Memory Read中,当前帧通过encoder编码为Query embedding,和之前得到的embedding进行交互,将输出结果送入到Decoder中和Image共同进行分割得到最后的分割结果
该结构中,将 k Q k^Q kQ 和 k M k^M kM 进行矩阵乘法,经过softmax后和 v M v^M vM进行矩阵乘法,和 v Q v^Q vQ concat到一起后作为输出。这一块应该是采用了attention的结构,具体的大家可以去看《attention is all you need》
接下来便是这篇论文的核心方法:
模型有两个encoder,一个是Image encoder,一个是mask encoder,都用的是ResNet-50的backbone,最后会简单的将输出映射为两个embeddings,分别得到了两个embedding分别是 k ∈ R C k × H 16 × W 16 \mathbf{k} \in \mathbb{R}^{C_{k} \times \frac{H}{16} \times \frac{W}{16}} k∈RCk×16H×16W 和 v ∈ R C v × H 16 × W 16 \mathbf{v} \in \mathbb{R}^{C_{v} \times \frac{H}{16} \times \frac{W}{16}} v∈RCv×16H×16W,其中 C k C_k Ck=64, C v C_v Cv = 512,这里的结构和STM中一致
其中包含几个重要的模块,分别是ImageEncoder、Decoder,MaskEncoder,Spatio-temporal Aggregation Module、Spatio-time Memory
用于提取图像特征
在训练过程中将SAM的输出和Image Encoder的输出以及STM的输出concat到一起输入到Decoder中获取分割mask;在inference过程中去掉STM模块,只保留SAM模块,同训练一样将ImageEncoder的输出和SAM concat到一起输入Decoder获取分割mask
SAM全称为Spatial-temporal Aggregation Module,这是为了生成以及迭代RDE这个feature的,总共包含三个部分:extracting,enhancing,squeezing,如上述图©
extracting 部分是负责将previous RDE { k t − θ R D E , v t − θ , i R D E } \operatorname{RDE}\left\{\mathbf{k}_{t-\theta}^{R D E}, \mathbf{v}_{t-\theta, i}^{R D E}\right\} RDE{kt−θRDE,vt−θ,iRDE}和当前帧到embeddings { k t − θ R D E , v t − θ , i R D E } \left\{\mathbf{k}_{t-\theta}^{R D E}, \mathbf{v}_{t-\theta, i}^{R D E}\right\} {kt−θRDE,vt−θ,iRDE}的时空关系组织起来,如下是将 k R D E k^{RDE} kRDE和 k L k^L kL在时间维度上连接起来得到特征x
x = Cat ( k t − θ R D E , k t L ) , x ∈ R C k × 2 × H 16 × W 16 \mathbf{x}=\operatorname{Cat}\left(\mathbf{k}_{t-\theta}^{R D E}, \mathbf{k}_{t}^{L}\right), \mathbf{x} \in \mathbb{R}^{C_{k} \times 2 \times \frac{H}{16} \times \frac{W}{16}} x=Cat(kt−θRDE,ktL),x∈RCk×2×16H×16W
接着聚合特征,这篇文章借鉴了attention的结构,先将特征归一化,再使用 w , w, w, ϕ \phi ϕ, g g g,1x1x1的卷积聚合特征,有点像注意力机制,maybe这里是实验为导向的创新,其中 x ↓ \mathbf{x} \downarrow x↓表示对 x \mathbf{x} x进行max-pooling,能够降低计算复杂度
x a g g = 1 C ( x ) ω ( x ) T ϕ ( x ↓ ) g ( x ↓ ) \mathbf{x}_{a g g}=\frac{1}{C(\mathbf{x})} \omega(\mathbf{x})^{\mathrm{T}} \phi(\mathbf{x} \downarrow) g(\mathbf{x} \downarrow) xagg=C(x)1ω(x)Tϕ(x↓)g(x↓)
enhancing部分以残差的方式采用了ASPP的模块对特征 x a g g x_{agg} xagg进行了增强,ASPP全称是atrous spatial pyramid pooling,一般也是常用于FPN的最小分辨率层,用以增强特征,这也是一个常用的trick
squeeze部分是将增强后的特征使用2x3x3卷积进行压缩,并维持previous RDE的特征维度
k t R D E = Squeeze ( x a g g + A S P P ( x a g g ) ) \mathbf{k}_{t}^{R D E}=\text { Squeeze }\left(\mathbf{x}_{a g g}+A S P P\left(\mathbf{x}_{a g g}\right)\right) ktRDE= Squeeze (xagg+ASPP(xagg))
在DAVIS2017验证集上的实验结果
在DAVIS2016验证集上的实验结果
可以看到FPS显著增加,在inference中只保留SAM能够明显加快推理速度,并且其不随着视频序列的长度增加降低速度