文章目录
0 引入
0.1 题目
0.2 背景
使用多实例学习 (Multi-instance learning, MIL) 的弱监督视频异常检测 (Viswo anomaly detection, VAD) 通常基于异常片段的异常分数高于正常片段的异常分数这一事实。在模型的训练伊始,由于模型的精度不足很容易选择出错误的异常片段。
0.3 方法
1)为了减少选择错误的概率,提出了一种多序列学习 (Multi-sequence learning, MSL) 方法和一种基于的MSL排序损失,它使用由多个片段组成的序列作为优化单元;
2)设计了一个基于变换的MSL网络来同时学习视频级别异常概率和片段级别异常得分;
3)在推理阶段,使用视频异常概率来抑制片段级别异常得分的波动;
4)由于VAD需要预测片段级别异常分数,通过逐渐减少所选序列的长度,提出了一种自训练策略来逐步细化异常分数。
0.4 Bib
@inproceedings{Li:2022:self,
author = {Shuo Li and Fang Liu and Li Cheng Jiao},
title = {Self-training multi-sequence learning with Transformer for weakly supervised video anomaly detection},
journal = {{AAAI} Conference on Artificial Intelligence},
year = {2022}
}
1 算法
1.1 符号与问题声明
在弱监督VAD领域,视频的标注信息仅于视频级别给出。即当视频包含异常信息时标记为1 (正),反之为0 (负)。给定一个包含
T
T
T个片段的视频
V
=
{
v
i
}
i
=
1
T
V=\{v_i\}_{i=1}^T
V={vi}i=1T,其视频级别标签为
Y
∈
{
0
,
1
}
Y\in\{0,1\}
Y∈{0,1}。基于MIL的方法将
V
V
V看作是一个包,
v
i
v_i
vi则看作是一个实例。因此,一个正视频看作是一个正包
B
a
=
(
a
1
,
a
2
,
…
,
a
T
)
\mathcal{B}_a=(a_1,a_2,\dots,a_T)
Ba=(a1,a2,…,aT),一个负视频看作是一个负包
B
n
=
(
n
1
,
n
2
,
…
,
n
T
)
\mathcal{B}_n=(n_1,n_2,\dots,n_T)
Bn=(n1,n2,…,nT)。
VAD的目标是习得一个将片段映射到
[
0
,
1
]
[0, 1]
[0,1]区间的函数
f
θ
f_\theta
fθ。基于MIL的VAD假设异常片段的异常得分高于正常片段的异常得分。Sultani等人将VAD看作是一个异常得分问题,并提出了一个排序目标函数和MIL排序损失:
max
i
∈
B
a
f
θ
(
a
i
)
>
max
i
∈
B
n
f
θ
(
n
i
)
.
(1)
\tag{1} \max_{i\in\mathcal{B}_a}f_\theta(a_i)>\max_{i\in\mathcal{B}_n}f_\theta(n_i).
i∈Bamaxfθ(ai)>i∈Bnmaxfθ(ni).(1)
L
(
B
a
,
B
n
)
=
max
(
0
,
max
i
∈
B
a
f
θ
(
a
i
)
−
max
i
∈
B
n
f
θ
(
n
i
)
)
.
(2)
\tag{2} \mathcal{L}(\mathcal{B}_a,\mathcal{B}_n)=\max(0,\max_{i\in\mathcal{B}_a}f_\theta(a_i)-\max_{i\in\mathcal{B}_n}f_\theta(n_i)).
L(Ba,Bn)=max(0,i∈Bamaxfθ(ai)−i∈Bnmaxfθ(ni)).(2)为了使得正实例与负实例之间的差距尽可能大,Sultani提供了一个合页损失函数:
L
(
B
a
,
B
n
)
=
max
(
0
,
1
−
max
i
∈
B
a
f
θ
(
a
i
)
+
max
i
∈
B
n
f
θ
(
n
i
)
)
.
(3)
\tag{3} \mathcal{L}(\mathcal{B}_a,\mathcal{B}_n)=\max(0,1-\max_{i\in\mathcal{B}_a}f_\theta(a_i)+\max_{i\in\mathcal{B}_n}f_\theta(n_i)).
L(Ba,Bn)=max(0,1−i∈Bamaxfθ(ai)+i∈Bnmaxfθ(ni)).(3) 在优化的初始,
f
θ
f_\theta
fθ需要一定的异常预测能力,否则它将选择一个正常实例作为异常实例。这种错误情况下,误差将会被延申到整个训练过程。此外,异常部分通常是多个连续的片段,但基于MIL的方法不考虑这个先验。
1.2 MSL
为了缓解以上MIL方法的不足,我们提出了一个新颖的MSL方法。如图2所示,给定包含
T
T
T个片段的视频
V
=
{
v
i
}
i
=
1
T
V=\{v_i\}_{i=1}^T
V={vi}i=1T,首先通过映射函数
f
θ
f_\theta
fθ预测得到异常得分曲线。假设第5个片段有最大异常得分
f
θ
(
v
5
)
f_\theta(v_5)
fθ(v5)。在基于MIL的方法中,第5个片段将被选择用于优化网络。在所提出的MSL中,我们提供了一个序列选择方法,它将选择包含
K
K
K个序列的连续片段。具体地,我们计算
K
K
K个连续片段的所有可能序列的异常分数的平均值:
S
=
{
s
i
}
i
=
1
T
−
K
,
s
i
=
1
K
∑
k
=
0
K
1
f
θ
(
v
i
+
k
)
,
(4)
\tag{4} S=\{s_i\}_{i=1}^{T-K},\qquad s_i=\frac{1}{K}\sum_{k=0}^{K_1}f_\theta(v_{i+k}),
S={si}i=1T−K,si=K1k=0∑K1fθ(vi+k),(4)其中
s
i
s_i
si表示从第
i
i
i个片段开始的异常得分平均值。然后,具有最大异常得分的序列将被选择,即
max
s
i
∈
S
s
i
\max_{s_i\in S}s_i
maxsi∈Ssi。
图2:MIL与所提MSL方法实例选择的比较:a)包含
T
T
T个片段视频的异常得分曲线,假设第5个片段有最大异常得分
f
θ
(
v
5
)
f_\theta(v_5)
fθ(v5);b)MIL方法将选择第5个片段;以及c)MSL将选择从第
i
i
i个片段开始的连续
K
K
K个片段序列。
基于以上序列选择方法,可以得到MSL排序优化函数:
max
s
a
,
i
∈
S
a
s
a
,
i
>
max
s
n
,
i
∈
S
n
s
n
,
i
,
s
a
,
i
=
1
K
∑
k
=
0
K
−
1
f
θ
(
a
i
+
k
)
,
s
n
,
i
=
1
K
∑
k
=
0
K
−
1
f
θ
(
n
i
+
k
)
,
(5)
\tag{5} \max_{s_{a,i}\in S_a}s_{a,i}>\max_{s_{n,i}\in S_n}s_{n,i},\\ s_{a,i}=\frac{1}{K}\sum_{k=0}^{K-1}f_\theta(a_{i+k}),\qquad s_{n,i}=\frac{1}{K}\sum_{k=0}^{K-1}f_\theta(n_{i+k}),
sa,i∈Samaxsa,i>sn,i∈Snmaxsn,i,sa,i=K1k=0∑K−1fθ(ai+k),sn,i=K1k=0∑K−1fθ(ni+k),(5)其中
s
a
,
i
s_{a,i}
sa,i和
s
n
,
i
s_{n,i}
sn,i分别表示异常视频和正常视频的异常得分。为了保证正负实例之间较大的间距,与公式3类似,我们的MSL合页排序损失被定义为:
L
(
B
a
,
B
n
)
=
max
(
0
,
1
−
max
s
a
,
i
∈
S
a
s
a
,
i
+
max
s
n
,
i
∈
S
n
s
n
,
i
)
)
.
(6)
\tag{6} \mathcal{L}(\mathcal{B}_a,\mathcal{B}_n)=\max(0,1-\max_{s_{a,i}\in S_a}s_{a,i}+\max_{s_{n,i}\in S_n}s_{n,i})).
L(Ba,Bn)=max(0,1−sa,i∈Samaxsa,i+sn,i∈Snmaxsn,i)).(6)MIL可以看作是MSL的一种特殊情况,当
K
=
1
K=1
K=1时两者等价;当
K
=
T
K=T
K=T时,MSL任务异常视频中的每一个片段都是异常的。
1.3 基于变换的MSL网络
1.3.1 卷积变换编码器
变换器 (Transformer) 使用序列数据作为输入从而对长期关联建模,已在多个领域成果显著。视频的片段之间的表示非常重要。然而,变换器并不擅长学习相邻片段的局部表示。受此启发,如图1(c )所示,我们将原始变换器中的线性投影替换为DW Conv1D投影。 新的Transformer被命名为卷积变换编码器 (Convolutional transformer encoder, CTE)。
图1:总体框架。a)包含MSL变换器网络 (MSLNet) 与骨架的MSL架构。通过估计提取到特征
F
∈
T
×
D
F\in T\times D
F∈T×D并输入到MSLNet获取异常得分,其中
T
T
T和
D
D
D分别表示片段的数量和单个片段的维度。MSLNet包含一个视频分类器,其获取实例异常概率
p
p
p,以及一个片段回归,其获取每个片段的异常得分
f
θ
(
v
i
)
f_\theta(v_i)
fθ(vi)。BCE表示二元交叉熵损失 (Binary cross entropy loss);b)自训练MSL管道,其中
K
K
K通过自训练机制从
T
T
T到1逐渐变化。基于序列选择方法,MSL的优化过程分为两个步骤,即选择序列的伪标签预测及使用;c)设计的卷积变换编码器 (CTE)。
1.3.2 MSL变换网络
如图1(a)所示,所设计架构包含一个骨架和MSLNet。任意的行为识别方法都可以作为骨架,如C3D、I3D,以及VideoSwin。本文的骨架使用行为识别数据集上的预训练权重,每个视频将获取一个特征
F
∈
T
×
D
F\in T\times D
F∈T×D。
MSLNet包含一个视频分类器和一个片段回归器。视频分类器包含两个CTE层和一个用于预测视频是否包含异常的线性头:
p
=
σ
(
W
c
⋅
E
c
[
0
]
)
,
E
c
=
C
T
E
×
2
(
c
l
a
s
s
t
o
k
e
n
∣
∣
F
)
,
(7)
\tag{7} p=\sigma(\mathcal{W}^c\cdot E^c[0]),\qquad E^c=CTE_{\times2}(class token||F),
p=σ(Wc⋅Ec[0]),Ec=CTE×2(classtoken∣∣F),(7)其中
W
c
\mathcal{W}^c
Wc是线性头的参数、
p
p
p是视频异常预测概率,以及class token是用于预测汇聚于CTE上特征的概率。由于VAD是一个二分类问题,因此sigmoid函数
σ
\sigma
σ被选用。
片段回归器用于预测每一个片段的异常得分:
f
θ
(
v
i
)
=
σ
(
W
r
⋅
E
r
[
i
]
)
,
E
r
=
C
T
E
×
2
(
E
c
)
,
(8)
\tag{8} f_\theta(v_i)=\sigma(\mathcal{W}^r\cdot E^r[i]),\qquad E^r=CTE_{\times2}(E^c),
fθ(vi)=σ(Wr⋅Er[i]),Er=CTE×2(Ec),(8)其中
W
r
\mathcal{W}^r
Wr是线性头的参数、
E
r
[
i
]
E^r[i]
Er[i]是第
i
i
i个片段的特征。由于片段异常得分预测属于回归问题,因此同样选用
σ
\sigma
σ。
视频分类和片段回归可以看作是一个多任务问题,因此总的优化目标为:
L
=
L
(
B
a
,
B
n
)
+
B
C
E
(
p
,
Y
)
.
(9)
\tag{9} \mathcal{L}=\mathcal{L}(\mathcal{B}_a,\mathcal{B}_n)+BCE(p,Y).
L=L(Ba,Bn)+BCE(p,Y).(9) 为了降低片段回归器的异常得分预测波动,我们提出了一个干预阶段的异常得分纠正机制:
f
^
θ
(
v
i
)
=
f
θ
(
v
i
)
×
p
.
(10)
\tag{10} \hat{f}_\theta(v_i)=f_\theta(v_i)\times p.
f^θ(vi)=fθ(vi)×p.(10)
1.4 自训练MSL
如图1(b)所示,自训练机制用于训练过程的精细化。MSLNet的训练过程包含两个阶段,这之前包含初始化过程:首先获取训练视频的伪标签
Y
^
\hat{\mathcal{Y}}
Y^,片段级别的伪标签则通过视频的真实标签
Y
\mathcal{Y}
Y获取,即片段标签与视频真实标签等同。
在训练的初试阶段,
f
θ
f_\theta
fθ的异常得分获取能力是不足的,
f
θ
f_\theta
fθ将很可能选择到错误的序列。因此,MSL的两个阶段为:
1)阶段1—临时阶段:通过将公式4中的预测异常得分
f
θ
(
v
i
)
f_\theta(v_i)
fθ(vi)使用片段的伪标签
y
^
i
\hat{y}_i
y^i替换,来选择具有最大伪标签平均值的序列。基于该序列计算
s
a
,
i
s_{a,i}
sa,i和
s
n
,
i
s_{n,i}
sn,i,并通过合页排序损失优化MSLNet:
L
(
B
a
,
B
n
)
=
max
(
0
,
1
−
s
a
,
i
+
s
n
,
i
)
.
(11)
\tag{11} \mathcal{L}(\mathcal{B}_a,\mathcal{B}_n)=\max(0,1-s_{a,i}+s_{n,i}).
L(Ba,Bn)=max(0,1−sa,i+sn,i).(11)在
E
1
E_1
E1轮训练后,MSLNet将具备初步的异常得分预测能力。
2)阶段2:这一阶段使用公式5和6来优化,在
E
2
E_2
E2轮训练,可以获取新的片段级伪标签
Y
^
\hat{\mathcal{Y}}
Y^。通过将序列长度减半并重复以上两个步骤,预测得分的预测能力将逐步精进。自训练MSL的伪代码如算法1。
2 实验
2.1 数据集和评价指标
1)ShanghaiTech是一个包含437个校园监控130个校园事件13个场景的中等规模视频数据集。然而,其所有的训练数据是正常的。在弱监督设置下,使用238个训练视频和199个测试视频的划分。
2)UCF-Crime是一个大规模数据集,包含1900个未经修剪的真实街道和室内监控视频,包含13类异常事件,总持续时间为128小时。训练集包含1610个带有视频级标签的视频,测试集包含290个带有帧级标签的视频。
3)XD-Violence是一个大规模数据集,包含4754个未修剪的视频,总时长为217小时,并从多个来源收集,例如电影、体育、监控和闭路电视。 训练集包含3954个带有视频级标签的视频,测试集包含800个带有帧级标签的视频。
前两个数据集的评价指标使用AUC和ROC,后一个数据集使用平均精度 (AP)。
2.2 实现细节
1)从Sports-1M上的预训练C3D的fc6层中提取4096D特征;
2)从预训练I3D的混合5c层中提取1024D特征;
3)在Kinetics-400以及来自Kinetics-400上预训练VideoSwin的Stage4层提取1024D特征;
4)
T
=
32
T=32
T=32、
K
=
{
32
,
16
,
8
,
4
,
1
}
K=\{32,16,8,4,1\}
K={32,16,8,4,1}、
D
=
16
D=16
D=16;
5)优化器使用SGD、学习率设置为0.001、权重衰减设置为0.0005、批次大小设置为64;
6)
E
1
=
100
E_1=100
E1=100、
E
2
=
400
E_2=400
E2=400;
7)每个mini-batch由32个随机选择的正常和异常视频组成。在异常视频中,随机选择前 10%的片段之一作为异常片段;
8)在CTE中,headers的数量设置为12,并使用内核大小为3的DW Conv1D。