Abstract

如何将分割模型高效的应用到特定的视频中并适应目标的外观变化是视频物体分割(VOS)中的一个关键问题。本工作使用图记忆网络解决一个新的想法“如何学习更新分割模型”。具体来说,我们使用一个一个片段记忆网络,构建一个全连接网络,将视频帧保存为节点,帧与帧之间的关系记为边。然后,使用可训练的控制器控制记忆的读写,并保持固定的记忆网络大小。结构化的外部记忆模型使得我们的方法可以理解并快速存储新的知识,即使对有限的视觉信息,可微的控制器仍然可以学到简单的方法来将有用的表达进行记忆,同时通过梯度下降利用搞这些表达进行预测。此外,本方法中的图模型网络框架简单有效,可以很好地推广到单样本(O-VOS)和零样本(Z-VOS)视频物体分割任务中。[论文解读]Video Object Segmentation with Episodic Graph Memory Networks
图1 图模型总体框架

1Introduction

O-VOS任务的定义是给出第一帧视频的标注,计算剩余帧的视频分割结果。Z-VOS任务是自动找到视频中的主要物体并分割。

O-VOS的挑战性在于不提供更多的关于物体的信息,但是场景中通常包括与前景相同的物体。早期的方法对不同的物体微调网络,但是耗时过长。最近的方法使用匹配的思想,计算第一帧和当前帧之间的相似度,从而给出分割结果。

基于匹配的方法有一些缺点:1. 仅仅将匹配网络应用到视频中,没有更好的对第一帧的目标物体信息加以利用。所以对输入的视频不适用。2. 分割目标的外观可能会发生变化,所以有必要对模型进行线上调整。3. 匹配模型仅仅建模第一帧和当前帧这两帧的关系,忽略了其他帧的丰富的信息。

为了解决这一问题,我们参考最近在小样本学习中广泛使用的记忆增广网络,设计了一个仅需一次前传的,可以线上更新网络参数的图记忆网络模型。通过将O-VOS看做记忆检索(?episodic memory reasoning)问题,在线下学习中,本方法可以学习高维特征;通过记忆模块,可以将第一帧的信息在测试视频中快速融合。通过对记忆中的表达查询,可以对结果进行调节。分割过程中,为了保持物体外观不变,我们召回并更新记忆。因此我们可以在不增加参数的情况下实现线上模型更新。此外,记忆模块使用图模型建模以更好的适应记忆之间的关系。

我们的记忆模型是固定长度的,不会动态增加存储的使用,这一点与基于匹配的方法不同。本框架具有很好的扩展能力,可以在Z-VOS上加以使用。本方法是第一个可以同时应用在O-VOS和Z-VOS中的方法。实验效果,体现了本方法的高效和一般性。

3Method

3.1片段记忆网络

记忆网络是对普通的神经网络增加一个记忆模块,让网络得以访问到过去的表达。在小样本学习(few-shot learning)物体跟踪(object tracking)中有较好的应用。最近,片段记忆网络用来解决reasoning问题的方法在视觉问答、视觉对话中有较多的应用。最基本的思路是,通过训练一个读写的操作函数,从记忆中查询/检索问题的解答。给定一组输入表达,模型通过神经注意力机制选择哪部分输入需要得到注意。然后提供一个包括了查询和记忆的叠加记忆(memory summarization)。每一次迭代都提供新的输入的信息。所以,记忆模型具有在过往表达中检索新信息的能力。

3.2更新

O-VOS的任务是,在给出第一帧的标签时,预测后面帧的标签。传统方法微调现有的模型并对不同的测试视频进行线上学习。相对而言,我们利用图模型可以对多个任务(视频)同时训练。我们将O-VOS问题转化为学习如何更新分割网络的问题:1. 提取任务的表达,2. 根据任务表达更新分割网络。如图1,我们利用图模型学习记忆网络。1. 对特定的物体学习分割网络,而不是多次微调迭代;2. 充分利用视频序列中的上下文(时序信息?)。我们的网络具有两个能力:在模型初始化的阶段可以根据给定标签的第一帧调整分割网络;利用分割好的帧更新分割结果。因此,我们的方法既可以针对不同情况进行调整,又可以快速的线上更新。

