摘要
- 提出了一个结合CNN和Transformer的视频全景分割框架;
- CNN用于图像全景分割,Transformer用于建模时序依赖关系;
- Cityscapes-vps数据集上VPQ提升了2.2%
引言
--------------------------------------------------1--------------------------------------------------
- VPS是一种兼顾像素级分类和实例级分类和跟踪的计算机视觉方法;
- VPS被广泛应用于机器人和无人驾驶领域;
- VPS需要帧间时序信息,相比图像全景分割更具有挑战性。
--------------------------------------------------2--------------------------------------------------
- 充分提取(语义)连续视频帧中的时序信息可以增强VPS准确率和连续性;
- 视频场景演变带来的语义冲突和新目标会破坏(语义)连续视频帧中包含的时序信息,进一步引申出两个问题:
- 要避免引入过时的时序信息;
- 要平衡准确率和效率之间的关系。
--------------------------------------------------3--------------------------------------------------
- VPS是新兴领域,相关研究不是太多;
- 经典的VPS方法有VPSNet和ViP-DeepLab,他们更注重提升VPQ,反而忽略了分割效率;
- VPSNet:利用多张视频帧生成光流图提升时序联系,本方法只需处理当前视频帧,后续用Transformer结合以往特征信息进行位置关联;
(两方法都是提取两个视频帧的特征,然后计算光流图;不同的是VPSNet每分割一帧都要提取相邻帧的特征,该方法则是将前一帧的特征存入memory,供下一帧分割时使用,用存储量换取计算量) - ViP-DeepLab分别生成当前帧的像素级分类(语义解码器)、实例中心的类别预测和位置回归(实例解码器),以及下一帧实例的位置回归(与当前帧实例解码器的结构相同),本方法具有更高的性能和更轻量化的结构。
- VPSNet:利用多张视频帧生成光流图提升时序联系,本方法只需处理当前视频帧,后续用Transformer结合以往特征信息进行位置关联;
--------------------------------------------------4--------------------------------------------------
网络结构:
- backbone提取的特征被送入Transformer解码器,该解码器连同上一帧视频特征强化特征质量
- 强化后的特征被分别送入光流解码器、全景分割头进行处理;
- 全景分割头:生成当前帧的图像全景分割结果;
- 光流解码器:结合当前帧和上一帧强化特征生成光流图,用于更新上一帧的视频全景分割结果;
- 全景分割结果与一起被送入ID关联模块,得到当前帧的视频全景分割结果。
--------------------------------------------------5--------------------------------------------------
贡献:
- 提出了一个更高分割性能的网络
- 添加了光流解码器作实例追踪和ID关联
- 构建了轻量化Transformer模块
(就这个靠谱点) - 在Cityscapes-vps数据集上取得了更好的性能
相关工作
--------------------------------------------------1--------------------------------------------------
图像全景分割:
- 在Mask R-CNN基础上改进
- 在Mask R-CNN基础上添加语义分割头,计算语义分割损失和实例级类别、位置、形状损失优化模型;
- [UPSNet] 进一步融合语义分割结果、实例类别、位置、形状得到全景分割结果,仅用全景分割损失优化模型;
- 在DeepLab基础上改进
- [Panoptic DeepLab] 利用DeepLab构建语义、实例分割头,联合得到全景分割结果,优化全景分割模型
(类似于Mask R-CNN based方法,只是生成各类结果的方式不同,这种方式属于单阶段,实例结果直接得到,无需利用候选框); - [Axial DeepLab] 利用non local attention沿空间水平和竖直方向计算注意力,替换resnet的conv作为新backbone。
- [Panoptic DeepLab] 利用DeepLab构建语义、实例分割头,联合得到全景分割结果,优化全景分割模型
--------------------------------------------------2--------------------------------------------------
视频全景分割:
- 现有方法基本都是在Mask R-CNN和Panoptic DeepLab基础上的改动;
- VPSNet:在Mask R-CNN基础上添加了光流和时空注意力;
- ViP-DeepLab:在Panoptic DeepLab中添加了深度估计模块和下一帧实例预测模块
(与当前帧实例预测结构相同,只是输入不同)。
--------------------------------------------------3--------------------------------------------------
Transformer:
- Transformer取得了不错的效果,所以提出了一个纯Transformer结构。
(这个推论略简单)
算法
整体流程如下图所示:
对于当前视频帧,使用Backbone提取特征图并送入Transformer Video Module增强表征能力,增强后的特征分别被送入Optical Flow Decoder和Panoptic Decoder生成光流图和当前帧全景分割结果,最后结合两图执行ID Association统一目标实例在不同视频帧中的ID号。
下面简要介绍各模块的结构:
- Transformer Video Module:
该模块结合当前帧和上一帧特征生成具有更强表征能力的视频特征,作者设计了两种变体(中/右),分别是在原self-attention(左)的基础上再计算一次时空和时间注意力,具体结构如下所示:
记当前帧特征为Query,上一帧特征为Memory,两种变体的计算流程可表示如下:
Global Time-Space Attention: 先对Query
∈
R
B
×
(
H
×
W
)
×
C
\in\mathbb{R}^{B×(H×W)×C}
∈RB×(H×W)×C 计算自注意力(维度不发生改变),然后利用全连接层将Memory
∈
R
B
×
(
T
×
H
×
W
)
×
C
\in\mathbb{R}^{B×(T×H×W)×C}
∈RB×(T×H×W)×C化为K, V并与Query计算注意力,计算流程与自注意力相同,两者只是输入不同。计算过程的维度变换如下:
Q
K
T
:
B
×
[
(
H
W
×
C
)
×
(
C
×
T
H
W
)
]
→
B
×
H
W
×
T
H
W
Q
K
T
V
:
B
×
[
(
H
W
×
T
H
W
)
×
(
T
H
W
×
C
)
]
→
B
×
H
W
×
C
→
B
×
H
×
W
×
C
QK^{T}:B×[(HW×C)×(C×THW)]\rightarrow B×HW×THW\\ \frac{QK^{T}}{V}:B×[(HW×THW)×(THW×C)]\rightarrow B×HW×C\rightarrow B×H×W×C
QKT:B×[(HW×C)×(C×THW)]→B×HW×THWVQKT:B×[(HW×THW)×(THW×C)]→B×HW×C→B×H×W×C
Local Time-Space Attention: 同样先对Query
∈
R
B
×
(
H
×
W
)
×
C
\in\mathbb{R}^{B×(H×W)×C}
∈RB×(H×W)×C 计算自注意力,然后利用全连接层将Memory
∈
R
(
B
×
T
)
×
(
H
×
W
)
×
C
\in\mathbb{R}^{(B×T)×(H×W)×C}
∈R(B×T)×(H×W)×C化为K, V并与Query计算注意力,这里注意Memory的尺度。计算过程的维度变换如下:
Q
K
T
:
H
W
×
[
(
B
×
C
)
×
(
C
×
B
T
)
]
→
H
W
×
B
×
B
T
Q
K
T
V
:
H
W
×
[
(
B
×
B
T
)
×
(
B
T
×
C
)
]
→
H
W
×
B
×
C
→
B
×
H
×
W
×
C
QK^{T}:HW×[(B×C)×(C×BT)]\rightarrow HW×B×BT\\ \frac{QK^{T}}{V}:HW×[(B×BT)×(BT×C)]\rightarrow HW×B×C\rightarrow B×H×W×C
QKT:HW×[(B×C)×(C×BT)]→HW×B×BTVQKT:HW×[(B×BT)×(BT×C)]→HW×B×C→B×H×W×C
注意力计算过程中,作者分别为时间和空间轴向添加了位置编码(红圈),其中蓝色箭头为空间轴位置编码,黄色箭头为时间轴位置编码。
- Optical Flow Decoder
Optical Flow Decoder生成光流图参照VPSNet的光流提取部分,生成的光流图是 R ∈ ( B × H × W × 2 ) \mathbb{R}\in({B×H×W×2}) R∈(B×H×W×2)的偏移量集合,其中第一层 ( B × H × W ) (B×H×W) (B×H×W)表示各像素在水平方向的偏移量,第二层 ( B × H × W ) (B×H×W) (B×H×W)表示竖直方向的偏移量。生成的光流图会与上一帧视频分割结果执行Warp操作,即利用该偏移量更新上一帧视频分割结果。对于任意像素 p ( x , y ) p(x,y) p(x,y),偏移后位置 ( x ‘ , y ’ ) (x‘,y’) (x‘,y’)计算如下:
x ′ = x + δ ( x ) y ′ = y + δ ( y ) x'=x+\delta{(x)}\\ y'=y+\delta{(y)} x′=x+δ(x)y′=y+δ(y) - Backbone/Panoptic Decoder:
文中Backbone/Panoptic Decoder的设置与Panoptic DeepLab相同,分别用于提取视频特征和生成全景分割结果。 - ID Association
对于当前帧任意实例,与上一帧各实例计算IoU,取IoU最大的实例ID赋予当前实例。
性能分析
- 使用ResNet50时的性能比较
(对比方法的性能来源于其发布的文章):方法 VPQ FPS VPSNet (CVPR2020) 57.0 1.3 Slot-VPS (CVPR2022) 59.7 4.6 Paper Method 57.3 5.4
该方法与Slot-VPS同为紧跟VPSNet的脚步出现的算法,且出现的更早一些(2022.01),相比经典方法VPSNet在速度上有较大提升,效率上与Slot-VPS相似,但是在视频分割质量被紧随其后的Slot-VPS赶超了。
该方法提升效率的原因主要有以下两点:
- 使用了单阶段网络框架,相比VPSNet使用的两阶段框架,速度得到显著提升;
- 将Panoptic Decoder中ASPP结构的output stride由16改为32,略微提升了一些性能和效率。