精读:Semantic Video CNNs through Representation Warping(ICCV 2017)
CNN的使用导致了语义分割性能的激增。但是,CNN的大多数技术都是针对单一图像的。视频中的语义随着时间的推移而缓慢变化,并且在计算当前帧的分割时重用了前一帧的一些中间表示。忽略掉信息之间的联系能提高运行时间,但随之准确性降低。相比之下,本文中的方法使用相邻帧的深度表示来实现跨帧的预测,从而提高了预测精度。
同时应该注意到,与视频级任务不同,像素级语义视频分割需要在像素级进行过滤。因此本文提出了一种跨视频帧进行局部信息传播的方法。
本片论文提出一种新的视频分割方法,利用视频帧的时间相干性(temporal coherence) 和重用强单一图像分割cnn( reuse strong single image segmentation CNNs)
ps:这个英文我也么太看懂Hhh
这篇文章提出了一个叫做Netwarp的结构,它的主要作用是利用光流把前一帧的特征搬移到当前帧,进而起到一定程度上特征增强的作用,其中光流定义为两张图像之间对应像素移动的向量,这个结构可以插入到video 的帧与帧之间。
也就是说,视频处理中的CNN以online的方式应用(当预测当前帧的分割时,系统只能访问当前帧和之前帧),只回顾前一frame。通过NetWarp模块,前一帧的对应特征wrap起来,搬到当前帧,并和当前帧结合。
作者将NetWarp应用在了图像分割领域性能最好的CNN网络中,同时观察到与应用于逐帧模式的基础网络相比性能有所提高。在CamVid 和 Cityscapes datasets都达到了SOTA.
模块的具体操作如图4所示,模型的输入是两张连续的帧,(t-1)代表前一帧,t代表当前帧,第一步是计算两帧之间的光流F(t),这里的光流计算是采用offline的形式,即每个光流是提前计算好的,具体的光流的计算方法为Dis-Flow。
接着把光流和两帧图像送入到一个叫做Transform Flow的模块中,这个模块是有小的全卷积网络模块组成,其设计目的是用图像信息来补充光流信息(如下图5,可以看出transflow除了运动信息之外还包含了物体的细节信息),之后用transform的flow再把前一帧的特征warp到当前帧(warp的具体实现是采用双线性差值操作是根据当前帧的特征点由光流信息找到对应的前一帧的特征点,再把特征点拿过来,之后介绍很多工作都会用到这种操作)。
最后结合当前帧和之前帧的信息得到最终的特征表示。
NetWarp
NetWarp module主要包括三部分,流程图如下图:
文章中多次提到representation,不太理解:直译过来就是代表?奇奇怪怪。知乎上有人说——representation 其实就是图像特征啦,和传统方法提出的特征类似。暂且这样理解。
0. Flow Computation
光流计算:为社么是0呢,因为这个算法不是作者提出来的,只是借鉴的。这里贴两个比较好的博文(好像能参考的很少!)
[DIS 光流详解]
总结:光流(绝绝子,值得一读)
1. flow transformation
使用一个小型CNN(叫做FlowCNN)来转换上一步骤中预计算得到的光流,并把这种转化记作
Λ
(
F
t
)
Λ(Ft)
Λ(Ft)
将原始的两个通道流、先前和现在的帧图像以及两帧图像的差异连接起来,产生一个11通道的张量
网络由4个交错着ReLU非线性的卷积层组成。所有卷积层由3个×3滤波器组成,前3层的输出通道数分别为16、32和2。
第三层的输出和上一步计算出来的光流flow连接(用的词语是concatenated (skip connection) with ,不太懂?),送入最后的3×3卷积层,然后就获得了transformed flow.。
ps:这种网络架构受到了ResNet中的残留块的启发[又是一个需要补的坑]。
下图展示了DIS flow如何使用FlowCNN进行转换.
2. representation warping,
3. combination of representations
我们将上一章得到的前一帧warping激活
z
^
t
−
1
k
\hat{z}^k_{t-1}
z^t−1k和当前帧的特征
z
t
k
z^k_{t}
ztk线性结合,得到
z
~
t
k
\widetilde{z}^k_{t}
z
tk
其中
w
1
w_1
w1,
w
1
w_1
w1是长度和
z
k
z^k
zk通道数相同的权重向量,通过标准的反向传播学习到。⊙代表单通道向量的标量乘法 ( each channel of the frame t and the corresponding channel of the warped representations in the previous frame t−1 are linearly combined.)
然后结果
z
~
t
k
\widetilde{z}^k_{t}
z
tk被送入剩下的CNN层里面。
其他
在帧间为CNN图像使用过滤器权重共享。
采用Adam随机梯度下降法对网络参数进行优化。
初始化组合权值为
w
1
=
1
,
w
2
=
0
w1= 1,w2 = 0
w1=1,w2=0,所以初始视频网络与单幅图像CNN相同。其他NetWarp参数使用高斯噪声随机初始化(这是什么原理?我不理解呜呜呜)
caffe实现在http://segmentation.is.tue.mpg.de.