代码地址:OSVOS-PyTorch
1. 概述
导读:这篇文章是视频分割领域的一篇比较经典的文章,该文章的方法是一种半监督离线化训练的方法,从前景分割分支与轮廓检测分支的结果上获取分割的结果。这篇文章的方法是逐帧进行分割的,因而帧与帧之前相互关系这里并没有运用。总的来说其实现的效果在那个时候还是不错的。下面是其对应的分割效果展示:
文章算法流程图:
这篇文章的主要贡献可以归纳为:
- 1)在只给定一个初始图像目标标注的情况下,使得CNN网络适应这个特定的目标。文章的方法首先在类似于ImageNet这样的分类数据集上进行训练得到Base Network;之后在传统分割数据进行训练得到Parent Network;之后在测试的时候就使用第一帧的数据进行finetune得到test network。具体流程见图2所示。这样就有效运用了类别的语义信息、物体或目标的轮廓信息以及特定目标的专有特性信息。
- 2)文章的另外一个鲜明特点是对目标区域的分割是逐帧分割的,这里是有相邻帧时间差异并不大的前提假设的。这个方法中并没有很好运用到帧间的关系。但是却可以在目标被遮挡之后还能继续分割目标,也算是一个优势;
- 3)文章的网络可以在性能与实时性方面进行权衡,文章指出有两种可以采取的策略:文章的方法可以在181ms每帧的情况下达到71.5%的性能,而咋7.83s的时候就可以达到79.7%;可以使用多帧的标注数据进行优化,单帧数据标注输入的时候为79.8%,两帧的时候为84.6%,四帧的时候为86.9%。
2. 方法设计
2.1 网络结构
这篇文章的方法在拿到ImageNet预训练模型之后运算过程可以分为两部分:
- 1)使用DAVIS数据集进行分割网络训练(离线训练),从而使得网络知道“这是目标”,既是区分前景背景;
- 2)在得到离线训练的模型之后在给定帧与对应的标注基础上进行finetune,从而使得网络知道这是“需要分割的目标”;
总的来讲文章使用到的网络结构有两个(分支),一个负责前景的分割,另外一个负责轮廓的查找。具体见图4所示:
2.2 端到端的前景分割分支
这里使用的是VGG作为分割网络的backbone,之后再将不同stage上的特征图经过采样到同样尺度融合,从而再在融合的结果上得到分割的结果,其结构见图4中的1部分。
这里使用到的损失函数是2值交叉熵损失函数,但是为了照顾样本不平衡的情况,这里在原始交叉熵的基础按照正负比例进行了加权处理:
L W = − β ∑ j ∈ Y + l o g P ( y