3.3图记忆模型

图记忆模型由两部分组成:图记忆表达、可训练的记忆控制。记忆可以将新知识进行短期存储,图模型可以帮助获取上下文信息。控制器对图模型记忆进行一系列的读写操作,从而通过更新权重获得长期存储:通过控制器模型可以学习策略,什么样的表达要保存到记忆中,之后如何利用这些记忆进行分割。
主要做法是,使用K步episodic reasoning操作,获得结构性的信息和关于特定目标的信息。我们将记忆定义为固定大小的全连接图 G = ( M , E ) G=(M,E) G=(M,E)
给定查询帧,支撑集定义为第一帧的标签和之前帧的分割结果。图记忆由一开始的 N ( = ∣ M ∣ ) N(=|M|) N(=M)帧从支撑集中采样得到。对于记忆图的每一个节点,其初始的嵌入(表达) m i 0 ∈ R W × H × C m_i^0\in \mathbb{R}^{W\times H\times C} mi0RW×H×C由相应的支撑帧通过全卷积编码器生成,从而得到空间视觉特征和分割掩码信息。

3.3.1图记忆读取

全卷积编码器作用在查询帧中来提取特征 q ∈ R W × H × C q∈\mathbb{R}^{W×H×C} qRW×H×C。输入到一个可训练的读控制器,得到初始状态 h 0 h^0 h0
h 0 = f P ( q ) ∈ R W × H × C \boldsymbol{h}^{0}=f_{\mathrm{P}}(\boldsymbol{q}) \in \mathbb{R}^{W \times H \times C} h0=fP(q)RW×H×C其中 f P ( ⋅ ) f_{\mathrm{P}}(\cdot) fP()是映射函数。
在每个reasoning步骤 k ∈ { 1 , … , K } k \in\{1, \ldots, K\} k{1,,K},读控制器在扩展图记忆中读取内容。与传统的关键值检索机制相同,我们比较查询与每一个memory的相似度。 s i k = h k − 1 ⋅ m i k − 1 ∥ h k − 1 ∥ ∥ m i k − 1 ∥ ∈ [ − 1 , 1 ] s_{i}^{k}=\frac{h^{k-1} \cdot m_{i}^{k-1}}{\left\|h^{k-1}\right\|\left\|m_{i}^{k-1}\right\|} \in[-1,1] sik=hk1mik1hk1mik1[1,1]然后我们通过softmax归一化函数计算读取权重 w i k = exp ⁡ ( s i k ) / ∑ j exp ⁡ ( s j k ) ∈ [ 0 , 1 ] w_{i}^{k}=\exp \left(s_{i}^{k}\right) / \sum_{j} \exp \left(s_{j}^{k}\right) \in[0,1] wik=exp(sik)/jexp(sjk)[0,1]考虑到相机的移动和移出镜头外,会有部分节点有噪声。w_i^k度量记忆单元(cell)m_i的置信度。然后通过线性加法得到回归的记忆。 m k = ∑ i w i k m i k − 1 ∈ R W × H × C \boldsymbol{m}^{k}=\sum_{i} w_{i}^{k} \boldsymbol{m}_{i}^{k-1} \in \mathbb{R}^{W \times H \times C} mk=iwikmik1RW×H×C
通过公式(2-4),记忆模块可以回归出与 h k h^k hk最相似的记忆单元,从而得到叠加的记忆 m k m^k mk。记忆读取器的迭代过程如下: h ~ k = W r h ∗ h k − 1 + U r h ∗ m k ∈ R W × H × C a r k = σ ( W r a ∗ h k − 1 + U r a ∗ m k ) ∈ [ 0 , 1 ] W × H × C h k = a r k ∘ h ~ k + ( 1 − a r k ) ∘ h k − 1 ∈ R W × H × C \begin{array}{ll} \widetilde{h}^{k}=W_{r}^{h} * h^{k-1}+U_{r}^{h} * m^{k} & \in \mathbb{R}^{W \times H \times C} \\ a_{r}^{k}=\sigma\left(W_{r}^{a} * h^{k-1}+U_{r}^{a} * m^{k}\right) & \in[0,1]^{W \times H \times C} \\ h^{k}=a_{r}^{k} \circ \widetilde{h}^{k}+\left(1-a_{r}^{k}\right) \circ h^{k-1} & \in \mathbb{R}^{W \times H \times C} \end{array} h k=Wrhhk1+Urhmkark=σ(Wrahk1+Uramk)hk=arkh k+(1ark)hk1RW×H×C[0,1]W×H×CRW×H×C这里, W W W U U U表示卷积核, σ \sigma σ表示**函数,… a k a^k ak是更新门,控制多少过去的隐表达 h k − 1 h^{k-1} hk1需要保存。通过这种方式,控制器的隐表达编码了图记忆和查询表达。

