《MaskTrack:Learning Video Object Segmentation from Static Images》论文笔记

参考代码:MaskTrack

1. 概述

导读:这篇文章借鉴了实例分割与目标跟踪的思想,从而得到视频分割方法MaskTrack。文章的方法使用静态图像(非标注的视频序列)就可以完成训练工作,并且输入的信息可以为边界框、分割图或是合并多个带注释的帧,输入的范围很宽泛,这就使其可以运用到不同的场合下去。这篇文章的重点是将离线(从上一帧预测结果上生成优化之后的掩膜)和在线学习(获取特定的实例目标分割结果)策略互补地组合起来实现更加精细的目标分割。

这篇文章提出的方法使用相邻两帧之间的相关性,而不是多帧之间或是整个视频序列的相关系进行视频分割,其中对于分割质量较为关键是两个策略:在线与离线学习策略

  • 1)离线学习:这里使对图像掩模进行变形和粗糙化,以训练网络可以根据其粗略估计输入生成准确的输出掩模;
  • 2)在线学习:这里将目标跟踪里面的思想迁移到视频分割里面,并使该方法能够根据新输入视频中感兴趣的对象轻松地进行优化;

2. MaskTrack方法设计

这篇文章将视频目标分割从另外一个角度转换为引导的实例分割。也就是从现有分割网络的基础上(例如文章说到的DeepLabv2)转换并训练它实现逐帧的实例分割。这样带来一个问题是怎么让网络知道哪个实例需要进行分割?对此文章提出两个互补的策略去解决这个问题。

  • 1)通过离线学习使用预估出来的前一帧掩膜引导网络偏向于目标实例;
  • 2)使用在线学习的方式细化实例分割结果;

2.1 离线的实例分割学习

为了引导分割网络分割特定的目标区域,这里将原始的RGB输入添加一个channel:mask channel(前一帧的分割输出,提供目标大概的位置与轮廓信息),从而得到一个4维的输入。对应的文章的网络结构见下图1所示:
在这里插入图片描述
离线学习中使用前一帧产生的粗糙mask,将其送入到训练网络中去获取当前帧的预估,由于相邻两帧之间不会存在较大的位移情况,因而这样的粗糙结果也是一个很好的预估。之后再与在线学习的部分结合产生效果更好的分割结果。文中提到有两个关键性观察结果支撑文章方法的可行性:

  • 1)即使较为粗糙的mask输入(bounding box)也可以产生较好的结果,这是由于输入的mask主要的作用是使得分割网络趋向于正确的目标实例进行分割;
  • 2)由于只是使用mask作为额外的输入,则就可以使用大量单张标注的数据进行训练数据合成,这就使得可供训练的数据大大增多;

为了去模拟实际情况中前一帧输出带噪声的mask,这里使用了两种数据模拟的方式,使得网络更加鲁棒并且避免分割流程中的误差累积:

  • 1)使用仿射变换、薄板样条变换变化输入的mask数据,这是为了模拟相邻两帧之间的位移变化;
    在这里插入图片描述
  • 2)使用粗糙化(形态学膨胀操作)生成与测试阶段类似mask训练数据;

2.2 在线的实例分割学习

为了跟进一步优化分割的效果,这里借鉴了目标跟踪中的技术,将其作为与离线学习互补的第二策略。文章中将视频中带标注的第一帧作为训练数据,并使用增广策略扩充数据,之后finetune(离线学习模型基础上),从而使得网络偏向于预测设定目标。

对于数据增广,这里在训练的过程中也采用了数据增广的方法,除了上文提到的仿射与薄板样条变换之外还是用图像旋转镜像等操作,从而在单张的标注上产生上百张的数据进行finetune,从而使得网络偏向于捕获所指定的目标。

2.3 边界框标注与光流输入

bounding box标注输入
对于方框类型的输入文章是单独使用一个卷积网络(使用bounding box进行训练)来得到预估的mask,得到之后就是用标准的MaskTrack模型进行后序帧的处理。

光流信息引入
文章引入了EpicFlow作为除了RGB信息之外额外的信息输入来优化分割的结果,从而得到的方法是MaskTrack+Flow(其结果是将输入为RGB与光流的模型去均值输出得到最后结果)。下图展示了光流的大小图,可以为分割提供诸如轮廓等有用信息
在这里插入图片描述

3. 实验结果

3个数据集上的性能比较:
在这里插入图片描述
消融实验:
在这里插入图片描述