文章目录
一种真正意义上的无监督视频异常检测方法
1 摘要
视频异常检测在弱监督和one-class-classifier(OCC)设置中得到了很好的研究。然而,无监督视频异常检测方法相当稀疏,为了消除获取费力注释的成本,并允许在没有人工干预的情况下部署这样的系统。为此,论文提出了一种新的无监督 生成式合作学习(GCL) 方法用于视频异常检测,该方法利用异常的低频率来构建生成器和鉴别器之间的交叉监督。从本质上说,这两个网络以合作的方式得到训练,从而允许无监督学习。
作者试图以结构化的方式利用两个领域知识:
- 视频的信息更加丰富,与静态图像相比
- 如下图所示,(d)无监督训练方式下没有任何数据标注,且存在异常样本,考虑异常样本发生频率为低频,事实上也确实如此。
因此作者提出了一种生成式合作学习GCL方法,输入是无标签视频,输出是帧级别异常评分预测。
2 论文算法概述(GCL)
两个关键部位:生成器+鉴别器。听起来很像GAN(对抗生成网络),也确实是一个GAN风格的训练方式,论文提出的GCL的生成器和鉴别器(为简便,分别记作G:generator/D:discriminator)是以相互协作的方式进行交叉监督训练。
在GCL中,每个网络的输出经过一个阈值处理来产生伪标签,G产生的伪标签用来计算D的损失,D产生的伪标签用来计算G的损失。
下图是论文GCL方法的整体架构:包括一个特征提取器、一个生成器网络、一个鉴别器网络和两个伪标签生成器。
系统交替训练的大致流程:
- 生成器G是一个AE(能捕捉数据整体的主导情况)。 生成器可以重构输入的批特征,然后利用重建误差,当该误差高于某个我们设置的阈值,则标记为异常,否则正常,相当于创建了伪标签,然后该伪标签可以用于训练鉴别器。
另外,生成器还可以对高置信度异常进行扭曲,进行负学习(KL),如下图示,也就是把误差拉大,同时对正常样本仍然采用最小化误差重构。
- 鉴别器是全连接层(FC),不容易被噪声干扰,因此鲁棒性更好。鉴别器给出一个实例异常的概率估计值,利用该概率值可以打伪标签;比如在批特征中有两个特征概率值较高(高于我们设置的某个阈值:有一些阈值工具),则这两个特征标记为异常,相当于创建了伪标签,然后使用这些伪标签改进生成器。
如此,G和D互相协作,共同改进!
一般,文献使用的都是OCC方法,即只使用正常样本进行自编码器的训练,认为对异常重构误差大而正常样本重构误差小,但作者考虑到了是否OCC方法本身对异常测试输入的很好的重建是很有挑战性的,因为它很可能会得到一个无效的分类器边界,它在封闭正常样本的同时是否也能很好的排除异常,是一个问题。而作者的方法貌似更加贴合事实情况。在实验结果中也证明了,即使论文使用GCL_OCC方法,这种协作训练不断改进的方式是更有效的。
3 实现细节
3.1 训练数据组成
在所提出的GCL方法中,论文随机化了输入特征的顺序,从而消除了批内和批间的相关性。
其实这里我的理解是论文采用默认模式的ReaNext3d作为特征提取器,对每个视频(i : 1~n)的每个视频段(j : 1 -> m)进行特征提取,得到一个对应特征向量f(i,j) ,对所有视频片段的这些特征向量进行随机采样,按照batches进行随机划分,再作为后续网络的输入。从而消除了批内和批间的相关性。至于作者为什么要这样做,我觉得可能是因为这样对于模型的泛化性方面更加友好。
3.2 Generator Network
生成器就是通过最小化输入输出之间的特征误差来进行训练的。
用于指导鉴别器训练的伪标签是通过重构误差大小决定的,具体公式如下:
论文中是这样计算合适的阈值的:先计算每个batch中所有的重构误差,按照最大误差的某个固定百分比去经验设置一个阈值。
3.3 Discriminator Network
鉴别器D的二进制分类网络使用来自G的伪标签进行训练,通过下式最小化批处理batch上的二进制交叉熵损失:
用于指导生成器训练的伪标签是通过判别器的输出(输入特征异常的概率估计值大小)来决定的,具体公式如下:
3.4 Negative Learning of Generator Network
第2章中提到了生成器G存在负学习方式,即对G的训练是使用D的伪标签,采用负学习(NL)。目的是为了增加正常输入和异常输入重构之间的区别,在同一批处理中可能会遇到正常和异常样本,论文通过使用伪重构目标强制异常样本重构得很差。
图在第2章图3,最终作者采用All one targets,即对于每个被D伪标记为异常的特征向量,将原始重构目标替换为一个类似的全1维度向量。实验结果显示,“1”作为伪目标产生了更大的辨别重建能力,与一般的仅仅采用重构误差的方式相比,能够更好地区分正常和异常输入。
因此作者将3.2节给出的式(1)生成器的损失函数修改为包含负学习的损失函数:
也就是说,D标记为异常的特征向量,伪标签为1,那么重构的目标特征替换为与输入维度相同的全1向量,如果伪标签为0,说明D判定为正常,那么重构的目标特征为输入特征。
3.5 Self-Supervised Pre-training
由于异常检测是一个定义不明确的问题,缺乏约束可能会影响收敛,系统可能会陷入局部极小值。为了提高收敛性,我们探索通过预训练G和D来启动训练过程。根据经验观察,使用预训练的G(基于式(1))有利于学习系统的整体稳定性,同时也提高了收敛性和系统的性能。但我们通过实验观察到,简单地利用所有训练数据预训练G可能无法提供有效的启动。利用视频中的事件是按时间顺序发生的,而且异常帧通常比正常帧更有事件,我们利用连续特征向量之间的时间差作为估计量,初始清洗训练数据集,用于G的预训练。
4 总结
论文创新点:
- 提出了一种真正意义上的无标记训练视频的无监督异常检测算法(GCL),它可以在不提供任何手动注释的情况下部署,并且更加符合实际的监控系统需求。
- 采用GCL生成式协作学习,G和D交替更新的策略,以及负学习方法,使得模型能够更好的区分正常和异常输入。