参考代码:frtm-vos
导读:这篇文章针对视频分割问题提出了一种新的算法frtm-vos,这个算法主要由两个部分组成:target appearance model(文中也叫:light-weight discriminative target model)和segmentation model。这两个子模块分别完成粗略目标分割图的生成和精细分割图的生成,对于target appearance model它通过在infer的时候使用快速收敛的优化算法(GN-CG,Gauss-Newton based strategy - Conjugate Gradient descent)为网络提供粗糙但是生成内容鲁棒的引导,之后后面的segmentation model就用去迭代(使用了backbone的多层特征)生成更加精细的分割结果,由于并没有什么复杂的网络结构并且在线优化也是使用快速优化的算法其整体运行速度还是很快的(手机部署估计是个坑-_-||)。
文章提出的分割算法是半监督的,需要在infer开始的时候提供首帧的标注(但是在一些分割网络中也能通过一些技术手段实现不提供),而文章中的粗略分割模块首先就是在这一帧标注上进行训练,生成粗糙的分割结果。因而文章的数据处理的三个阶段可以描述为下图中表示的3列所示:
文章提出的方法其流程见下图所示:
文章提出的流程主要划分为3个部分:
模块数学表达:
这部分用于生成粗糙的分割结果,这个东西特别轻量级,就是使用两层卷积实现的,因而这部分的输出就可以使用下面的数学描述进行表达:
s = D ( x ; w ) = w 2 ∗ ( w 1 ∗ x ) s=D(x;w)=w_2*(w_1*x) s=D(x;w)=w2∗(w1∗x)
损失函数定义:
对于这个网络的学习其采用的损失函数就是平方损失函数:
L D w ; M = ∑ k γ k ∣ ∣ v k ⋅ ( y k − U ( D ( x k ) ) ) ∣ ∣ 2 + ∑ j λ j ∣ ∣ w j ∣ ∣ 2 L_D{w;M}=\sum_k\gamma_k||v_k\cdot(y_k-U(D(x_k)))||^2+\sum_j\lambda_j||w_j||^2 LDw;M=k∑γk∣∣vk⋅(yk−U(D(xk)))∣∣2+j∑λj∣∣wj∣∣2
其中, U U U代表的是上采样,用于进行大小对齐; v k v_k vk是加权参数用于去平衡不同类别的样本; M = { ( x k , y k , γ k ) } k = 1 K M=\{(x_k,y_k,\gamma_k)\}_{k=1}^K M={(xk,yk,γk)}k=1K是内存记忆,用来优化目标漂移的; γ k \gamma_k γk是内存记忆中样本的采样权重;
模块优化:
这里采用的是基于GN优化策略的方法,其对于每次迭代优化过程中对于最佳下降步长 Δ w \Delta w Δw的求解表达式可以描述为:
L D ( w + Δ w ) ≈ Δ w T J w T J w Δ w + 2 Δ w T J w T r w + r w T r w L_{D}(w+\Delta w)\approx \Delta w^TJ_w^TJ_w\Delta w+2\Delta w^TJ_w^Tr_w+r_w^Tr_w LD(w+Δw)≈ΔwTJwTJwΔw+2ΔwTJwTrw+rwTrw
对于上面的这个优化问题采用的是CG下降法实现的。
样本均衡
为了解决分割问题中样本不均衡的问题文章对分割数据的中的样本使用加权的形式进行样本均衡,其是定义了一个target influence常数为: κ ^ k = N − 1 ∑ n = 0 y k ( n ) \hat{\kappa}_k=N^{-1}\sum_{n=0}y_k(n) κ^k=N−1∑n=0yk(n),那么对于整体的加权矩阵就可以通过下面的计算关系得到:
其中, κ = m a x ( κ m i n , κ ^ ) , κ m i n = 0.1 \kappa=max(\kappa_{min},\hat{\kappa}),\kappa_{min}=0.1 κ=max(κmin,κ^),κmin=0.1。
网络的train:
网络的训练步骤可以简单得划分为2个步骤:
PS:至于具体优化参数设置,请参考原文。
网络的infer:
网络在infer的过程中其计算流程就如上面的算法所示,只不过的是由于视频的长度原因需要考虑目标的漂移问题,这里需要间隔 t s = 8 t_s=8 ts=8的间隔对target model进行一次更新,减小甚至消除漂移带来的影响。这里对内存记忆中的内容实行了样本加权的策略,其权值为: γ i = ( 1 − η ) − 1 γ i − 1 , η = 0.1 \gamma_i=(1-\eta)^{-1}\gamma_{i-1},\eta=0.1 γi=(1−η)−1γi−1,η=0.1,内存记忆中最大的样本数据两设置为: K m a x = 80 K_{max}=80 Kmax=80。