(2020 BMVC)Making a Case for 3D Convolutions for Object Segmentation in Videos
目前Z-VOS 在DAVIS 2016上指标最高的网络
(个人感受:所谓的contribution就是把2D 分割中的有效网络模块中2D 卷积改成3D 卷积,没有什么价值;但是在Z-VOS任务中Davis 2016数据上达到了目前的最高性能,在不使用后处理的情况下,比使用了CRF的MATNet高了接近两个点,比使用更复杂后处理方法的ECCV 2020论文高了一个点,并且达到了显著优于2D 卷积网络的推理速度,证明了3D卷积在处理VOS任务的有效性;同时进行了详尽的Ablations Study,探讨了Backbone、Training data、Decoder等对实验结果的影响,对继续使用3D 卷积网络解决VOS任务提供了指导意义。如果后续代码开源,应该可以在上面补充很多工作。)
对于视频对象分割通常都是使用标准2D卷积网络分别处理外观和运动信息,在对两种信息源进行可学习的融合。(只有通过基于外观和运动提示来识别显著性区域,并且在视频帧上以像素级精度捕获对象的空间范围和时间演变,才能学习主导运动的概念。)
在C3D、I3D、R(2+1)D等3D卷积网络中已经成功地应用于视频分类任务,甚至出现了匹配ImageNet的3D卷积网络预训练基准,但是尚未有效地解决视频中逐像素密集翻译的问题,并且性能显著低于2D卷积网络。
在这篇论文中,证明了3D CNN可以有效地应用于视频密集预测任务,比如:VOS。
Introduction
将3D CNN用于VOS任务中存在一些挑战:
- 相比于具有相同架构和深度的2D CNN,3D CNN 包含更多的可训练参数,并且训练速度较慢。并且相比于视频分类任务,视频分割任务依赖更大的图像分辨率。
- 对于分割任务,重要的是拥有一种网络架构,可以捕获每个图像像素的大接收场并有效利用多尺度特征信息。(capture a large receptive field with respect to each image pixel and effectively leverage multi-scale feature information.)
Rui Hou, Chen Chen, Rahul Sukthankar, and Mubarak Shah. An efficient 3d CNN
for action/object segmentation in video. In BMVC, 2019.
链接:arxiv
这篇工作是第一次尝试使用全3D CNN用于VOS任务中,但在性能上表现不佳,主要原因有:
- 为了计算负载便于管理,使用了浅层 3D ResNet34作为Encoder
- 遵循了常规的设计选择,在backbone中使用了 small stride来保留feature localization,并且使用空洞卷积(atrous convolutions)来维持大的接收场(large receptive field)
论文中认为更好地在该任务上使用3D CNN需要使用标准步幅的轻量编码器网络。(argue that a better approach for applying 3D CNNs to such tasks involves using a lightweight encoder network with nominal stride. )
论文中提出了一种简单而有效的encoder-decoder网络结构, 完全使用3D Conv组成,使用交叉熵损失end-to-end 训练。其利用一个有效地3D Encoder,并且提出了一个3D Decoder结构(在大型视频动作分类数据集上经过预训练、计算效率高的 channel-separated network),包含了novel 3D Global Convolution layers and 3D Refinement modules(enable us to capture a large receptive field and learn high-quality segmentation masks from multi-scale encoder features).
Contribution
(i) demonstrate that 3D CNNs can significantly outperform existing (2D CNN based) methods for tasks involving pixel-precise video segmentation;
(ii) propose novel 3D variants of Global Convolutions and Refinement modules which significantly improve the decoder’s performance;
(iii) establish a new state-of-the-art on three datasets.
Method
一个简单的3D Encoder-Decoder结构
Encoder
Encoder是具有通道分离卷积( channel-separated convolution)的3D ResNet。使用模型的简化交互版本(ir-CSN),将ResNet bottleneck block中的3 × 3 × 3卷积替换为3 × 3 × 3深度可分离卷积,而block中的1 ×1 × 1用于捕获通道交互。
在2D 卷积方法中,普遍使用以ResNet-101为backbone的DeepLab-V3,相比于使用的ir-CSN,ir-CSN具有更小的参数量、更深的深度、更短的计算时间,并且释放了计算预算(computational budget),可以用于增强解码器的效能。
Decoder
3D Global Convolution
因为使用了基于视频分类任务的编码器,其具有32x stride。
为了capture wide spatial context,提出了用于image semantic segmentation的Global Convolution Network的3D 变体(GC3D):使用内核大小为1 × k和k × 1的一系列行和列卷积代替大的k × k卷积,在使用更小参数的条件下产生相同的effective receptive field;其沿时间维度的核大小为1,因为输入video clip的时间维度比空间维度小很多。
3D Refinement Module
为了combine和upsample 多尺度的feature maps,提出了在(Learning to Refine Object Segments)的RefineMent模块的3D 变体。
Video Clip Sampling
为了获得最佳的网络性能,训练和推理之间输入片段的时间长度应保持一致。
为了将网络应用于任意长度的视频,我们将输入视频分为长度为Tc帧的片段,连续片段之间存在To帧的重叠。 对于重叠的帧,将多次Mask平均以产生最终的分割结果。
在一定程度上,方法是近乎在线的,因为给定一个新的帧,在最多Tc -To -1个时间步长之后(视频流中最开始的Tc帧除外),才能得到分割结果。
注意,如果To←Tc -1,则可以实现在线变量。
Training
Backbone:an ir-CSN variant of a 3D ResNet-152
Encoder Pretrain:IG-65M and Kinetics
Video clip length:Tc = 8(training and inference)
Sample training data:从长度为L的视频序列中随机选择一帧t,之后在(t+1,min(t+S,L))中随机采样剩余的Tc-1帧。S=32,为超参数,将视频序列区间限制在S帧以内,避免了较长时间序列产生的漂移。(如果t+Tc>L,当前帧后没有足够的Tc帧进行采样,则用最后一帧填充L,直到t+Tc = L。论文中公式错误)
Training Detail:end-to-end using the Adam [20] optimizer with an initial learning rate of 10−5 which is decayed exponentially after every epoch.
Training Datasets:1、首先使用COCO Instance Segmentation dataset 合成 video clip进行训练 2、使用Youtube-VOS和Davis 16进行训练。
(Pre-training on Images:we synthesize video clips from static images by augmenting them using a combination of random affine and piecewise-affine transformations. These transformations are applied sequentially to mimic video motion. To obtain the ground truth masks, we combine all object instances into a single foreground mask before applying the same set of transformations.)
Experiments
Ablation Study
backbone and Training data
1、
首先讨论一下数据集对结果的影响以及个人理解,其结果大致上是与2D方法一致的:
论文中提到:In the interest of comparing against existing 2D CNN approaches which typically use ImageNet pre-training, we conducted several ablations using Sports1M + Kinetics pre-trained weights. The number of data samples in Sports1M + Kinetics (1.8M video clips) is comparable to ImageNet (1.2M images).
(在Sports1M + Kinetics进行预训练,论文中认为尽管在更大的视频分类数据集上进行了预训练,但是ImageNet中含有1000个高度多样化的对象类,但是视频分类数据集仅限于人类动作类别,所以直接比较是困难的。)
- 仅在静态数据集COCO上训练得到结果仅为61.8%,原因可能是因为网络输入video clip,模拟合成的视频帧显然不能帮助网络学习真实视频的时空特征。(在以单帧作为输入的VOS网络中,仅使用显著性显著性数据集得到的结果会更高。)
- 仅在Davis 2016上进行训练的结果,且不施加后处理,就可以达到**82.2%**的指标,这在2D 卷积网络实现的方法中,已经足够具有竞争力,而2D 卷积网络方法通常依赖于更多的数据集以及有效的后处理方法。
- 在COCO和Davis 2016上进行训练,可以将性能由82.2提升至82.8,Davis2016仅含有30个视频序列,使用大规模的静态数据集COCO合成视频进行训练,可能会提高网络分割的能力(而不是捕获时空特征的能力,或者说捕捉在DAVIS2016视频域中捕获时空特征的能力。)
- 在COCO、Davis 2016和YTB-VOS上进行训练,结果从82.8提升至83.6,YTB-VOS提供了更多的真实视频。但是仅仅使用YTB-VOS进行训练的结果为69.5%,仅仅使用COCO和YTB-VOS训练的结果为72.6,仅仅使用Davis2016和YTB-VOS进行训练的结果为79.4。(网络中展示的结果与博主现在自己做的方法结果展现出了一样的结果,仅在YTB-VOS或者COCO+YTB-VOS上训练结果较差是可以理解和接受的,但是在Davis 16上训练反而实现了相比于Davis+YTB-VOS上训练更高的性能,并且在加入COCO之后使用是三个数据集训练,反而实现了最高性能)
- 使用更大的数据集来进行预训练**(IG-65M + Kinetics)**,实现最高性能:84.1%
Decoder
为了证明提出模块的有效性,分别对两个模块执行了消融实验。
a、3D Global Convolution(GC3D)
在网络中,GC3D用于Encoder的最后输出(最小的输出Feature map),以捕获较大的接收场。
C3D: 3D convolution 3 * 3 * 3
NL3D: Non-Local 3D
ASPP: 3D ASPP
GC3D: 3D Global Convolution
2D Global Conlution: arxiv.
根据实验结果可以观察到在3D卷积网络中,Global Convolution作用显著,但是在现有的VOS任务的2D方法中没人使用Global Convolution,可能在多模态融合或者提升性能中有无可改进和借鉴的思路。
b、 3D Refinement module(RF3D)
(这个类似的skip和combine结构,在2D 卷积网络分割任务中确实已经被广泛使用,但是第一篇用3D convolution处理VOS的论文(上一篇),确实没使用combine和upsample的结构)
c、Input Clip Length
Benchmark Results
a、Z-VOS: DAVIS 2016
AD-NET: 使用ImageNet预训练,并在DAVIS上fine-tune;但是其使用的后处理网络在COCO上进行训练。
STEm-Seg: backbone使用Mask-RCNN的预训练参数,再使用COCO、Youtube-VIS、DAVIS进行fine-tune,并在推理过程中使用了multi-scale inference。
Ours:To = 3
Ours-dense: To ← Tc − 1
b、Video Object Saliency