SVFormer: Semi-supervised Video Transformer for Action Recognition 阅读笔记
- 该论文被CVPR2023接收。
- 论文地址:SVFormer: Semi-supervised Video Transformer for Action Recognition
亮点:
- 提出一种新颖的数据增强策略——Tube TokenMix(TTMix)。通过利用具有在时间轴上一致性的masked tokens的mask,将视频段混合。
- 提出了一种时间扭曲增强技术——**Temporal Warping Augmentation(TWAug)**去掩盖视频中复杂的时间变化。这个技术使得选定的帧拉伸到视频段中不同的时间持续期间。
- 这篇论文的结果很好,尤其是在Kinetics-400数据集上比SOTA(CMPL)涨点31.5%。
背景及解决措施
在互联网上,视频逐渐取代了图片和文字,所以有了很多没有标签的数据。监督学习已经靠着标记数据取得了成功,但是标记数据太耗费时间和耗费金钱。为了利用上大规模的无标记数据,所以采用半监督学习做动作识别。
以前的SSL方法是采用图像增强如Mixup或者CutMix来加速收敛,但是这种方法只适用于图像数据,这种方法用于视频会使得网络忽视掉视频数据天然具有的时间信息。所以作者提出了TTMix这种适合Video Transformer的数据增强方法。
之前的时间增强方法,只考虑了时间的缩放或移动,忽视了在人体运动中的各个部分的时间变化。为了帮助模型学习强时间动态,所以作者提出了TWAug。这个方法是对空间增强的补充
TWAug和TTMix结合,实现了显著的效果提升。
详细方法
模型的训练分成两部分:
-
对于有标签数据 { ( x l , y l ) } l = 1 N l \{(x_l,y_l)\}^{N_l}_{l=1} {(xl,yl)}l=1Nl ,这个模型优化下面的监督学习loss函数 L s \mathcal{L_s} Ls
L S = 1 N L ∑ N L H ( F ( x l ) , y l ) \mathcal{L_S}=\frac{1}{N_L}\sum^{N_L}{\mathcal{H}(\mathcal{F}(x_l),y_l)} LS=NL1∑NLH(F(xl),yl)其中 x l , y l x_l,y_l xl,yl 分别指的是第 l l l 个视频段和其对应的标签。总共有 N l N_l Nl 条标记视频。 H ( ⋅ ) \mathcal{H}(·) H(⋅) 指的是标准交叉熵损失函数, F ( ⋅ ) \mathcal{F}(·) F(⋅) 指的是模型的预测结果。
-
对于无标签数据 x u x_u xu ,采用弱增强(如随机水平翻转、随机缩放、随机剪裁)和强增强(如AutoAugment、Dropout)两种措施生成两种视图 x w = A w e a k ( x u ) , x s = A s t r o n g ( x u ) x_w = \mathcal{A_{weak}}(x_u),\ x_s = \mathcal{A_{strong}}(x_u) xw=Aweak(xu), xs=Astrong(xu)。对弱增强视图进行推理得到数据的伪标签 y ^ m = a r g m a x ( F ( x w ) ) \hat{y}_m = arg\ max(\mathcal{F}(x_w)) y^m=arg max(F(xw)) 。生成的伪标签通过下面的loss函数用于监督强视图。
L u n = 1 N U ∑ N U I ( m a x ( F ( x w ) ) > δ ) H ( F ( x s ) , y ^ w ) \mathcal{L_{un}} = \frac{1}{N_U} \sum^{N_U}\mathbb{I}(max(\mathcal{F}(x_w)) > \delta)\mathcal{H}(\mathcal{F}(x_s),\hat{y}_w) Lun=NU1∑NUI(max(F(xw))>δ)H(F(xs),y^w)
其中 δ \delta δ 是置信阈值, I \mathbb{I} I 是指示函数,最大类概率大于 δ \delta δ 时取1否则取0。这个指示函数用于过滤噪声伪标签。
为了避免模型在训练的时候崩溃,作者采用指数移动平均(EMA)-Teacher模型在FixMatch中。参数更新公式:
θ
t
←
m
θ
t
+
(
1
−
m
)
θ
s
\theta_t \gets m \theta_t + (1-m)\theta_s
θt←mθt+(1−m)θs
其中
m
m
m时动量系数。
θ
t
,
θ
s
\theta_t,\theta_s
θt,θs 分别是teacher模型的参数和student模型的参数。
Tube TokenMix
Mixing in Videos
参考上面pipeline(pipeline中省略了数据增强的部分)。Mixing in Videos指的是 x a , x b x_a,x_b xa,xb 经过Tube TokenMix 生成 x m i x x_{mix} xmix 的过程。细节如下:
-
给了两段无标记的视频 x a , x b ∈ R H × W × T x_a,x_b \in \mathbb{R}^{H \times W \times T} xa,xb∈RH×W×T
-
利用token级的 M ∈ { 0 , 1 } H × W × T M \in \{0,1\}^{H \times W \times T} M∈{0,1}H×W×T,进行样本混合。其中H,W是对视频帧进行token化之后的高和宽,T是剪辑长度。这个 M M M就是Tube TokenMix生成的蒙版。
-
通过下面的式子混合 x a , x b x_a,\ x_b xa, xb。其中 ⊙ \odot ⊙ 指的是 element-wise multiplication,对应元素相乘即Hadamard Product(学到了高级的表达) 1 \mathbf{1} 1 指的是全为1的矩阵。
x m i x = A s t r o n g ( x a ) ⊙ M + A s t r o n g ( x b ) ⊙ ( 1 − M ) x_{mix} = \mathcal{A_{strong}}(x_a) \odot \mathbf{M} + \mathcal{A_{strong}}(x_b) \odot \mathbf{(1-M)} xmix=Astrong(xa)⊙M+Astrong(xb)⊙(1−M)
然后将得到的 x m i x x_{mix} xmix 喂入**student model ** F s \mathcal{F_s} Fs 得到预测标签 y ^ m i x = F ( x m i x ) \hat y_{mix} = \mathcal{F}(x_{mix}) y^mix=F(xmix)
先对
x
a
,
x
b
x_a,\ x_b
xa, xb进行弱增强,然后喂到Teacher model中通过如下过程产生伪标签
y
^
a
,
y
^
b
\hat y_a, \ \hat{y}_b
y^a, y^b:
y
^
a
=
a
r
g
m
a
x
(
F
t
(
A
w
e
a
k
(
x
a
)
)
)
y
^
b
=
a
r
g
m
a
x
(
F
t
(
A
w
e
a
k
(
x
b
)
)
)
\hat{y}_a = arg\ max(\mathcal{F_t}(\mathcal{A_{weak}}(x_a))) \\ \hat{y}_b = arg\ max(\mathcal{F_t}(\mathcal{A_{weak}}(x_b)))
y^a=arg max(Ft(Aweak(xa)))y^b=arg max(Ft(Aweak(xb)))
注意如果 $max(\mathcal{F_t}(\mathcal{A_{weak}}(x))) < \delta $ 则
y
^
\hat y
y^ 就是
F
t
(
A
w
e
a
k
(
x
)
)
\mathcal{F_t}(\mathcal{A_{weak}}(x))
Ft(Aweak(x)) (这里对应了pipeline中的虚线。)
x
m
i
x
x_{mix}
xmix的伪标签通过下面的方程生成
y
^
m
i
x
=
λ
⋅
y
^
a
+
(
1
−
λ
)
⋅
y
^
b
\hat{y}_{mix} = \lambda·\hat{y}_a + (1-\lambda)·\hat{y}_b
y^mix=λ⋅y^a+(1−λ)⋅y^b
这个方程是参考Mixup方法提出的。
首先常用于生成带有高质量伪标签的数据的数据增强方法是Mixup。通过对样本-标签对进行如下的凸组合的方式生成新的数据。
x
^
=
λ
⋅
x
1
+
(
1
−
λ
)
⋅
x
2
,
y
^
=
λ
⋅
y
1
+
(
1
−
λ
)
⋅
y
2
,
\hat{x} = \lambda·x_1 + (1-\lambda)·x_2, \\ \hat{y} = \lambda·y_1 + (1-\lambda)·y_2,
x^=λ⋅x1+(1−λ)⋅x2,y^=λ⋅y1+(1−λ)⋅y2,
其中
λ
\lambda
λ 符合
β
\beta
β分布。
这里为了可视化,所以在图像级展示了各种混合方法的效果。
- Mixup是两幅图像像素加权融合。
- CutMix是随机剪切图像块状融合。
- PixMix是像素级的融合,像素值不是选a的帧就是选b的帧。
- FrameTokenMix是在时间轴上,从视频段a中选择帧替换掉视频段b中对应时间的帧从而形成新的视频段。
- RandTokenMix是在每个a,b对应的帧上,使用PixMix,然后在生成新的视频段上的不同帧的过程中用的mask每次都不同。
- TubeTokenMix跟RandTokenMix的区别就是,不同时间上的帧融合用的mask相同。
最后student model通过下面的一致性损失函数进行优化:
L
m
i
x
=
1
N
m
∑
N
m
(
y
^
m
i
x
−
y
m
i
x
)
2
\mathcal{L}_{mix} = \frac{1}{N_m}\sum^{N_m}(\hat{y}_{mix} - y_{mix})^2
Lmix=Nm1∑Nm(y^mix−ymix)2
其中
N
m
N_m
Nm 是混合样本
x
m
i
x
x_{mix}
xmix的数目。
对于TTMix的一致性损失算法如下:
Temporal Warping Augmentation(TWAug)
这部分的作用是,能够把一帧拉伸到不同的时间长度,这样做是为了给数据引入更多的随机性。
给定一个T帧的视频如上图,随机决定是保存全部的帧,或者保存小部分帧。对于保存部分帧的情况,会随机填充邻近的可见帧。作者说TWAug可以帮助模型在训练过程中学习灵活的时间动态。
如上图所示,作者采用了常规增强(对Clip
x
a
x_a
xa 的处理)和TWAug(对Clip
x
b
x_b
xb 的处理)两种方式分别处理两个输入,然后再经过TTMix进行混合。
训练过程
训练分为三部分:
-
监督学习
L S = 1 N L ∑ N L H ( F ( x l ) , y l ) \mathcal{L_S}=\frac{1}{N_L}\sum^{N_L}{\mathcal{H}(\mathcal{F}(x_l),y_l)} LS=NL1∑NLH(F(xl),yl) -
无监督伪标签一致性损失
L u n = 1 N U ∑ N U I ( m a x ( F ( x w ) ) > δ ) H ( F ( x s ) , y ^ w ) \mathcal{L_{un}} = \frac{1}{N_U} \sum^{N_U}\mathbb{I}(max(\mathcal{F}(x_w)) > \delta)\mathcal{H}(\mathcal{F}(x_s),\hat{y}_w) Lun=NU1∑NUI(max(F(xw))>δ)H(F(xs),y^w) -
TTMix一致性损失
L m i x = 1 N m ∑ N m ( y ^ m i x − y m i x ) 2 \mathcal{L}_{mix} = \frac{1}{N_m}\sum^{N_m}(\hat{y}_{mix} - y_{mix})^2 Lmix=Nm1∑Nm(y^mix−ymix)2
最后损失函数如下:
L
a
l
l
=
L
s
+
γ
1
L
u
n
+
γ
2
L
m
i
x
\mathcal{L_{all}} = \mathcal{L_s} + \gamma_1\mathcal{L_{un}}+\gamma_2\mathcal{L_{mix}}
Lall=Ls+γ1Lun+γ2Lmix
其中
γ
1
,
γ
2
\gamma_1,\ \gamma_2
γ1, γ2 是用于平衡损失的超参数。
实验结果
- Baseline是TimeSformer
-
8或16个GPU(具体型号没找到)
-
数据集
- Kinetics-400
- UCF-101
与SOTA方法比较
SSL 框架选择
TokenMix 效果比较
时间、空间变换增强有效性效果
不同推理方案的有效性效果
超参数对结果的影响
- 我的个人博客地址:Pixel Pilot