摘要
我们的端到端可训练VOS结构集成了一个可微分小样本学习(differential few-shot learning)模块。
这个内部学习器 旨在 通过 最小化第一帧中的分割误差 来 预测 目标的参数模型。
我们的方法 学习 小样本学习器应该学习什么。这能够在当前帧中获得 目标 更丰富的内在表示(?希望有可视化解释)
引言
我们的工作解决了VOS的关键问题:
- 如何捕获视频参考帧中稀缺的目标信息。
现有方法
特征匹配技术
- Hu, Y.T., Huang, J.B., Schwing, A.G.: Videomatch: Matching based video object segmentation. In: European Conference on Computer Vision. pp. 56{73. Springer (2018)
- Johnander, J., Danelljan, M., Brissman, E., Khan, F.S., Felsberg, M.: A generative appearance model for end-to-end video object segmentation. In: IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (2019)
- Voigtlaender, P., Leibe, B.: Feelvos: Fast end-to-end embedding learning for video object segmentation. In: IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (2019)
- Oh, S.W., Lee, J.Y., Xu, N., Kim, S.J.: Video object segmentation using space-time memory networks. Proceedings of the IEEE International Conference on Computer Vision (2019)
将参考帧与新图像进行比较
优点:特征特征匹配层 效率和差异性很高。这样可以设计出完全端到端可训练结构。
缺点:特征匹配方法 需要 强大且通用的 特征嵌入,在某些有挑战性的场景下会受到限制。
我们的方法
我们提出了一种在密集参数模型中捕获目标对象信息的方法。
我们集成了一个可微分小样本学习器模块,该模块使用参考帧标记来预测目标模型的参数。
我们的学习器旨在最小化目标模型预测和真实标记之间的误差。
给定一个新的帧,我们的目标模型预测目标掩码的一个中间表示,这个中间表示被输入分割解码器来生成最终的预测结果。
通过使用一个高效的、可微分的小样本学习器,我们的方法可以使用有限的标记来学习到一个鲁棒的、端到端可训练的目标模型。
该内部小样本学习器应该学习什么?基于标准优化方法的小样本学习器会强制目标模型仅生成一个对象掩码的输出,这样非常困难。且这种方法将信息限制为单通道掩码,信息量不够丰富。
因此,我们的方法学习小样本学习器应该学习什么,即,我们学习 输入 小样本学习器(用来生成目标模型) 的 真实标签。这使得我们的微分网络能学习更丰富的目标表示(因为更深层次了嘛?),该表示由学习器编码,在新的帧中由目标模型预测。
进一步的,为了使学习器专注于目标最重要的部分,我们也学习 为小样本学习损失中的不同元素 预测空间重要性权重。
由于我们基于优化的学习器是可微分的,网络结构中的所有模块都可以被端到端训练。
网络结构
给定带注释的第一帧,我们的小样本学习器构建一个目标模型(Target Model),该目标模型输出目标掩码的编码(Mask Encoding)。
然后,该掩码编码被输入分割解码器(Segmentation Decoder),生成最终的分割结果。
网络创新点
- 提出了一种新的VOS结构,基于一种基于优化的小样本学习器。
- 我们学习 小样本学习器应该学习什么 来最大化分割精确度。
- 我们的学习器以一种可微分的方式预测目标模型参数,使得网络结构可以被端到端训练。
- 我们利用学到的 掩膜表示 来设计一个轻权重边界框初始化模块,允许我们的方法在 弱监督设定 中生成 目标分割掩膜。
相关工作
VOS中的目标模型
训练以目标模型为条件的与目标无关的可微分网络。
RGMP
对参考帧及其真实标记进行编码,来生成目标表示。
然后将该表示与当前帧特征连接,输入到分割头中。
STM
在时空存储网络中执行特征匹配。
实现读取操作:通过注意力机制从编码的内存中检索信息,然后将该信息发送到分割网络来预测目标掩膜。
VOS中的元学习
由于VOS任务本身包含一些学习问题,因此可以使用为元学习开发的技术来解决它。
- 使用训练帧中分割特征的k均值聚类来学习分类器。
- 基于优化的元学习策略,目标模型直接生成输出分类得分。
方法
VOS的小样本学习
我们首先考虑一个VOS结构的通用类,公式为
S
θ
(
I
,
T
τ
(
I
)
)
S_\theta (I,T_\tau(I))
Sθ(I,Tτ(I))。
其中:
- θ \theta θ表示可学习参数。
- S θ S_\theta Sθ表示网络。
- I I I是当前的图像。
- T τ T_\tau Tτ是目标模型模块。
网络
S
θ
S_\theta
Sθ本身是目标无关的,它依赖于
T
τ
T_\tau
Tτ。
对象模块
T
τ
T_\tau
Tτ对目标对象的信息进行编码,
τ
\tau
τ是它的参数。
T
τ
T_\tau
Tτ生成一个目标相关的输出,这个输出被
S
θ
S_\theta
Sθ用于预测最终的分割结果。
目标模型的参数
τ
\tau
τ从初始图像
I
0
I_0
I0和它的掩码
y
0
y_0
y0中获得,这两者定义了目标对象。该过程我们用一个函数表示:
τ
=
A
θ
(
I
0
,
y
0
)
\tau=A_\theta(I_0,y_0)
τ=Aθ(I0,y0)。
VOS的关键问题:如何定义 T τ T_\tau Tτ和 A θ A_\theta Aθ。
自然地,
A
θ
A_\theta
Aθ是一个小样本学习问题。
我们的目标是找到使得监督学习目标
ℓ
\ell
ℓ最小的目标模型参数
τ
\tau
τ。
τ
=
A
θ
(
x
0
,
y
0
)
=
arg min
τ
′
ℓ
(
T
τ
′
(
x
0
)
,
y
0
)
\tau=A_\theta(x_0,y_0)= \mathop{\textup{arg\ min}}\limits_{\tau'} \ell(T_{\tau'}(x_0),y_0)
τ=Aθ(x0,y0)=τ′arg minℓ(Tτ′(x0),y0)
目标模块
T
τ
T_\tau
Tτ学习输出初始帧中目标对象的分割结果。
通常,我们运用输入图像的深度表示
x
=
F
θ
(
I
)
x = F_\theta(I)
x=Fθ(I),该深度表示由一个深度神经网络(例如ResNet)结构获得。
在测试过程中,给定一个新的帧
I
I
I,目标的分割结果是
S
θ
(
I
,
T
τ
(
F
θ
(
I
)
)
)
S_\theta(I,T_\tau(F_\theta(I)))
Sθ(I,Tτ(Fθ(I)))。
换言之,目标模块 先使用 新帧 生成一个 初始的分割结果。
这个初始分割结果之后被
S
θ
S_\theta
Sθ微调。
S
θ
S_\theta
Sθ进一步集成了大量的VOS数据集的预训练知识。
我们希望 A θ A_\theta Aθ是鲁棒的、高效的、可微分的。
Learning What to Learn
在我们的方法中,目标模块 T τ T_\tau Tτ根据参考帧 生成当前帧的一个初始的分割结果。然后 S θ S_\theta Sθ对这个分割结果进行微调,( S θ S_\theta Sθ中包含了离线学习到的强分割先验)。
S
θ
S_\theta
Sθ不仅仅只输入一个粗略的分割掩膜,它希望能利用更多可获得的信息。因此,只生成一个单通道掩膜限制了能传递给分割网络
S
θ
S_\theta
Sθ的有关目标的信息量。同时,内部小样本学习器
A
θ
A_\theta
Aθ也很难生成一个 能够得到物体完整分割结果 的目标模型
T
τ
T_\tau
Tτ。
理想情况下,在当前帧,目标模型应当预测目标的一个丰富的表示。但当目标模块的标准输出是真实掩膜
y
0
y_0
y0时,显然无法满足我们的要求。
因此这一章中,我们解决 内部小样本应该学习什么 的问题。
我们没有直接使用参考帧的掩膜
y
0
y_0
y0作为 小样本学习器的真实标记,而是使用一个可训练的卷积神经网络
E
θ
(
y
)
E_\theta(y)
Eθ(y)来学习这个真实标记。该网络使用真实标记掩膜作为输入,输出供小样本学习器使用的真实标记。
目标模型如下:
τ
=
A
θ
(
x
0
,
y
0
)
=
arg min
τ
′
ℓ
(
T
τ
′
(
x
0
)
,
E
θ
(
y
0
)
)
\tau=A_\theta(x_0,y_0) = \mathop{\textup{arg\ min}}\limits_{\tau'} \ell(T_{\tau'}(x_0),E_\theta(y_0))
τ=Aθ(x0,y0)=τ′arg minℓ(Tτ′(x0),Eθ(y0))
编码过后的真实标记 E θ ( y 0 ) E_\theta(y_0) Eθ(y0)可以是多维的。这允许目标模块 T τ T_\tau Tτ预测一个更丰富的目标表示形式,为分割网络提供更多的信息。
虽然标签生成器
E
θ
E_\theta
Eθ预测了小样本学习器应该学习什么,但它并没有解决训练集中训练数据不平衡的问题。例如,也许
E
θ
(
y
)
E_\theta(y)
Eθ(y)中的一个通道 对 目标物体的边界 进行了编码。但图像中只有一小部分像素属于物体边界,很难训练得到这样一个模型。
我们提出一个权重预测器(weight predictor)
W
θ
(
y
)
W_\theta(y)
Wθ(y)来解决这个问题。
类似于
E
θ
E_\theta
Eθ,它包括一个卷积神经网络,以真实标记掩膜
y
y
y作为输入。
这个模块为损失
ℓ
(
T
τ
(
x
0
)
,
E
θ
(
y
0
)
\ell(T_{\tau}(x_0),E_\theta(y_0)
ℓ(Tτ(x0),Eθ(y0)中的每个元素预测其重要性权重。因此它的输出的维度与
T
τ
T_{\tau}
Tτ和
E
θ
E_\theta
Eθ相同。
权重预测器可以帮助小样本学习器专注于真实标记
E
θ
(
y
)
E_\theta(y)
Eθ(y)中更重要的部分。
那么如何训练 真实标签生成网络
E
θ
E_\theta
Eθ 和 权重预测器
W
θ
W_\theta
Wθ 呢?
我们希望能够在VOS数据集上 端到端 地训练我们的分割结构中的 所有参数
θ
\theta
θ。这样,我们可以反向传播 某一测试帧
I
t
I_t
It 上 最终分割输出
y
~
t
=
S
θ
(
I
t
,
T
τ
(
F
θ
(
I
t
)
)
)
\tilde{y}_t = S_\theta(I_t, T_\tau(F_\theta(I_t)))
y~t=Sθ(It,Tτ(Fθ(It))) 和 真实标记
y
t
y_t
yt 之间的误差。
这就需要我们的内部学习器都可微,下一章将介绍这一点。
内部学习器
在这个章节,我们详解目标模块 T τ T_\tau Tτ和内部小样本学习器 A θ A_\theta Aθ。
目标模块 T τ T_\tau Tτ
目标模块 T τ : R H × W × C → R H × W × D T_\tau:\mathbb{R}^{H\times W \times C}\rightarrow\mathbb{R}^{H\times W \times D} Tτ:RH×W×C→RH×W×D,将一个C维的深度特征表示 映射到一个D维的目标相关的编码(原有的空间维度 H × W H\times W H×W不变)。
我们使用一个线性目标模块 T τ ( x ) = x ∗ τ T_\tau(x) = x * \tau Tτ(x)=x∗τ,其中, τ ∈ R K × K × C × D \tau \in \mathbb{R}^{K \times K \times C \times D} τ∈RK×K×C×D是一个卷积核大小为 K K K的卷积层的权重。
该目标模块是线性的,并且直接在高维深度表示上进行操作,它能够获得目标掩膜更强大的编码结果,从而提升分割性能。
如果目标模块的网络结构更复杂,很可能导致过拟合或训练效率低。
内部小样本学习器 A θ A_\theta Aθ
内部学习器的目标是最小化 目标模块 T τ ( x ) T_\tau(x) Tτ(x)的输出 和 生成的真实标签 E θ ( y ) E_\theta(y) Eθ(y) 之间的 加权均方误差,权重矩阵 W θ ( y t ) W_\theta(y_t) Wθ(yt)度量了图片中每个元素的重要性。
L ( τ ) = 1 2 ∑ ( x t , y t ) ∈ D ∣ ∣ W θ ( y t ) ⋅ ( T τ ( x t ) − E θ ( y t ) ∣ ∣ 2 + λ 2 ∣ ∣ τ ∣ ∣ 2 L(\tau)=\frac12 \sum_{(x_t,y_t)\in \mathcal{D}} ||W_\theta(y_t)\cdot(T_\tau(x_t)-E_\theta(y_t)||^2 + \frac\lambda2||\tau||^2 L(τ)=21(xt,yt)∈D∑∣∣Wθ(yt)⋅(Tτ(xt)−Eθ(yt)∣∣2+2λ∣∣τ∣∣2
其中,
D
\mathcal{D}
D是内部学习器的小样本训练集,通常只包含一个参考帧,这样设计使得我们的学习器在有新的参考帧被添加时也能够使用。
标量
λ
\lambda
λ是一个正则化参数。
τ = A θ ( D ) = arg min τ ′ L ( τ ′ ) \tau = A_\theta(\mathcal{D}) = \arg\min_{\tau'}L(\tau') τ=Aθ(D)=argminτ′L(τ′)
均方误差是一个凸二次目标函数,有闭式解,通常以原始形式或对偶形式给出。但这两种方式都需要复杂的计算(大量矩阵乘法和线性系统求解)。且这种方法不能直接利用卷积结构。
因此,我们使用最陡峭下降迭代来寻找
L
(
τ
)
L(\tau)
L(τ)的近似解。
对于当前的估计
τ
i
\tau^i
τi,我们计算在梯度方向上使得损失最小的步长
α
i
\alpha^i
αi,
α
i
=
arg
min
α
L
(
τ
i
−
α
g
i
)
\alpha^i =\arg\min_\alpha L(\tau^i-\alpha g^i)
αi=argminαL(τi−αgi)。其中,
g
i
=
∇
L
(
τ
i
)
g^i = \nabla L(\tau^i)
gi=∇L(τi)是损失函数
L
(
τ
)
L(\tau)
L(τ)在当前估计
τ
i
\tau^i
τi上的梯度。
优化迭代公式如下:
τ i + 1 = τ i − α i g i , α i = ∣ ∣ g i ∣ ∣ 2 ∑ t ∣ ∣ W θ ( y t ) ⋅ ( x t ∗ g i ) ∣ ∣ 2 + λ ∣ ∣ g i ∣ ∣ 2 , g i = ∑ t x t ∗ T ( W θ 2 ( y t ) ⋅ ( x t ∗ τ i − E θ ( y t ) ) ) + λ τ i \begin{aligned} \tau^{i+1} = \tau^i - \alpha^i g^i,\ \ \ \ & \alpha^i = \frac{||g^i||^2}{\sum_t||W_\theta(y_t)\cdot(x_t*g^i)||^2+\lambda||g^i||^2},\\ & g^i = \sum_tx_t *^T(W_\theta^2(y_t)\cdot(x_t*\tau^i-E_\theta(y_t)))+\lambda\tau^i \end{aligned} τi+1=τi−αigi, αi=∑t∣∣Wθ(yt)⋅(xt∗gi)∣∣2+λ∣∣gi∣∣2∣∣gi∣∣2,gi=t∑xt∗T(Wθ2(yt)⋅(xt∗τi−Eθ(yt)))+λτi
其中, ∗ T *^T ∗T表示反卷积操作。
所有的计算都可以用标准神经网络操作完成,且可微分。
因此,目标模型的参数
τ
i
\tau^i
τi在经过
i
i
i轮迭代后,对于整个神经网络参数
θ
\theta
θ是可微分的。
因此,内部小样本学习器可以用一个神经网络模块表示, A θ ( D , τ 0 ) = τ N A_\theta(\mathcal{D},\tau^0)=\tau^N Aθ(D,τ0)=τN, τ 0 \tau^0 τ0是输入的初始 τ \tau τ,迭代进行N次最陡峭下降。(?是RNN吗)
优点:
- 由于最陡峭下降 收敛很快,所以迭代次数 N N N是有限的。
- 当有新的参考帧被加入时,可以直接将该帧加入 D \mathcal{D} D,然后直接将当前的参数 τ \tau τ作为初始参数 τ 0 \tau_0 τ0开始新的训练。
VOS结构
运行流程
我们的VOS结构如上图所示,运行流程如下
- 小样本学习器:包含一个神经网络模块,根据 初始参考帧的信息 生成 目标模型
T
τ
T_\tau
Tτ的参数
τ
\tau
τ。
- 参考帧的图片 经过 特征提取器(卷积神经网络) F θ F_\theta Fθ 生成 特征图 输入小样本学习器。
- 参考帧的掩膜 经过 标签生成器(卷积神经网络) E θ E_\theta Eθ 生成 真实标记 输入小样本学习器。
- 参考帧的掩膜 经过 权重预测器(卷积神经网络) W θ W_\theta Wθ 生成 重要性权重 输入小样本学习器。
- 其中,真实标记 和 重要性权重 有着相同的维度大小。
- 后续的每一张测试帧图片
- 经过输入 特征提取器(卷积神经网络) F θ F_\theta Fθ 生成 特征图。
- 然后,特征图 被输入 目标模块 ,输出当前帧的 掩膜编码。
- 最后 掩膜编码 被输入 解码模块(卷积神经网络) D θ D_\theta Dθ ,在 特征图 的辅助下,输出最终的 输出掩膜。
模块介绍
包括6个模块:
- 深度特征提取器 F θ F_\theta Fθ
- 标签生成器 E θ E_\theta Eθ
- 损失权重预测器 W θ W_\theta Wθ
- 目标模块 T τ T_\tau Tτ
- 小样本学习器 A θ A_\theta Aθ
- 分割解码器 D θ D_\theta Dθ
θ
\theta
θ是离线训练是的网络参数。
τ
\tau
τ是小样本学习器
A
θ
A_\theta
Aθ生成的目标模型参数。
深度特征提取器 F θ F_\theta Fθ
使用ResNet50 作为backbone。
F θ F_\theta Fθ的输出被同时输入解码模块 D θ D_\theta Dθ和目标模块 T τ T_\tau Tτ。
对于目标模块
T
τ
T_\tau
Tτ,我们使用第三个残差块(?),这个残差块的空间步长
s
=
16
s=16
s=16。
这些特征先通过一个额外的卷积层,将维度降到
C
=
512
C=512
C=512,然后再输入
T
τ
T_\tau
Tτ。
小样本标签生成器 E θ E_\theta Eθ
-
真实标签生成器 E θ E_\theta Eθ从 目标掩码 中 提取足够的有效视觉信息,生成 掩码的丰富表示。
只以掩码作为输入的话能生成多丰富的表示啊?是不是可以添加图片信息辅助? -
生成的真实标签 需要与 深度特征提取器的输出 一一对应。
-
E θ : R s H × s W × 1 → R H × W × D E_\theta:\mathbb{R}^{sH\times sW \times 1} \rightarrow \mathbb{R}^{H\times W \times D} Eθ:RsH×sW×1→RH×W×D其中, H H H、 W W W和 D D D分别为目标模型特征的长、宽和维度数(通道数)。 s s s为特征提取器的步长。
-
网络的执行过程中, 标签生成器 E θ E_\theta Eθ 使用 CNN,作为一个通用的掩码特征提取器。对原始掩码 y y y进行特征提取,然后使用一个预测层生成最终的标签编码。
附录B.1
权重预测器 W θ W_\theta Wθ
权重预测器 W θ : R s H × s W × 1 → R H × W × D W_\theta:\mathbb{R}^{sH\times sW \times 1} \rightarrow \mathbb{R}^{H\times W \times D} Wθ:RsH×sW×1→RH×W×D,为内部学习器的损失函数计算权重。
权重预测器是一个卷积网络。
输入为目标掩码
y
y
y。
算法执行时, W θ W_\theta Wθ和 E θ E_\theta Eθ共用一个掩膜特征提取器,之后额外添加一个单独的卷积层,对提取出的掩膜特征图进行预测,以获得权重矩阵。
目标模块 T τ T_\tau Tτ 和 小样本学习器 A θ A_\theta Aθ
目标模块
T
τ
T_\tau
Tτ是一个卷积核大小为3的卷积滤波器。
输出通道为16。
小样本学习器 A θ A_\theta Aθ通过最陡峭下降迭代,预测目标模块的参数 τ \tau τ。
在序列的第一帧,我们使用0初始化,
τ
0
=
0
\tau_0=0
τ0=0。
在后续的测试帧上,我们使用预测出的目标模型参数
T
τ
(
x
)
T_\tau(x)
Tτ(x),来预测掩膜编码,以输入分割解码器。
分割解码器 D θ D_\theta Dθ
这个模块使用 目标模块 T τ T_\tau Tτ的输出 和 特征提取器 F θ F_\theta Fθ 生成的特征图 来预测最终准确的分割掩膜。
我们的方法可以与任何解码器结构结合。
本文为了方便,使用了与[28]Learning fast and robust target models for video object segmentation中相似的解码器网络,对输入的 多通道目标掩膜编码 进行处理。
附录B.2
推断 Inference
给定一个测试序列 V = { I t } t = 0 Q \mathcal{V}=\{I_t\}^Q_{t=0} V={It}t=0Q,以及第一帧的标记 y 0 y_0 y0。
-
为小样本学习器创造一个初始的训练集 D 0 = { ( x 0 , y 0 ) } \mathcal{D}_0=\{(x_0,y_0)\} D0={(x0,y0)}。
其中, x 0 = F θ ( I 0 ) x_0=F_\theta(I_0) x0=Fθ(I0)是第一帧提取出的特征图。 -
小样本学习器通过最小化内部损失 L ( τ ) L(\tau) L(τ),为目标模型预测其参数 τ 0 = A θ ( D 0 , τ 0 ) \tau_0 = A_\theta(\mathcal{D}_0,\tau^0) τ0=Aθ(D0,τ0)。
目标模型的初始参数被设置为全0, τ 0 = 0 \tau^0=0 τ0=0。 -
后续测试序列的第一帧 I 1 I_1 I1 被输入 学习到的模型 T τ 0 T_{\tau_0} Tτ0,输出 该帧分割掩膜的编码 T τ 0 ( x 1 ) T_{\tau_0}(x_1) Tτ0(x1)。这个掩膜编码 和 图片特征 被输入 解码器模块,输出 预测掩膜 y ~ 1 = D θ ( x 1 , T τ 0 ( x 1 ) ) \tilde{y}_1=D_\theta(x_1,T_{\tau_0}(x_1)) y~1=Dθ(x1,Tτ0(x1))。
-
为了适应场景中的变化,我们使用后续帧的预测结果调整我们的目标模型。我们将预测掩膜 y ~ 1 \tilde{y}_1 y~1作为第一帧 I 1 I_1 I1的伪标签,将新的训练样本 ( x 1 , y ~ 1 ) (x_1, \tilde{y}_1) (x1,y~1)加入到小样本训练集 D 0 \mathcal{D}_0 D0中,新的训练集记为 D 1 \mathcal{D}_1 D1。
然后使用新的训练集 D 1 \mathcal{D}_1 D1计算新的目标模型参数 τ 1 = A θ ( D 1 , τ 0 ) \tau_1=A_\theta(\mathcal{D}_1,\tau_0) τ1=Aθ(D1,τ0)。我们的基于优化的学习器可以直接使用前一个目标模型 τ 0 \tau_0 τ0作为初始化,这提高了算法的效率。具体来说,我们在新的训练集 D \mathcal{D} D上额外多做了 N u p d a t e i n f N\rm^{inf}_{update} Nupdateinf次最陡峭下降迭代。 -
更新后的模型 τ 1 \tau_1 τ1被应用到下一帧 I 2 I_2 I2上。循环4中的过程直到序列结束。
细节
我们的内部小样本学习器 A θ A_\theta Aθ在第一帧使用 N i n i t i n f = 20 N\rm^{inf}_{init} = 20 Ninitinf=20,在后续的每一帧上使用 N u p d a t e i n f = 3 N\rm^{inf}_{update}=3 Nupdateinf=3。
我们可以很轻松地为训练集
D
\mathcal{D}
D中的每个样本生成一个全局重要性权重。
我们使用一个指数衰减权重参数
η
−
t
\eta^{-t}
η−t来降低旧样本(即和当前帧距离较远的帧样本)的影响。我们使用
η
=
0.9
\eta=0.9
η=0.9,并保证所有的权重和为
1
1
1。
小样本训练集
D
\mathcal{D}
D中最多有
K
max
=
32
K_{\max}=32
Kmax=32个样本,也就是说我们会删去旧样本。
我们不会删除参考帧样本
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)。
序列中的每个帧先被裁剪为 比前一帧目标估计大5倍的patch,然后被等比例缩放为 832 × 480 832\times 480 832×480。
如果一个序列中包含多个目标,我们将独立地并行处理每个目标,并使用软聚合操作(soft-aggregation operation )合并预测的掩膜。
训练
我们长度为 Q Q Q的迷你序列 V = { ( I t , y t ) } t = 1 Q − 1 \mathcal{V}=\{(I_t,y_t)\}^{Q-1}_{t=1} V={(It,yt)}t=1Q−1上训练网络。
为了增加对外观快速变化的鲁棒性,我们从一个有着 Q ′ Q' Q′帧的更大的窗口上按时序顺序随机采样样本帧。
在推断期间:
- 我们使用第一帧创造初始的小样本训练集 D 0 = { ( x 0 , y 0 ) } \mathcal{D}_0 = \{(x_0,y_0)\} D0={(x0,y0)}。
- 然后我们根据 D 0 \mathcal{D}_0 D0进行 N i n i t t r a i n N\rm_{init}^{train} Ninittrain次最陡峭下降迭代,获得初始的目标模型的参数 τ 0 = A θ ( D 0 , 0 ) \tau_0=A_\theta(\mathcal{D}_0,0) τ0=Aθ(D0,0)。
- 在后续帧中,我们进行 N u p d a t e t r a i n N\rm_{update}^{train} Nupdatetrain次迭代来更新模型, τ t = A θ ( D t , τ t − 1 ) \tau_t=A_\theta(\mathcal{D}_t,\tau_{t-1}) τt=Aθ(Dt,τt−1)。
- 每一帧的预测结果 y ~ t = D θ ( x t , T τ t − 1 ( x t ) ) \tilde{y}_t=D_\theta(x_t, T_{\tau_{t-1}}(x_t)) y~t=Dθ(xt,Tτt−1(xt))都被加入到小样本训练集 D t = D t − 1 ∪ { ( x t , y ~ t ) } \mathcal{D}_t=\mathcal{D}_{t-1}\cup\{(x_t,\tilde{y}_t)\} Dt=Dt−1∪{(xt,y~t)}。
网络所有的参数
θ
\theta
θ 通过最小化 每个序列 的 损失 来进行训练,损失函数如下:
L
seq
(
θ
;
V
)
=
1
Q
−
1
∑
t
=
1
Q
−
1
L
(
D
θ
(
F
θ
(
I
t
)
,
T
τ
t
−
1
(
F
θ
(
T
t
)
)
)
,
y
t
)
\mathcal{L}_{\textup{seq}}(\theta;\mathcal{V})=\frac{1}{Q-1}\sum_{t=1}^{Q-1}\mathcal{L}(D_\theta(F_\theta(I_t),T{\tau_{t-1}}(F_\theta(T_t))),y_t)
Lseq(θ;V)=Q−11t=1∑Q−1L(Dθ(Fθ(It),Tτt−1(Fθ(Tt))),yt)
其中, L ( y ~ , y ) \mathcal{L}(\tilde{y},y) L(y~,y)是预测结果 y ~ \tilde{y} y~和真实标记 y y y之间的分割损失。
在每个batch中,我们对多个 迷你序列 做平均,来计算最终损失的梯度。
值得一提的是,目标模型的参数 τ t − 1 \tau_{t-1} τt−1 被 可微分小样本学习器 A θ A_\theta Aθ 预测得到,因此依赖于 标签生成器 E θ E_\theta Eθ、权重预测器 W θ W_\theta Wθ和特征提取器 F θ F_\theta Fθ。由于学习器 A θ A_\theta Aθ的可微分性,这些模块都可以被端到端地训练。
细节
我们的网络在YouTube-VOS和DAVIS数据集上进行了训练。
迷你序列长度 Q = 4 Q=4 Q=4帧,原视频目标分割序列长度 Q ′ = 100 Q'=100 Q′=100。
我们使用翻转、旋转和缩放操作来进行数据增强。
然后我们从每一帧中裁剪一块
832
×
480
832\times 480
832×480的部分作为采样。
小样本学习器 A t h e t a A_theta Atheta的最陡峭下降的迭代次数 N i n i t t r a i n = 5 N\rm_{init}^{train}=5 Ninittrain=5(第一帧), N u p d a t e t r a i n = 2 N\rm_{update}^{train}=2 Nupdatetrain=2(后续帧)。
我们使用Lovasz损失作为分割损失 L ( y ~ , y ) \mathcal{L}(\tilde{y},y) L(y~,y)。
我们使用MASK R-CNN的权重来初始化基础网络ResNet-50。
…
使用bounding box初始化
添加了一个边界框译码器 B θ B_\theta Bθ
冻结网络中其他模块的参数来对 B θ B_\theta Bθ进行训练,从而不破坏本来的目标分割结构。
实验
在单目标视频序列上的运行速度是6FPS。
消融实验
Baseline
- 直接训练目标模型预测初始掩膜,然后被译码器模块 D θ D_\theta Dθ细化。
- 在离线训练时,反向传播的过程不经过小样本学习器,而是之训练 D θ D_\theta Dθ。也就是说,没有进行端到端训练。
端到端训练
利用端到端的方法来训练小样本学习器,为其获得特定的参数,在 J \mathcal{J} J指标上提升了3.0个点。
标签生成器 E θ E_\theta Eθ
权重预测器 W θ W_\theta Wθ
和SOTA比较
在只在DAVIS2017上进行训练时,表现卓越。