Fast Video Object Segmentation by Reference-Guided Mask Propagation论文理解

解决什么问题

VOS


本文创新点\贡献

  • 作者的网络生成尖锐的mask,并且不需要花时间做后处理。
  • 使用两阶段的方法,在人工生成的数据上做预训练,然后微调,能解决缺少大量训练数据的问题

前人方法

基于传递
利用物体移动的时间连贯性,做mask传递,但依赖像素之间的时空联系,遇到那种漂移、消失的情况就不行了,只能是外观和移动平滑的情况下使用

基于检测
不依赖时空信息,主要是逐像素检测,这样不怕运动的不连贯,但是怕外形改变和相似物体误检


方法

关键就是利用带有注释信息的参考帧还有带有前面mask的当前帧,然后网络通过匹配参考帧的外观来检测target物体,通过参考之前的target mask来在当前帧进行追踪
在这里插入图片描述

Siamese encoder

在这里插入图片描述
输入
两个输入,一个是带有真实mask的第一帧,另一个是带有前一帧的mask的当前帧(都是四通道),分别对应target流和参考流,两个流的卷积的权重是共享的
网络
backbone是ResNet50,第一个卷积层改动了让可以输入四通道,然后权重来自ImageNe的预训练,新加入的卷积随机初始化

Global convolution block

在这里插入图片描述

输入是两个encoder的输出叠放在一起的特征图,这个模块用来做参考和target流之间的全局特征匹配,来定位target物体。这是一种全局卷积的操作,说是能克服卷积的局限性,还扩大了感受野,后面加了残差连接,没有使用BN

Decoder

在这里插入图片描述
在这里插入图片描述

执行refinement模块,来有效合并特征,用softmax来生成最后的object mask,大小只有原输入的四分之一

这个mask分辨率不算高吧


训练

两阶段训练方法,先使用静态图像数据集对模拟样本进行训练,然后对视频分割数据进行微调。

Pre-training on simulated samples

自动生成方法:

  • 对带有object mask的图进行随机变换,来生成一对图像
    在这里插入图片描述

  • 混合前景和背景,位置随机
    在这里插入图片描述

  • 对target的mask做一些随机扭曲,模拟前后mask的不重叠效果,而且还随机裁剪一部分

Fine-tuning on video data

在这里插入图片描述
l o s s B P T T 每一步都计算loss,同时BPTT
目的
使网络学会适应长期的外观改变(参考和target帧之间)和短期的移动(target帧和前一帧的mask)

操作
在时间的尺度上循环连接模型,然后把前一帧的softmax输出作为当前帧的指导,而不是使用二值化,这样能将估计的不确定性考虑进去,还能做BPTT,训练的时候随机从时间序列里挑N段连续的target帧

二值化太死板了
前一阵生成mask的时候本来就是用softmax然后argmax,这样直接使用softmax,能更好的利用细腻些
要一直用第一帧的信息吗,那岂不是误差越来越大?
这样看还是嵌入向量更好


推理

将未二值化前一帧的输出概率图作为的目标帧的引导mask,推理的时候只对参考帧做一次encoder,而且这样效果不错,为了捕捉不同尺寸,对图像做了缩放(0.5,0.75,1),然后取平均值。

Multiple Objects

在推理的时候有两种方法:

  • 简单的方法是每个物体独立处理,分配可能性最大的label
  • 另一种方法,赢者通吃,利用实例的不连贯约束,每个像素不可能同时属于多种实例,所以在估计中,将不是最大的实例可能性设为0.

是指的检测框吗,那不就是直接取最大吗,不连贯约束是什么,是指前后?还是说左右?
左右发生冲突的时候?
还是说这个框有了最大的之后,其他的框的这种可能性都设为0了?
这样一种label只会存在一个,A框的a类0.95分,B框的a类0.8分,b类0.7分,这时候A分为a类,B分为b类
不是,人家是像素,像素之间怎么搞,置为0了又怎么样?那跟直接选最大的有区别吗

第二种比第一种好,但是也丢失了一部分信息,所以对此使用了softmax:
p i , m = σ ( l o g i t ( p ^ i , m ) ) = p ^ i , m / ( 1 p ^ i , m ) j = 0 M p ^ i , j / ( 1 p ^ i , j ) p_{i,m} = \sigma(logit(\hat{p}_{i,m})) = \frac{\hat{p}_{i,m}/(1-\hat{p}_{i,m})}{\sum^M_{j=0}\hat{p}_{i,j}/(1-\hat{p}_{i,j})}

其中 σ \sigma 和 logit 代表softmax和logit函数, p ^ i , m \hat{p}_{i,m} 是实例 m m 在像素位置 i i 的可能性, m = 0 m=0 表示背景, M M 是实例的数量


实验结果

在这里插入图片描述
D A V I S 2016 b e n c h m a r k DAVIS 2016 benchmark

在这里插入图片描述
D A V I S 2016 v a l i d a t i o n s e t DAVIS-2016 validation set
在这里插入图片描述
D A V I S 2017 v a l i d a t i o n s e t DAVIS-2017 validation set


总结

这篇文章算是比较早了,现在使用第一帧和前一帧算是基本操作了,就是使用方法不同,这篇文章的使用比较简单,只是提取了特征融合在一起,没有更精细的使用,所以速度会较快,越到后面的帧和第一帧的差距越大,可能这种方法的精准度就不行了,而且前一阵的mask误差也会逐渐累积,越往后越不好,这么比起来STM的memory机制较为理想的方法了

发布了63 篇原创文章 · 获赞 2 · 访问量 8012

猜你喜欢

转载自blog.csdn.net/McEason/article/details/104475729