本篇论文的题目是探究背景偏差对监控视频中异常检测的影响。虽然从论文的题目来看,可能对考场监控视频没有太大的作用,但看看有没有可以借鉴的地方吧。
ABSTRACT
"监控视频中的异常检测是作为基于视频的动作识别领域的一个特例。“这句话讲明了异常检测的本质。作者说,现在大部分方法都是利用深度学习来识别异常或动作的patterns。但深度神经网路是记住了异常的本质还是仅仅记住了背景,这是一个经常被忽视的问题。基于这个出发点,本文作者进行了一系列的实验来验证背景偏差现象的存在,background-bais使得深度网络倾向于学习背景信息而不是异常行为模式来识别异常行为。作者做的工作有:1、重新标注了UCF-Crime数据集,设计了一个新的评估指标来衡量模型是否真正了解异常的本质 2、提出了一个端到端可训练的异常区域引导框架,设计了一个新的region loss来使网络能学习异常区域在哪里。3、对于异常在训练数据中很少的情况,采用meta learning module来训练防止过拟合。最后,大量实验表明通过减少background信息的影响,本文的方法更好。
1、Introduction
现有方法经常忽略视频中背景的影响,动作识别和异常检测都把整个帧作为单独的训练样本,所以每一帧中所有的像素都有同等的影响。也就是说,在训练和测试阶段,整个帧被fed into深层网络。因此,深度网络识别这些行为的关键信息是什么?
为了回答这个问题,作者设计了各种实验来弄清楚这些深度网络学会了什么来识别这些动作。除了识别的准确性外,作者还想进一步深入了解所学的CNN模型,比如进行可视化,来看模型的关注点在哪里。
通过可视化结果可以看到,在动作识别基准上训练的深度网络能精确定位运动发生的区域,但用于检测异常的判别图像区域关注的是背景,而不是异常发生区域,也就是说,这些网络学会检测异常的是背景噪声,而不是异常本身。 这种现象就是 background-bias problem。之后作者通过动作识别和异常检测的比较来找出产生这种现象的原因。但缺乏好的标注的异常检测数据集,UCF-Crime数据集异常种类和实例多,但弱标签使模型只关注视频分类的准确性而不是学习异常的本质。为了解决上述问题,作者用时间和空间标签重新注释了UCF-Crime数据集。更具体的说,作者不仅注释异常事件的起始和结束帧,并且注释了每个帧中的异常发生区域。在这个注释的帮助下,进一步研究background-bias问题,并提出一个新的评估标准来衡量模型是否真正学习了异常模式。为了消除已发下的背景偏差问题,提出了一种新的端到端学习任务框架,该框架不仅考虑了时间的异常定位,还考虑了异常发生的区域。
作者训练了一个基于二分类损失,meta learning产生的多分类损失和区域loss的深度3D-CNN用于异常检测。这种meta learning将二分类(异常/正常)分类问题转化成多实例分类问题,并充分利用稀缺的训练样本,提高了模型的通用性。新的region loss会促使模型关注异常发生的区域,这有助于网络集中于输入帧的区分区域,以便学习更强大的特征来捕捉异常模式。
本文的主要贡献有:
(1)观察并验证了背景偏差问题的存在,即深度网络通过记忆背景而不是学习异常的本质来实现比较好的性能
(2)为了消除background-bias,提出了一个新的end-to-end的框架,该框架设计了region loss,明确地引导模型将注意力放在异常区域上
(3)为异常检测引入元学习,以避免模型过拟合,提高泛化能力
(4)用28k的bounding box重新标注了最大的异常检测视频数据集
2、Related Work
Action Recognition 动作识别
作为与异常检测最相关的任务之一,动作识别提供了许多检测异常的选择。根据不同的卷积结构,用于动作识别的神经网络分为两类:基于单流的3D-CNN方法,双流2D-CNN方法。前者通常采用三维卷积滤波器对一定数量的连续帧进行运算,后者使空间网络捕捉单个RGB图像外观,时间流网络通过光流图来描述short clip间的运动。
Anomaly Detection 异常检测
(1)用重构损失训练的基于深度学习的encoder-decoder框架来对正常和异常行为分类。
(2)多实例学习,real-world
Background-bias
[32]Eliminating Background-Bias for Robust Person Re-Identification 的作者发现当前用于人体再识别的深度学习模型经常因为捕捉人物图片的背景外观之间的太多相关性而被误导。[11] Human Action Recognition Without Human的作者认为,在没有人的设定下,动作识别准确率接近有人的设定。但作者没有找到造成这种现象的原因,也没有设计解决这一问题的方法。相反,本文作者通过大量实现(客观的分类精度和可视化结果)证明了background-bias现象的存在,分析了产生这一问题的原因,并试图消除这一影响来提高异常检测性能。[11]总结了背景序列对人类动作数据库中的视频分类是有效的。
3、探究Background-bias的原因
3.1 数据集和评估指标
UCF-Crime共有13种异常类型,ROC曲线下的AUC作为评估指标来评估性能
3.2 Background-bias现象是否存在?
背景偏差现象意味着即便当前的模型可以实现出色的性能,但训练的模型会被误导,学习太多不相关的背景信息来判断异常或正常行为。在背景外观相似但没有异常发生的情况下,这些模型容易做出错误的预测。
为了理解现有的识别网络在检测异常方面学到了什么,扩展了CAM(Class Activation Mapping),该映射主要是突出单个图像中有区别的对象部分,来定位模型用来进行预测的信息区域。选择使用NLN(Non-local Network)来作为识别主干。
图2(b)和(c)分别显示了异常前景和背景的heatmaps,b和c的背景几乎一样,唯一区别就是是否发生了异常。
根据图2(b)虽然NLN模型可以预测异常的高概率值,但它会把背景噪声作为识别异常的关键因素。因为它突出了不重要的背景区域,并且未能定位到异常区域。由此可见,NLN模型依赖于背景信息来预测异常分数,而不是异常模式。
表1是,把出现异常的clip从testing set中去掉,最后可以看到即使阈值设为0.9,也有66.4的正常视频被分为异常。这表明,模型很容易偏向于捕捉太多的背景信息作为预测的基础。Trimmed是给UCF-Crime数据集标注了异常事件的起始和终止帧,但在修剪后的UCF数据集上训练后,误差率只是减少了一点点,NLN模型仍偏向于将背景预测为异常。
3.3 Background-bias的原因
从直观上看,动作识别基准和异常检测数据集之间的差异可能是造成这种现象的原因,作者主要通过比较动作识别和异常检测基准以及探索动作识别方法的变体来解决这个问题。
为了进一步验证修剪后的视频不是造成背景偏差的关键原因,作者还在未修剪的动作识别数据集ActivityNet上训练NLN,可视化结果如下:
这表明NLN模型准确地突出了动作部分,并在未修剪的数据集上也很好地学习了动作模式。
这是不是因为动作检测数据集里人比较少,动作比较明显,而异常检测数据集里人很多,或者动作都很不明显,也就判断不出是不是异常来???
作者为了验证background-bias不是由NLN引起的,用了许多最新的动作识别方法来替换NLN,比如:
(1)2D-CNN方法,像双流网络,只用RGB作为输入,TSN ,BN结构
(2)3D-CNN方法,C3D,3DResNet,ARTNet,T-C3D
表2显示了6中方法在测试集上的分类误差,可以看到由于背景于异常事件相似,仍有很大比例的背景视频被所有方法误认为是异常,因此background-bias问题存在于大多数动作识别方法中,而不仅仅是NLN方法中。
所以未修剪视频和NLN方法不是background-bias的主要原因,作者认为spatial resolution of action region动作区域的空间分辨率,这是两个基准的另一个巨大的差异,这是导致background-bias的重要因素。也就是说,在异常检测数据集中,异常区域很小很小,以至于深度模型无法定位异常的区域。相反,在动作检测数据集中,动作区域一般都很大。作者设计出anomaly region guided framework来减小异常区域的低分辨率影响时,性能得到了大幅度提高。
4、框架
”基于异常区域面积小导致背景偏差问题的假设,提出了异常区域引导结构。” 对,在考场监控数据集中也会因为区域小,异常动作更小的原因,导致无法识别出是不是与正常不一样的动作。
该anomaly-region guided architecture,该结构在异常区域的明确引导下学习深层网络的参数。
系统overview:
使用3D卷积算子从每个clips中提取特征,并输出表示该剪辑中发生异常的概率的分数,该网络以端到端的方式进行训练,有两种ground truth标签:(1)用于对正常事件和异常事件分类的时间标签(2)spatial label(异常区域)用来区分未修剪的视频中的异常和许多背景剪辑(背景剪辑就是指全是正常但很大概率被分为异常)。使用交叉熵损失函数来分类,为spatial label设计了新的损失函数。接下来具体介绍各个方面:网络输入,生成attention map的过程,region loss,和meta learning。
4.1 输入
大部分深度网路无法从背景相同的正常视频中过滤出异常,因为这些方法将背景视为检测异常的关键因素。因此,除了(1)用于分类的clip-level标签外,作者还在(2)每个帧中提供异常区域作为spatial label,来指导网络学习background和异常区域之间的区别。
因为连续帧高度冗余,所以作者每16帧手动标注一副图像中异常区域的bounding box。
attention mechanism现在很流行,认为网络可以准确的找到异常区域,因此人们认为注释是不必要的。但作者认为有两点原因导致注释是必要的:
(1)上述可视化结果表明,即使是最先进的NLN也不能只用视频级标签就准确定位异常位置
(2)作为发现异常检测的background-bias的第一项工作,作者希望这一注释将为异常检测未来发展开辟新的道路。
4.2 生成Attention Map的过程
作者关注模型的关注点在哪会产生一个预测,也就是说,作者试图找出模型认为异常的判别区域。
图4所示,最后一个卷积层的feature map和最后一个fc层 weights被用来生成attention map。
最后卷积层的feature map是 l是时间长度
最后fc的权重是 c是channel ,m是要分类的类别数
对于特定的类别,比如异常类,可以从fc层得到权重为(size is c) ,output is
表明F对类异常的重要性。因此,通过feature map的线性加权和来生成注意力图:
是第l个feature map,大小是c x h x w。
是表明的重要性。 G(*)是上采样,将feature map的宽和高调整到原始帧的分辨率(x和y),因此对给定的clip获得了l个attention map。
4.3 Region Loss
为了计算带注释区域的loss,在attention map上进行一些列操作以产生预测的异常区域。作者在attention map使用了三种大小的average pooling,24,47,96,步长为1。average pooling之后,通过最大化运算可以得到三个预测的异常区域,然后选择与gt最接近的大小作为最终预测的异常区域。
损失函数的目标是将模型的注意力放在异常发生的区域而不是像gt那样精确的回归region proposal。作者使用的是ROI(即预测区域和标注区域的比率),这明确地指导网络那里是异常,region loss可以用一下表示
利用这个损失函数,模型偏向于关注靠近异常区域地区域,这里没有用IOU(交/并),因为IOU总是很小,Lregion更类似于IOUNet和GIou,它们都可以通过反向传播从损失函数导出网络权重。
考场监控视频数据集是不是也可以采用这种有监督方法,就是bbox都标出来,但异常的标成不同的种类。
4.4 Meta Learning Module
异常检测困难是因为,正常行为和异常行为都有无数事件类别,所以学习从有限的训练样本中过滤出异常是很困难的。为了缓解异常检测训练数据异常不足的问题,采用meta learning,以避免overfitting。通过meta learning,对每一个mini-batch训练数据的复杂群体关系进行建模来提高泛化能力。
总结:
我好像现在才发现一个本质,那就是异常检测可以当成带bbox的动作检测来做,就是把异常发生的位置标出bbox,这样就跟动作检测类似了,不会因为分辨率太小的原因识别不出异常来。还有,关注异常发生的位置的话一般都用到atteneion机制。所以,未来是弱监督和有监督异常检测的未来。