Lucid Data Dreaming for Video Object Segmentation(2019)
提出了一种in-domain的traing方法,针对1st fame进行finetune,该方法使用的训练数据大量的减少。
对于多物体分割,使用的输入为(4+N)即RGB+segmentation+mask。
数据增强的步骤:
1.光照的改变
2.前景物体的提取
3.对前景物体的affine、non-rigid deformations
4.相机角度调整
5.前景背景融合
Robust Multiple Object Mask Propagation with Efficient Object Tracking (2019)
是一篇针对交互型物体分割的论文,该论文提出了三阶段的方法:
1.Single Object Tracking
2.Single Object Mask propagation
3.Multiple Object Propagation
State-Aware Tracker for Real-Time Video Object Segmentation(2020)
该方法是针对VOS的论文,主要看点在于快,效果也还可以。
介于目前online learning的方法特别耗时,因此本文采用offline learning的方法更新模型。
改论文提出的三阶段pipeline如图所示,分别为Segmentation、Estimation、Feedback。该论文将VOS的问题看作状态估计。
Segmentation
该结构包括2个similarity encoder结构和1个saliency encoder。其中saliency encoder 使用shrinked的ResNet-50的结构。而similarity的结构使用当前帧的大范围区域与第一帧的目标区域为输入,该部分使用以AlexNet为backbone的SiamFC++结构。
Estimation
该部分得出物体的状态信息,并给出分数,主要是为了判断该物体是well-presented还是有遮挡或者其他不完整的状态,最终的分数可以对应为两个状态,即正常和不正常。
这里提出了置信度和集中度两个概念,分别为:
最终的state为两者的乘积,当该值大于T(论文为0.85),则为正常,否则不正常。
Feedback
这一步包含了两个部分,即Cropping Strategy Loop和Global Modeling Loop。
1.Cropping Strategy Loop
这一步主要是为了得到bbox,并且为下一帧得到搜索区域。该步骤联系上一步的state信息,若是正常状态,则bbox为mask的最大连通域;对于不正常的状态,使用regression head去预测,此处使用SiamFC++,该部分在similirty后面。
2.Global Modeling Loop
该部分我认为是本文的亮点,也是本文在offline learning上最突出的工作。
该部分通过mask的信息,将前景提出来,并且将前景信息送到特征提取器里(shrinked ResNet-50),该部分可以提出非常纯净的目标信息。另外,联合前面的state信息,如果该帧的state不正常,那么若将该帧的信息也放进特征提取器,会造成很差的结果,因此设计更新参数的方法如下:
训练的时候首先训练similarity encoder 和regression header 部分,在object tracking上同时训练,使用SiamFC++的训练方法;然后将similarity encoder 和regression header两部分冻结,训练整个网络,其中salieancy encoder和特征提取器在ImageNet上预训练。
可以看到速度是真的快。
One-Shot Video Object Segmentation(2017)
这篇文章是online learning的一篇经典文章,但是Lucid Tracker毕竟是基于这种方法改进的,所以这篇文章的效果肯定不如后者,但是因为是经典文章所以仍值得一看。
该方法将VOS任务看作将图像物体的信息传递的过程,即先在ImageNet上预训练,然后通过图像信息在Video上找物体的过程。该方法是一种端对端训练的方法,并且该方法认为帧间的连续性信息并不重要(毕竟是找物体的图像信息),因此帧间独立训练与预测。
该论文的主要方法:
1.预训练
使用FCN结构在ImageNet上预训练,得到Base Network,然后在DAVIS上训练,得到Parent Network的参数。
2.对第一帧finetune
对第一帧的图像信息与mask进行finetune,再进行预测
3.Contour Snapping
为了修正直接预测的不准确性,该方法采用了结合轮廓信息预测的方法。这里的轮廓是预测图中所有的轮廓,包括前景与背景。使用与上述方法同样的结构,训练轮廓网络,注意这里的结构相同但参数不共享。训练的数据集为PASASCAL-Context。
这里预测的轮廓信息与mask去投票,大于50%的才认为是真正的前景mask,称为Boundary Snapping。
通过Ablation的结果可以看出这三种方法都是work的:
Video Object Segmentation using Space-Time Memory Networks(2019)
该方法对目前VOS方法的总结如下图,此处很生动形象,因此贴在下面。
该论文提出的思路非常的清晰,将VOS问题看成query的问题,生成key-value对,该方法的主要思想是,既然1st帧和t-1帧都对t帧预测的mask有帮助,那么如果将t之前所有的帧的信息放入网络,岂不是可以得到更好的效果。本文的核心思想就是将前面帧的信息尽可能的放进网络,帮助预测,因此提出了基于记忆网络的pipeline。主要结构如下图所示。
Encoder结构:
这里主要的两个encoder结构是:memory encoder 和 query encoder。
其中memory encoder的输入为之前的RGB图像与mask信息,而query encoder的输入仅为当前帧;这两个结构的输出为key->value结构。query encoder的value是学习存储具体的外观信息,帮助精确解码mask信息,而memory query是为了编码图像的信息与mask的信息。
Query encoder:
输出为key与value两个feature map,K的尺寸为H*W*C/8,V的尺寸为H*W*C/2
Memory encoder:
多个输入concate后作为memory encoder的总输入,如果有多帧的信息,则每帧是单独预测key与value的,最后将多个key与value concate。
Space-time Memory Read:
此步骤是将前面两个encoder的信息结合起来,这里的结构是衡量两个key的相似度。结构如下图所示:
Decoder:
这里使用了一个refinement module的结构,输入为Read模块的输出、query encoder的输出尺寸变换后的结构。refinement module的输出用来精修mask
对多物体预测mask的时候,采用mask 融合的方式。
个人认为这里所使用到的有用的trick为:
1.在video上训练的时候,为了使模型更加的鲁棒,中间会进行跳帧训练
2.不使用BN层,用随机crop的方法训练
3.为了不让内存爆炸,并不是对所有帧进行编码,使用的帧为:第一帧、前一帧及每个5帧的采帧。
可以看到在DAVIS-2017中,结果是非常好的
FEELVOS: Fast End-to-End Embedding Learning for Video Object Segmentation(2019)
该论文提出图像级逐像素embedding,使用global和local两种matching方法,该方法实现端到端的快速推理。
该论文提出使用embedding辅助网络训练,embedding的结构如下所示:
这里所使用的embeding结构,在两个地方涉及到(有两种使用方式)即global matching distance map和local matching distance map。global即当前帧与起始帧的对比,local即当前帧与前一帧的对比。
Global Macthing:
embedding的具体操作为,对于每个像素点p,提取出一个图像embedding矩阵,对于两张对比图片的被对比的像素点,该值越大则代表距离越远,该值越小则代表距离越近。对于两个像素点p和q,计算两者的距离公式为:
该值取值范围为[0,1],对于global matching distance map的值计算,公式为:
global矩阵的计算为整张图逐像素的计算。
Local Previous Frame Matching:
由于可以假设连续的两帧之间,物体移动较小,因此为了节省计算时间,不做整张图的计算,而只是取K邻域计算,就此而言,每个像素的计算量退化到(2*k+1)^2,公式为:
并且实验表面,邻域的计算比全局计算效果要好。
除了embedding之外,接下来就是重要的预测结构,本文称之为Dynamic Segmentation Head。该部分的输入为:global embedding distance map、local embedding distance map、t-1预测的概率分布图、backbone提取的信息。
对于多物体预测,需要对每个object单独跑,如下图所示。
在DAVIS 2017测试集上的结果:
PReMVOS- Proposal-generation, Refinement and Merging for Video Object Segmentation(2018)
该论文是DAVIS 2018竞赛的第一名,并且成绩放在现在也不俗,问题就是速度太慢,38ms/frame。
该算法的pipeline如下:
主要有五个部分proposal generation、proposal refinement、Mask propagation、ReID embedding vectors、proposal merging。除此之外,本文还用了LucidTracker的方法去做增强。
Proposal Generation:
该部分的输出为coarse mask proposal、bbox和score。使用的是backbone为ResNet101 的Mask R-CNN。
Proposal Refinement:
这里的输入是通过前层的预测得出的bbox,resize后的结果,并且加上了bbox为mask的层,即RGB+bbox的mask共四层,作为网络的输入。使用的是DeepLab v3+的结构。这部分的输出是精确的mask结果。(论文里提到摒弃掉coarse mask proposal 的结果,而只使用bbox,并不明白为什么)
Mask Propagation:
使用FlowNet 2.0,用光流的方法,将预测的mask warp到下一帧。
ReID Embedding Vectors:
用triplet loss对每个像素训练出embedding矩阵
Proposal Merging:
融合大法好啊,这一步就是将前面的结果融合起来以提升精度,大概也是造成速度慢的原因,毕竟什么提升精度的方法都想要的话就不要速度了吧。
这里共有5个score融合,得到的score们的排序,取出最高的score则认为就是正确的object。
1.object score:proposal generation层输出的score
2.ReID score:算与第一帧gt的欧式距离
3.Mask Propogation score:
4.Inverse ReID score:
5.Inverse Mask Propagation score:
总score:
这篇文章的结果前面已经涵盖到,就不另放了,这里放出runtime的结果,大概是作者觉得时间确实太长,也推出了fast的版本,具体操作论文中有详细描述,就不写了。
Collaborative Video Object Segmentation by Foreground-Background Integration(2020)
该论文的作者排名DAVIS 2020榜的第二名,因此了解一下这个方法。
该论文提出了background embedding,他认为只做前景的embedding会有问题,比如当背景的物体和前景很相似时,会出现预测的混乱,因此背景的embedding也非常重要。除此之外,之前的论文embedding都是针对pixel-level,本文提出同时使用instance-level,作为attention来辅助pixel-level的信息,本文提出叫CFBI的模型。整体的流程图如下所示:
感觉本论文是集大成者,融合了其他论文的方法,没啥创新的东西,不过结果确实还不错。该文的主要贡献:
Collaborative Pixel-level Matching:
首先根据FEELVOS,设计了衡量两元素之间距离的公式:
Foreground-Background Global Matching:
前景:
背景:
Foreground-Background Multi-Local Matching:
根据FEELVOS的方法,本论文认为帧间物体的运动速度并不一定非常慢,因此如果采用固定邻域大小去搜索,可能会漏掉部分物体,因此提出了多次K邻域的搜索方法,说白了就是使用多个K,并在多个K中取距离最小值,公式为:
前景:
背景:
Collaborative Instance-level Attention:
这里主要参考了SE-Nets的结构,使用pooling做attention。结构就是下图这样,具体的可看SE-Nets的结构。
Collaborative Ensembler:
这里就是把前面的结果结合起来,做最终的预测,CE模块使用了3阶段的Res-Blocks和一个ASPP模块。
该模型的结果如下图所示,可以看到结果是相当不错的。