3.3.2片段图记忆更新

在有了记忆叠加之后,我们需要针对新的查询更新记忆内容。在第k步中,一个可训练的记忆写入模块需要考虑它的之前状态 m i k − 1 m_i^{k-1} mik1、目前读取器的内容 h k h^k hk、其他单元的状态 { m j k − 1 } j ≠ i \{m_j^{k-1}\}_{j\neq i} {mjk1}j=i来更新每个拟记忆模块(cell,图节点)。与[52]相同,首先我们计算 m i m_i mi m j m_j mj之间的相似度 e i , j k = m i k − 1 W e m j k − 1 ⊤ ∈ R ( W H ) × ( W H ) e_{i, j}^{k}=m_{i}^{k-1} W_{e} m_{j}^{k-1 \top} \in \mathbb{R}^{(W H) \times(W H)} ei,jk=mik1Wemjk1R(WH)×(WH)
对于 m i m_i mi,我们计算其他单元(cell)的总结信息,由内积相似度表示。(7),softmax对输入的每一行进行归一化。
记忆写入控制器更新 m i m_i mi m ~ i k = W u m ∗ h k + U u m ∗ m i k − 1 + V u m ∗ c i k ∈ R W × H × C a u k = σ ( W u a ∗ h k + U u a ∗ m i k − 1 + V u a ∗ c i k ) ∈ [ 0 , 1 ] W × H × C m i k = a u k ∘ m ~ k + ( 1 − a u k ) ∘ m k − 1 ∈ R W × H × C \begin{aligned} \widetilde{\boldsymbol{m}}_{i}^{k} &=\boldsymbol{W}_{u}^{m} * \boldsymbol{h}^{k}+\boldsymbol{U}_{u}^{m} * \boldsymbol{m}_{i}^{k-1}+\boldsymbol{V}_{u}^{m} * \boldsymbol{c}_{i}^{k} \quad \in \mathbb{R}^{W \times H \times C} \\ \boldsymbol{a}_{u}^{k} &=\sigma\left(\boldsymbol{W}_{u}^{a} * \boldsymbol{h}^{k}+\boldsymbol{U}_{u}^{a} * \boldsymbol{m}_{i}^{k-1}+\boldsymbol{V}_{u}^{a} * \boldsymbol{c}_{i}^{k}\right) \in[0,1]^{W \times H \times C} \\ \boldsymbol{m}_{i}^{k} &=\boldsymbol{a}_{u}^{k} \circ \widetilde{\boldsymbol{m}}^{k}+\left(\mathbf{1}-\boldsymbol{a}_{u}^{k}\right) \circ \boldsymbol{m}^{k-1} \quad \in \mathbb{R}^{W \times H \times C} \end{aligned} m ikaukmik=Wumhk+Uummik1+VumcikRW×H×C=σ(Wuahk+Uuamik1+Vuacik)[0,1]W×H×C=aukm k+(1auk)mk1RW×H×C图记忆模型更新允许每一个记忆单元嵌入相邻帧的信息从而学习上下文信息。此外,通过迭代reasoning图模型,每一个记忆单元编码新的查询信息,从而逐步增强表达能力。对比传统记忆模型[58],我们的方法有两个优点:1. 记忆写入模块与记忆更新策略混合,不增加记忆存储;2. 避免复杂的记忆写入策略。[论文解读]Video Object Segmentation with Episodic Graph Memory Networks

