Cutie
- 系列文章目录
- 1 摘要
- 2 引言
- 2.1背景和难点
- 2.2 解决方案
- 2.3 成果
- 3 相关方法
- 3.1 基于记忆的VOS
- 3.2对象级推理
- 3.3 自动视频分割
- 4 工作方法
- 4.1 overview
- 4.2 对象变换器
- 4.2.1 overview
- 4.2.2 Foreground-Background Masked Attention
- 4.2.3 Positional Embeddings
- 4.3 Object Memory
系列文章目录
- 2024CVPR-Guided Slot Attention for Unsupervised Video Object Segmentation
- 2024CVPR-RMem: Restricted Memory Banks Improve Video Object Segmentation
- 2021NeurIPS-Associating Objects with Transformers for Video Object Segmentation
- 数据集-Breaking the “Object” in Video Object Segmentation
1 摘要
- 背景:我们提出了Cutie模型,它是一个结合了对象级记忆读取的视频对象分割网络,它将记忆中的对象表征重新返还给视频目标分割结果。
- 难点、不足:最近的VOS工作都采用自下而上的像素级记忆读取,它们由于匹配了噪声,尤其是在有干扰物的情况下,导致其结果在具有挑战性的数据下表现不佳。
- 解决方案:Cutie通过采取一个小型的对象查询集合实现了自上而下的对象级记忆读取。它通过query-based object transformer与自下而上的像素级特征进行交互迭代。这个object queries充当目标对象的高级总结,同时保留高分辨率特征图以实现高准确率分割。结合foreground-background masked attention,Cutie可以将前景图像从背景图中干净的分割出来。
- 结果:在具有挑战的MOSE数据集中,在相似的运行时间下,Cutie相比XMem提升了8.7 J&F;Cutie相比DeAOT提升了4.2 J&F,速度还快了三倍。
图0:如图所示,图像从左到右依次为输入图像、目标对象mask、pixel attention和object querry attention。可以发现,在pixel attention中,当存在相似物体时,attention map会被干扰。而object querry attention则专注于目标对象。
2 引言
2.1背景和难点
视频对象分割(Video Object Segmentation, VOS),特别是“半监督”设置,要求从第一帧注释中指定的开放词汇表中跟踪和分割对象。VOS方法在机器人学[1]、视频编辑[2]、降低数据注释成本[3]中具有广泛的适用性,并且还可以与任何事物模型(Segment Anything Models, SAMs)[4]结合,用于通用视频分割(例如,跟踪任何事物[5–7])。
最近的VOS方法采用了基于记忆的范式[8–11]。从过去的分割帧(要么作为输入给出,要么由模型分割)计算出记忆表示,任何新的查询帧“读取”这个记忆以检索用于分割的特征。重要的是,这些方法主要使用像素级匹配进行记忆读取,使用一个[8]或多个匹配层[10],并从像素记忆读出生成自下而上的分割。像素级匹配是每个查询像素独立映射到记忆像素的线性组合(例如,使用注意力层)。因此,像素级匹配缺乏高层一致性,并且容易受到匹配噪声的影响,尤其是在有干扰物的情况下。这导致在具有遮挡和频繁干扰物的具有挑战性场景中性能降低。具体来说,最近的方法[9, 10]在评估最近提出的具有挑战性的MOSE[12]数据集时,与更简单的DAVIS-2017[13]数据集相比,J &F(交并比)降低了20多点。
像素级匹配是每个查询像素独立映射到记忆像素的线性组合
,这句话如何理解呢?以AOT模型(Associating Objects with Transformers for Video Object Segmentation)为例:该模型以第一个包含mask 标记的帧为参考图像,其余视频帧依据该参考图像进行分割。在分割的过程中,被分割的帧作为Q(querry),包含了参考帧和对象编码的特征图作为K、V(key和value),被分割帧Q通过多头注意力机制得到Q映射到K的线性组合。详见可见AOT主体模型详解
图1.像素级记忆读取与对象级记忆读取的比较。在每个框中,左侧是参考帧,右侧是要被分割的查询帧。红色箭头指示错误的匹配。在存在干扰物的情况下,低级像素匹配(例如,XMem [9])可能会有噪声。我们提出对象级记忆读取,以实现更稳健的视频对象分割。
2.2 解决方案
我们认为,在具有挑战性的场景中这种不满意的结果是由于缺乏对象级推理造成的。为了解决这个问题,我们提出了对象级记忆读取,有效地将对象从记忆中重新放回到查询帧中(见图1)。
受到最近基于查询的对象检测/分割[14–18]的启发,这些方法将对象表示为“对象查询”,我们使用对象变换器来实现我们的对象级记忆读取。这个对象变换器使用一组端到端训练的对象查询来1)迭代地探测和校准特征图(由像素级记忆读出实现初始化),以及2)编码对象级信息。这种方法同时保留了高层级但全局的对象查询表示和低层级但高分辨率的特征图,使得顶层/底层的双向通信成为可能。这种通信通过一系列注意力层进行参数化,包括我们提出的foreground-background masked attention。masked attention,从仅关注前景的masked attention[15]扩展而来,允许部分对象查询仅关注前景,而其余部分仅关注背景——允许全局特征交互和前景/背景语义的清晰分离。此外,我们引入了一个紧凑的对象记忆(除了像素记忆之外)来总结目标对象的特征,通过目标特定的特征增强端到端的对象查询。
2.3 成果
在实验中,我们提出的方法Cutie,在具有挑战性的场景中(例如,在MOSE数据集上比XMem高出8.7 J &F [12])比现有方法显著更加稳健,同时在标准数据集(即DAVIS [13]和YouTubeVOS [19])中在准确性和效率方面保持竞争力。总结如下:
- 我们开发了Cutie,它使用高层自上而下的查询与像素级自下而上的特征,在具有挑战性的场景中实现稳健的视频对象分割。
- 我们将遮蔽注意力扩展到前景和背景,既丰富了特征,又在目标对象和干扰物之间实现了清晰的语义分离。
- 我们构建了一个紧凑的对象记忆来总结长期的对象特征,这些特征在查询期间被检索为目标特定的对象级表示。
3 相关方法
3.1 基于记忆的VOS
由于半监督视频对象分割(VOS)涉及信息的方向传播,许多现有方法采用特征记忆表示来存储过去特征以用于分割未来的帧。这包括在线学习,在推理期间对每个视频的第一帧分割进行微调[20-24]。然而,微调在测试期间速度慢。递归方法[25-31]速度更快,但在遮挡下跟踪时缺乏上下文。
最近的方法使用更多上下文[5, 8, 11, 32-64]通过像素级特征匹配和集成,一些方法探索了背景特征的建模——无论是显式地[36, 65]还是隐式地[51]。XMem[9]使用多种类型的记忆以获得更好的性能和效率,但仍然难以应对低级像素匹配中的噪声。虽然我们采用了XMem[9]的记忆读取,但我们开发了对象读取机制,以对象级整合像素特征,使Cutie在具有挑战性的场景中实现更好的性能。
在VOS中的变换器。基于变换器[66]的方法已经开发用于视频对象分割中的像素匹配与记忆[10, 50, 53, 67-70]。然而,它们计算空间特征图(作为交叉注意力、自注意力或两者兼有)之间的注意力,这在时间和空间复杂度上是昂贵的。SST[67]提出了稀疏注意力,但表现不如最先进的方法。AOT方法[10, 68]使用身份库在单次前向传递中处理多个对象以提高效率,但它们不针对对象ID进行排列等变,并且对于长视频不具有很好的扩展性。并行方法[69, 70]使用单个视觉变换器网络联合建模参考帧和查询帧,而不进行显式的记忆读取操作。它们实现了高精度,但需要大规模预训练(例如,MAE[71]),并且推理速度要低得多(每秒<4帧)。Cutie经过精心设计,在我们的对象变换器中不计算任何(昂贵的)空间特征图之间的注意力,同时通过一小组对象查询促进有效的全局通信——使Cutie能够实时处理。
3.2对象级推理
早期尝试在对象级别进行推理的VOS算法[59, 72, 73]使用重新识别或k-means聚类来获取对象特征,并且在标准基准测试中的性能较低。HODOR[18]及其后续工作TarViS[17],采用对象级描述符来处理VOS,这允许更大的灵活性(例如,仅在静态图像上训练[18]或扩展到不同的视频分割任务[17, 74, 75]),但由于未充分利用高分辨率特征而在VOS分割精度方面表现不佳(例如,[74]在DAVIS 2017[13]中比最先进的方法落后6.9 J &F)。ISVOS[76]提议将预训练的实例分割网络(即,Mask2Former[15])的特征注入到基于记忆的VOS方法[51]中。
Cutie的动机相似,但在以下三个方面至关重要的不同:1)Cutie端到端学习对象级信息,而不需要在实例分割任务/数据集上进行预训练,2)Cutie允许像素级特征和对象级特征之间的双向通信,以实现集成框架,3)Cutie是一个单级方法,不会执行单独的实例分割,而ISVOS会——这使得Cutie运行速度大约快六倍。此外,ISVOS没有发布代码,而我们为社区开放了代码,促进后续工作。
3.3 自动视频分割
最近,视频对象分割方法已经被用作自动视频分割流程的一个组成部分,例如开放词汇表/通用视频分割(例如,跟踪任何事物[5, 6],DEVA[7])和无监督视频分割[77]。我们认为Cutie的鲁棒性和效率对这些应用是有益的。
4 工作方法
图2.Cutie的核心架构和工作流程如下:1)存储像素记忆和对象记忆:我们从之前分割过的帧中存储像素记忆和对象记忆的表征。2)检索像素记忆:对于查询帧,我们将像素记忆检索出来作为像素读出R0.3)双向交互:像素读出R0与对象查询X和对象记忆S在对象变换器中进行双向交互。4)L个对象变换器块将像素特征用对象级语义丰富化,并产生最终的对象读出RL,以便解码成输出掩模。5)简化架构:为了易于理解,省略了标准的残差连接、层归一化以及从查询编码器到解码器的跳跃连接。
4.1 overview
我们在图2中提供了Cutie的概览。为了可读性,遵循先前的工作[8, 9],我们考虑单个目标对象,因为扩展到多个对象是直接的(见补充材料)。按照标准的半监督视频对象分割(VOS)设置,Cutie将目标对象的第一帧分割作为输入,并顺序地以流式方式分割后续帧。首先,Cutie将分割的帧(作为输入给出或由模型分割)编码成高分辨率的像素记忆F(第3.4.1节)和高层对象记忆S(第3.3节),并将它们存储起来用于分割未来的帧。为了分割一个新的查询帧,Cutie使用编码的查询特征从像素记忆中检索初始像素读出R0。这个初始读出R0是通过低级像素匹配计算的,因此通常很嘈杂。我们通过对象变换器中的L变换器块,用对象记忆S和一组对象查询X的信息来丰富R0,从而增强其对象级语义(第3.2节)。对象变换器的丰富输出RL,或对象读出,被传递到解码器以生成最终的输出掩模。在接下来的部分,我们将首先描述Cutie的三个主要贡献:对象变换器、遮蔽注意力和对象记忆。注意,我们从现有作品[9]中衍生出像素记忆,我们只在第3.4.1节中将其描述为实施细节,而不声称有任何贡献。
4.2 对象变换器
4.2.1 overview
图2的底部展示了对象变换器。对象变换器接收一个初始读出R0 ∈ RHW×C,一组N个端到端训练的对象查询X ∈ RN×C,以及对象记忆S ∈ RN×C作为输入,并将它们与L个变换器块集成。注意H和W是在步长为16的编码后的图像尺寸。在第一个块之前,我们将静态对象查询与动态对象记忆相加,以更好地适应,即X0 = X + S。每个变换器块允许对象查询Xl−1双向地关注读出Rl−1,反之亦然,产生更新后的查询Xl和读出Rl作为第l个块的输出。最后一个块的读出RL是对象变换器的最终输出。
在每个块内,我们首先计算遮蔽交叉注意力,让对象查询Xl−1从像素特征Rl−1中读取。遮蔽注意力将一半的对象查询集中在前景区域,而另一半则针对背景(细节见第3.2.2节)。然后,我们将对象查询输入到标准的自注意力和前馈层[66]中,进行对象级推理。接下来,我们用一个反向交叉注意力层更新像素特征,将来自对象查询Xl的对象语义重新放入像素特征Rl−1中。然后我们将像素特征输入到前馈网络中,同时跳过标准变换器[66]中的计算成本较高的自注意力。在整个过程中,我们遵循[14, 15](第3.2.3节)向查询和键添加位置嵌入。在每个注意力和前馈层中都使用残差连接和层归一化[78]。所有注意力层都使用多头缩放点积注意力[66]实现。重要的是,
- 我们谨慎地避免了任何直接在高分辨率空间特征(例如R)之间的注意力,因为它们在内存和计算上都很密集。尽管如此,这些空间特征仍然可以通过对象查询进行全局交互,使每个变换器块既高效又富有表现力。
- 对象查询以残差贡献的方式重构像素特征,而不丢弃高分辨率的像素特征。这避免了不可逆的降维(将超过100倍),并保留了那些用于准确分割的高分辨率特征。
接下来,我们将描述我们的对象变换器块中的核心组件:前景/背景遮蔽注意力和位置嵌入的构建。
4.2.2 Foreground-Background Masked Attention
在我们的(像素到查询)交叉注意力中,我们的目标是通过关注像素特征Rl ∈ RHW×C来更新对象查询Xl ∈ RN×C。标准的交叉注意力带有残差路径,可以找到:
X l ′ = A l V l + X l = softmax ( Q l K l T ) V l + X l X'_l = A_l V_l + X_l = \text{softmax}(Q_l K_l^T) V_l + X_l Xl′=AlVl+Xl=softmax(QlKlT)Vl+Xl
其中 Ql 是 Xl 的学习线性变换,Kl 和 Vl 是 Rl 的学习线性变换。亲和力矩阵 Al ∈ RN×HW 的行描述了每个对象查询在整个特征图上的关注点。我们注意到不同的对象查询有不同的关注模式——有些关注不同的前景部分,有些关注背景,有些关注干扰物(见图3顶部)。这些对象查询从不同的感兴趣区域收集信息,并将它们整合到后续的自注意力/前馈层中。然而,注意力的软性质使得这个过程嘈杂且不太可靠——主要关注前景的查询可能在背景中有小的权重分布,反之亦然。
图3。在对象变换器中可视化交叉注意力权重(AL的行)。中间的猫是目标对象。顶部:没有前景-背景遮蔽——一些查询混合了前景和背景的语义(用红色框出)。底部:有前景-背景遮蔽。最左边的三个是前景查询,最右边的三个是背景查询。语义因此被清晰地区分开。前景/背景查询可以在随后的自注意力层中进行通信。注意查询关注不同的前景区域、干扰物和背景区域。
受到 [15] 的启发,我们部署了遮蔽注意力来帮助清晰地区分前景和背景的语义。与 [15] 不同的是,我们发现除了关注前景外,还关注背景也是很有帮助的,特别是在有干扰物的具有挑战性的跟踪场景中。在实践中,我们让对象查询的前一半(即前景查询)始终关注前景,而后一半(即背景查询)关注背景。这种遮蔽在所有注意力头上是共享的。
形式上,我们的前景-背景遮蔽交叉注意力找到:
X l ′ = softmax ( M l + Q l K l T ) V l + X l X'_l = \text{softmax}(M_l + Q_l K_l^T) V_l + X_l Xl′=softmax(Ml+QlKlT)Vl+Xl
其中 Ml ∈ {0, −∞}N×HW 控制注意力遮蔽——具体来说,Ml(q, i) 决定第 q 个查询是否被允许(= 0)或不被允许(= −∞)关注第 i 个像素。为了计算 Ml,我们首先找到当前层的遮蔽预测 Ml,它是从上一个像素特征 Rl−1 线性投影出来的,并用 sigmoid 函数激活。然后,Ml 被计算为:
M l ( q , i ) = { 0 , if q ≤ N 2 and M l ( i ) ≥ 0.5 0 , if q > N 2 and M l ( i ) < 0.5 − ∞ , otherwise Ml(q, i) = \begin{cases} 0, & \text{if } q \leq \frac{N}{2} \text{ and } Ml(i) \geq 0.5 \\ 0, & \text{if } q > \frac{N}{2} \text{ and } Ml(i) < 0.5 \\ -\infty, & \text{otherwise} \end{cases} Ml(q,i)=⎩ ⎨ ⎧0,0,−∞,if q≤2N and Ml(i)≥0.5if q>2N and Ml(i)<0.5otherwise
其中第一种情况用于前景注意力,第二种情况用于背景注意力。图3(底部)可视化了前景-背景遮蔽后的注意力图。注意,尽管前景和背景被硬性分离,对象查询在随后的自注意力层中进行通信,以实现潜在的全局特征交互。
接下来,我们讨论在对象查询和像素特征中使用的位置嵌入,它们允许基于位置的注意力。
4.2.3 Positional Embeddings
由于标准的注意力操作是排列不变的,因此使用位置嵌入来提供每个标记的位置的额外特征[66]。按照之前的基于变换器的视觉网络[14, 15],我们在每个注意力层向查询和键特征添加位置嵌入(见图2),而不添加到值中。
对于对象查询,我们使用一个位置嵌入PX ∈ RN×C,它通过以下方式结合了一个端到端可学习嵌入EX ∈ RN×C和动态对象记忆S ∈ RN×C:
P X = E X + f O b j E m b e d ( S ) P_X=E_X+f_{ObjEmbed}(S) PX=EX+fObjEmbed(S)
其中f_ObjEmbed是可训练的线性投影。这样,位置嵌入为模型提供了关于每个对象查询在图像中位置的重要信息,有助于改善注意力机制对空间关系的敏感性。
对于像素特征,位置嵌入PR ∈ RHW×C结合了一个固定的2D正弦位置嵌入Rsin [14],它编码了绝对像素坐标,以及初始读出R0 ∈ RHW×C,通过以下方式:
P R = R s i n + f P i x E m b e d ( R 0 ) PR = Rsin + f_{PixEmbed}(R0) PR=Rsin+fPixEmbed(R0)
其中 f_{PixEmbed是另一个可训练的线性投影。注意,正弦嵌入Rsin在归一化的坐标上操作,并在测试时根据图像大小进行相应的缩放。
4.3 Object Memory
在对象记忆S ∈ RN×C中,我们存储一组紧凑的N个向量,这些向量构成了目标对象的高级摘要。这个对象记忆在对象变换器(第3.2节)中使用,以提供针对目标的特征。
从高层次来看,我们通过使用N个不同的遮蔽(mask)对所有编码后的对象特征进行遮蔽池化(mask-pooling)来计算S。具体来说,给定对象特征U ∈ RTHW×C和N个池化遮蔽{Wq ∈ [0, 1]THW, 0 < q ≤ N},其中T是记忆帧的数量,第q个对象记忆Sq ∈ RC通过以下方式计算:
S q = ∑ i = 1 T × H × W U ( i ) W q ( i ) ∑ i = 1 T × H × W W q ( i ) S_q = \frac{\sum_{i=1}^{T \times H \times W} U(i) W_q(i)}{\sum_{i=1}^{T \times H \times W} W_q(i)} Sq=∑i=1T×H×WWq(i)∑i=1T×H×WU(i)Wq(i)
在推理过程中,我们使用经典的流式平均算法,使得这个操作在时间上和内存上都与视频长度无关。有关详细信息,请参阅补充材料。注意,如果相应的池化权重为零,即 ∑ i = 1 H × W W q t ( i ) = 0 \sum_{i=1}^{H \times W} W_{qt}(i) = 0 ∑i=1H×WWqt(i)=0,则对象记忆向量Sq不会被修改,这可以防止在相应对象区域不可见时(例如,被遮挡)出现特征漂移。
对于记忆帧,我们首先使用遮罩编码器对相应的图像I和分割遮罩M进行编码,以获得记忆特征F ∈ RTHW×C。我们使用一个2层的C维MLP(多层感知机)(f_{ObjFeat})来获得对象特征U。
U = f ObjFeat ( F ) U = f_{\text{ObjFeat}}(F) U=fObjFeat(F)
对于N个池化遮蔽{Wq ∈ [0, 1]^(T×H×W), 0 < q ≤ N},我们按照第3.2.2节中详细描述的那样,额外应用前景-背景分离,并将其与固定的2D正弦位置嵌入Rsin(如第3.2.3节所述)相结合。这种分离允许在池化过程中聚合干净的语义,而位置嵌入则实现了位置感知的池化。形式上,我们通过以下方式计算第q个池化遮蔽的第i个像素:
W q ( i ) = σ ( f PoolWeight ( F ( i ) + R sin ( i ) ) ) W_q(i) = \sigma(f_{\text{PoolWeight}}(F(i) + R_{\text{sin}}(i))) Wq(i)=σ(fPoolWeight(F(i)+Rsin(i)))
其中 σ \sigma σ 是sigmoid函数, f PoolWeight f_{\text{PoolWeight}} fPoolWeight是一个2层的N维MLP(多层感知机),F(i)是特征图在第i个像素的值, R sin ( i ) R_{\text{sin}}(i) Rsin(i) 是第i个像素的正弦位置嵌入。