3.3.3最终分割结果读出

在进行了 K K K步更新之后,我们利用读取第输出的最终状态 h K h^K hK来获得对查询的预测结果(9)。

3.4全部网络结构

3.4.1网络

我们的网络结构是端到端的全卷积网络.查询和记忆编码器网络结构相同,输入不同。查询输入的是RGB图像,记忆编码器输入是支撑帧和掩码还有one-hot标签。对于图记忆,读取器和写入器是ConvGRU,使用1x1卷积核。映射函数 f P f_P fP为1x1卷积。读出函数 f R f_R fR是一个解码器网络,有4个res block。……

3.4.2训练

O-VOS,我们使用循环训练的策略[13,59]。每一次迭代是采样一个支撑集来简历图记忆模型和一个相关查询集。循环训练的关键是模仿推理过程。对于每一个视频,我们采样N+1帧来组成支撑集,(前N帧和最后一帧(查询帧))。因此,这N个支撑帧可以表示成N节点的记忆图。用交叉熵损失函数进行监督学习。[论文解读]Video Object Segmentation with Episodic Graph Memory Networks

有时候图模型仅仅记忆instance和one-hot标签之间的联系,为避免这种情况,我们采用随机标签策略(label shuffling strategy[39])。如图3,每次分割时我们交换两个实例的标签,这样可以避免网络仅学习两个实例之间的关系,而是鼓励从当前帧学习区分特定的物体。
为了进一步提升效果,我们用合成视频扩展训练集。包括旋转,缩放,translation,sheering。先在合成数据集上训练,再在真实数据集上微调。
Z-VOS,我们使用与O-VOS相同的训练策略,但是输入只有RGB数据。没有随机标签策略,因为我们只做物体分割。

3.4.3测试

不使用线上(online)微调,直接将训练好的网络拿来测试。对于O-VOS。前N帧,我们计算叠加的记忆,并将他们写入记忆。从第N+1帧开始,在分割只收,我们用这些帧来更新图记忆。由于第一帧和标签永远是对的,我们重新初始化代表第一帧的节点。对于多实例的情况,我们对每个不同的实例进行一次操作。实例的重叠我们用soft-aggregation策略解决。0.2fps
Z-VOS中,我们随机采样N帧建立模型,这是考虑到全局信息比局部信息更能建模物体遮挡和相机移动。

3.5细节:

O-VOS。4块Tesla V100, 显存32G/GPU。batchsize=16,预训练24h,训练16h

4Experiments

4.1O-VOS

[论文解读]Video Object Segmentation with Episodic Graph Memory Networks

速度更快,显存勉强可以接受。
[论文解读]Video Object Segmentation with Episodic Graph Memory Networks

图4。DAVIS-17中有不少快速移动和背景模糊,我们处理的很好。Youtube-VOS中遮挡和出镜。遮挡结束后,我们可以重新检测到相应的物体。
[论文解读]Video Object Segmentation with Episodic Graph Memory Networks

4.2Z-VOS

[论文解读]Video Object Segmentation with Episodic Graph Memory Networks
[论文解读]Video Object Segmentation with Episodic Graph Memory Networks

4.3消融实验

[论文解读]Video Object Segmentation with Episodic Graph Memory Networks

链接:

paper:https://arxiv.org/abs/2007.07020
code:https://github.com/carrierlxk/GraphMemVOS

相关文章: