在监控视频中的现实世界异常检测(Real-world Anomaly Detection in Surveillance Videos)

摘要

目的

为了避免给视频打标非常耗时

方法

提出了MIL(multiple instance learning),即多实例学习。

  • 利用正常和异常的视频来学习异常行为(只在视频级别标注而非片段级别标注)
  • 将视频视为包(bags),将片段视为实例(instances)
  • 自动学习一个能够预测异常视频片段高异常分数的深度排序模型
  • 加入了稀疏性和时间平滑性约束以更准确地定位异常

稀疏性约束(sparsity constrains):旨在通过限制模型参数或特征的数量(稀疏性约束使得模型能够自动进行特征选择,去除那些对异常检测贡献不大的特征,从而提高模型的效率和准确性),使得模型在表示数据时更加紧凑和高效。

通常通过正则化项来实现,最常见的是L1正则化。在目标函数(如损失函数)中添加L1正则化项,可以促使模型参数向0靠近,从而实现参数的稀疏化。当参数变得稀疏时,意味着模型在表示数据时使用了更少的特征,这有助于模型更专注于那些对异常检测至关重要的特征

时间平滑性约束(temporal smoothness constrains):假设视频中的异常事件在时间上应该是连续的,或者至少在短时间内不会发生剧烈的变化,旨在确保模型在检测异常时能够考虑到时间上的连续性。

  • 可以减少误报。当模型检测到某个时间步长上的异常时,它会考虑相邻时间步长上的情况,从而避免因为单个时间步长上的异常而做出过于激进的判断,能够减少因噪声、短暂波动或偶然因素引起的误报。
  • 更准确地定位异常事件的起始和结束时间。模型能够识别出那些持续存在或逐渐发展的异常模式,而不是仅仅依赖于单个时间点上的数据。这有助于避免将异常事件的边缘部分误判为正常,从而提高检测的精度
  • 适应动态变化。时间平滑性约束通过允许模型在一定程度上适应视频内容的动态变化,能够更准确地检测出那些与正常动态模式不符的异常事件。例如,在交通监控视频中,如果某条道路上的车辆流量突然急剧减少,这很可能是一个异常事件。时间平滑性约束会帮助模型识别出这种流量变化的异常性,而不会因为车辆的正常行驶而忽略它。

不是很懂怎么适应动态变化的?假如说路上本来是空的,没有任何的车和人,只有背景,那么有一辆正常行驶的车辆闯入镜头,之后又离开镜头,这样算是动态变化?如果算的话,为什么加上时间平滑性约束后就可以适应了呢?

数据集

下载地址:数据集

  • 128小时
  • 有1900长且未经修剪的真实世界监控视频
  • 有13种现实中的异常

一、引言

1.1 意义

各种场所下监控越来越多,但是却没有得到充分利用,因为视频中大部分都是正常视频,异常视频很少,人们不可能一直盯着视频看。因此,为了减少人工和时间的浪费,开发用于视频自动异常检测的智能计算机视觉算法是迫切需要的。

1.2 异常检测

异常检测就是从正常视频中过滤出异常片段,然后可以使用分类技术进一步将其分类为特定的异常行为。

1.3 为什么用弱监督?

用于检测特定的异常(例如暴力检测、交通事故检测)的算法是很难推广到其他异常时间的,而且现实生活中异常复杂多样,不可能列出所有异常事件。因此,希望异常检测算法不依赖于有关事件的任何先验信息。换句话说,异常检测应该在最少的监督下完成。

1.4 之前的方法缺点

基于稀疏编码(sparse-coding)的方法是构建正常事件字典,不能从正常事件字典中重建的就是异常事件。但是环境可能会随着时间的推移而发生巨大变化(例如,在一天的不同时间),这些方法会对不同的正常行为产生很高的误报率。

并且很难考虑到所有可能的正常事件,界限也很模糊,同一个行为在不同条件下可能是不同的结果。

1.5 提出的方法

提出了一种基于弱标记训练视频(只知道视频级别的标签,并不知道异常事件具体的事件片段)的异常检测算法,采用了多实例学习(MIL)

  • 将视频视为包(bags),将片段视为实例(instances)
  • 自动学习一个能够预测异常视频片段高异常分数的深度排序模型
  • 提出了一种具有稀疏性和平滑性约束的深度MIL排序损失(MIL ranking loss)
  • 测试时,长时间未修剪的视频被分成几个片段输入到深度网络中,为每个视频片段分配异常分数

1.6 主要贡献

  1. 提出MIL,仅利用视频级标签来进行异常检测
  2. 提出深度MIL ranking loss,具有具有稀疏性和平滑性约束
  3. 引入大规模数据集UCF
  4. 为未修剪的活动识别提供了一个benchmark,提供了baseline方法C3D和TCNN用于此数据集的结果

benchmark:一个基准数据集,大家提出的各种算法都可以在这个上面训练,这样就可以比较不同的算法的性能。

baseline:当提出一个新的模型或算法时,通常会选择一个已有的简单的模型作为baseline作为参照点。例如正在研究一个新的CNN模型,为了验证模型的有效性,可能会选择一个简单的CNN模型(如LeNet)作为baseline,然后在相同的数据集上分别训练baseline和我们新提出的CNN模型,并且要使用相同的评估指标来比较性能。如果新提出的CNN模型优于baseline模型,则认为我们的新模型是有效的。

那这样是不是说:benchmark就是提出一个数据集,然后各种不同种类的算法都在这上面训练(应该也是使用相同的指标吧)来比较他们的性能。而baseline的话就是模型之间都是类似的,它们在相同的数据集上训练,并使用相同的评估指标来比较。

二、相关工作

  1. 本文的方法不仅考虑正常行为,而且考虑异常行为进行异常检测,仅使用弱标记的训练数据
  2. 本文的方法是一个回归问题(因为最终预测的是异常分数,在0-1之间)

三、提出的异常检测方法

在训练期间将视频切分为固定数量的片段,这些片段在一个包中创建实例,使用正包(包中有异常片段)和负包(包中无异常片段)作为输入,使用深度MIL排序损失来训练异常检测模型

3.1 多实例学习

3.1.1 SVM的优化函数

在使用支持向量机的标准监督分类问题中,所有正样例和负样例的标签都是可用的,并且使用以下优化函数学习分类器:
在这里插入图片描述

  • ①是铰链损失函数
  • y i y_i yi表示每一个样本的标签(?标签的值是什么不知道,是0和1吗?
  • ϕ ( x ) \phi(x) ϕ(x)表示特征表示
  • b是偏置
  • k是训练集的个数
  • w是要学习的分类器(我估计就是权重参数。是的

在全监督异常检测下,是需要视频中每个片段的标注的,这成本太高了
为啥是-b而不是+b不用太过关注这个

Hinge Loss(折页损失函数、铰链损失函数) 是机器学习领域中的一种损失函数,主要用于“最大间隔(max-margin)”分类,其最著名的应用是作为支持向量机(SVM)的目标函数
如果预测值 y 与目标值 t 的乘积大于 1,则损失为 0;否则,损失为 1−t⋅y。这种设计鼓励正确分类的样本与决策边界之间保持一定的距离(即间隔),同时惩罚那些错误分类或距离决策边界较近的样本。
简单理解就是距离越小,则损失越大,当距离大于1时则损失为0

3.1.2 MIL的优化函数

这里只需要视频级的标注,即视频中异常事件的精确时间位置是未知的。
正是由于正实例的确切信息未知,因此可以根据每个包中得分最高的实例来优化目标函数
在这里插入图片描述

  • Y B j Y_{B_j} YBj表示包级标签(我感觉是正包为1,负包为0 , 好像不对,如果负包是0的话,hinge loss = 1 是固定的了,那么到底是什么啊???
  • z是包的数量
  • 其他符号的意思和式1相同

我这里理解的是这里遍历每个包来替代之前的遍历每个实例,然后每个包中的异常得分最高的实例真正参与计算。之后 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w2应该是惩罚项,防止过拟合用的

3.2 深度MIL排序模型

由于缺乏足够的异常实例,异常检测通常被视为低似然模式检测而不是分类问题。
本文的异常检测方法是一个回归问题:使用排名损失(ranking loss)让异常视频片段获取更高的得分

低似然异常检测(或称为低概率模式检测 low likelihood pattern detection) 在异常检测领域中,主要指的是一种识别数据集中与正常行为或模式显著不同的、出现概率较低的数据点的方法。这种方法的核心思想在于寻找那些不符合数据集中大多数数据点所呈现出的规律或模式的数据点,这些数据点通常被认为是异常的

3.2.1 若已知片段级注释

如果已知片段级注释的话,式3是可以的,就是鼓励让异常片段的得分高于正常片段的得分
在这里插入图片描述

  • V a V_a Va表示异常的视频片段(a可以理解为anomaly)
  • V n V_n Vn表示正常的视频片段(n可以理解为normal)
  • f ( V a ) f(V_a) f(Va)表示预测的异常得分(范围为0~1)
  • f ( V n ) f(V_n) f(Vn)表示预测的异常得分(范围为0~1)

3.2.2 没有片段级注释

本文是没有片段级注释的,所以上述方法是不可用的。
这里呢,只对正常包和异常包中的最高得分的实例进行比较(注意不是对包中的每个实例都进行比较)
在这里插入图片描述

  • 正包中异常得分最高的段最有可能是真阳性实例(异常段)。
  • 负包中异常得分最高的段与异常段最相似(可能会产生虚警的硬实例

原文中有where max is taken over all video segments in each bag. 这样的一句话不是很懂,难道说的是让所有的正常包中得分最高的那个实例所有的异常包中得分最高的那个实例相比较吗,而不是进行两两比较???我还是感觉为两两比较。即每个正常包中异常得分最高的那个实例分别于每个异常包中得分最高的那个实例来比较 是两两比较

3.2.3 将正实例和负实例的分数差距更大

在铰链损耗公式中的排序损失如下:
在这里插入图片描述
因为正包前是个负号,正包前是个正号,所以:

  • 正包中得分最高的实例的分数越高,则损失越小
  • 负包中得分最高的实例的分数越高,则损失越大

3.2.4 考虑到时间平滑性和稀疏性

上述没有考虑到异常视频的时间结构:

  • 异常视频时间很短,所以只有少数段可能包含异常,异常包中的实例(段)的分数应该是稀疏的
  • 异常视频是一个片段序列,异常分数应该在视频片段之间平滑地变化

通过结合实例分数的稀疏性和平滑性约束,损失函数如下:
在这里插入图片描述

  • ①是时间平滑项,通过最小化相邻视频段的分数差异来增强时间相邻视频段异常分数之间的时间平滑性
  • ②是稀疏项,(原文没解释,不懂为什么?因为异常片段终究是比较少的,大部分还是正常片段,所以希望异常分数低一些
  • n原文也没说是啥,我感觉是某个正包中的实例数量,但是这样的话又怎么只体现出异常片段的平滑性,那不是相当于是考虑整个视频的连续性了吗?

In this MIL ranking loss, the error is back-propagated from the maximum scored video segments in both positive and negative bags.不理解?

最终期望模型学习一个广义模型来预测正袋中的异常片段的高分,如图8所示

图8:红色窗口代表现实中真实发生异常,而蓝色的线是我们的模型预测的异常分数,可以看到,当迭代次数越来越多,模型预测的越精确
图8

3.2.5 最终的目标函数

他这一会儿叫loss function,一会儿叫objective function,应该说的是一个东西吧?是一个东西
在这里插入图片描述

  • W W W表示权重参数

我估计 ‘ λ 3 ∣ ∣ W ∣ ∣ F λ_3||W||_F λ3∣∣WF’ 应该类似于正则化吧?为了防止过拟合? 没错,是这样的

3.2.6 包的形成

将每个视频切分成长度相同且不重叠的片段作为包中的实例,为每个视频片段提取3D卷积特征(因为计算效率高、捕捉外观运行形态能力强)

3D卷积特征:3D卷积在三个维度(通常是深度、高度和宽度)上操作。在这个过程中,一个三维的卷积核(也称为滤波器或特征检测器)在输入数据上滑动,通过元素乘法并求和的方式生成输出值,最终生成一个新的三维输出数据块。
能够同时捕捉空间(高度、宽度)和时间(深度或帧间)上的特征,这使得它在处理视频数据时能够提取出连续帧之间的运动信息。例如,在视频分类、动作识别等任务中,3D卷积能够捕捉到视频中的时空特征,从而提高分类和识别的准确性。

四、数据集

4.1 以前的数据集

  1. UMN:人们四处走动,之后不同方向奔跑,只有运动动作
  2. UCSD Ped1/2:只在一个地方的监控视频,异常很简单(行人穿过人行道,人行道上的非行人实体)
  3. Avenue:只在一个地方分阶段拍摄的,且一些异常不现实(扔纸)
  4. Subway Exit and Subway Entrance:长监控视频,简单的异常(走错方向、跳过付款)
  5. BOSS:火车上的监控视频(骚扰,病人,恐慌情况),都是演的
  6. Abnormal Crowd:仅包含31个拥挤场景视频的人群异常

以前的数据集数量、长度很小,种类少,还有些异常不现实

4.2 我们的数据集

由长未经修剪的监控视频组成,涵盖了13个现实世界的异常情况,包括虐待,逮捕,纵火,袭击,事故,入室盗窃,爆炸,战斗,抢劫,射击,偷窃,入店行窃和故意破坏。

表1:我们的数据集和以前的数据集的对比
在这里插入图片描述

4.2.1 视频收集

在YouTube and LiveLeak上搜集并筛选出950个未编辑的、异常明显的真实监控视频,同时页收集了950个普通视频,共1900个视频
如图2所示,展示了每个异常的四帧示例视频

图2:每种异常的四帧示例视频
在这里插入图片描述

4.2.3 标注

  • 训练视频:只需要标注视频级别的标签
  • 测试视频:为了评估性能,除了标注视频级别的标签,还需要标注异常事件的起始帧和结束帧(多个注释者注释同一个视频,最后取平均)

4.2.3 训练集和测试集划分

  • 训练集由800个正常视频和810个异常视频组成
  • 测试集包括剩余的150个正常视频和140个异常视频

训练集和测试集都包含视频中不同时间位置的所有13个异常。一些视频有多重异常。

表2:异常视频的数量,在括号中的是训练集中的数量
在这里插入图片描述

训练视频在长度(分钟)方面的分布如图3所示。

图3:不同长度的训练视频分别由多少个
在这里插入图片描述

每个测试视频的帧数和异常百分比分别如图4和图5所示。

图4:每个测试视频的帧数
在这里插入图片描述

图5:每个测试视频中异常片段所占整个视频的百分比
在这里插入图片描述

五、实验

5.1 实现细节

5.1.1 视频预处理

  1. 将每个视频帧的大小重新调整为240 × 320像素
  2. 将帧率固定为30 fps
  3. 将每个视频分为32个不重叠的片段,每个片段视为一个包(bag)的实例(我感觉这步应该在这里

这个分段数量32是经验设置的,也尝试过多尺度的重叠时间片段,但对检测准确率没有显著影响。

5.1.2 特征提取

  1. 从C3D网络的全连接(FC)层FC6中提取视觉特征(对每个16帧视频片段计算C3D特征)
  2. 对特征进行 l 2 l_2 l2归一化
  3. 最终获取到的视频片段的特征 = 取该片段内所有16帧特征的平均值

l 2 l_2 l2归一化:在数据预处理阶段,L2归一化可以用于消除特征之间的尺度差异,使得每个特征对模型训练的影响更加均衡。就是将一组数通过某种转换关系都变成0~1范围之间。 举例来说,有特征 x 1 x_1 x1范围在1~10000之间,而特征 x 2 x_2 x2的范围在 -1~1之间,这样的话他们对最终的loss计算的影响就不一样了,特征 x 2 x_2 x2的变化就显得微不足道

5.1.3 特征输入与神经网络配置

将这些特征(4096D)输入到3层FC神经网络中

  1. 第一个FC层有512个单元,接下来是32个单元和1个单元FC层
  2. FC层之间使用60% dropout正则化
  3. 第一层使用ReLU(为啥啊?
  4. 最后一层使用Sigmoid(那中间层呢?是没有激活函数吗?这样的话是不是就是线性函数了?不用太在意这些,一般原来作者用什么,我们后面改进的时候也会用这个,我们优化的时候不关注这些激活函数,包括下面的Adagrad优化器也是同理
  5. 采用Adagrad优化器,初始学习率为0.001
  6. MIL排序损失中的稀疏性和平滑性约束参数设置为 λ 1 = λ 2 = 8 × 1 0 − 5 , λ 3 = 0.01 λ1=λ2 = 8×10^{-5},λ3 = 0.01 λ1=λ2=8×105λ3=0.01

dropout正则化:在训练过程中随机地将一部分神经元的输出设置为零,来模拟训练多个不同的神经网络的效果。在测试过程中就不需要了,因为dropout的目的是在训练过程中减少过拟合,而在测试过程中我们是希望模型能够充分利用所有的神经元来做预测。

Adagrad优化器:是一种自适应学习率的梯度下降算法。对于那些梯度值较大的参数,AdaGrad会给予较小的学习率,避免参数在该方向上震荡过大;而对于那些梯度值较小的参数,AdaGrad会给予较大的学习率,以加快收敛速度。

5.1.4 训练过程

  1. 随机选取30个正包和30个负包作为小批量
  2. 使用Theano在计算图上通过反向传播计算梯度
  3. 根据提出的排序损失函数(式7)计算损失,对整个小批量进行反向传播

Theano:是一个Python库,允许用户定义数学表达式。我根据就是这个损失函数不是新提出来的嘛,所以函数库中肯定没有写好的API,所以就可以使用Theano来自定义我们提出的损失函数

5.1.5 评价指标

使用基于帧的ROC和AUC来评估(没使用等错误率EER,因为不能正确预测异常,特别是当长视频中只有一小部分包含异常行为时)

ROC:Receiver Operating Characteristic Curve,通过绘制真正率(True Positive Rate, TPR)和假正率(False Positive Rate, FPR)之间的关系来展示模型性能
TPR:正确预测为正样本的实例占所有实际正样本的比例。TP / (TP + FN),其中TP是真正例的数量,FN是假负例的数量。
FPR:错误预测为正样本的实例占所有实际负样本的比例。FP / (FP + TN),其中FP是假正例的数量,TN是真负例的数量。

AUC:ROC曲线下的面积,AUC值接近1表示模型具有极高的分类准确性

EER:等错误率,指在ROC曲线上,真正率TPR和假正率FPR相等的点所对应的错误率。在ROC曲线图中,这个点通常位于对角线(即TPR = FPR)上,表示模型在误报(将负样本错误地分类为正样本)和漏报(将正样本错误地分类为负样本)之间达到了一个平衡。在数据集不平衡的时候表现不好,而视频异常检测中,异常帧只占一小部分。

图1:所提方法的流程图,刚开始是正包(包含异常片段的视频)和负包(不包含异常片段的视频),将他们切分成32个时间片段,表示包中的实例。将这些视频的C3D特征提取后(是将长视频直接提取吗?还是对每个实例分别提取?是对每个16帧视频片段计算C3D特征),使用新提出的排名损失函数来训练全连接神经网络,该函数计算的是正包和负包中异常得分最高的实例之间的排名损失,即图中的红色实例
在这里插入图片描述

5.2 与最先进的两种方法的比较

5.2.1 基于字典的方法

Lu et al.
思想:通过字典学习正常事件,利用重构误差检测异常
细节:

  1. 从每个正常训练视频中提取7000个立方体
  2. 在每个立方体内计算基于梯度的特征(?)
  3. PCA降维
  4. 利用稀疏表示学习字典
  5. 利用重构误差检测异常

稀疏表示:数据可以被一个过完备字典中的少量原子的线性组合近似表示,这些原子的系数大部分为零或接近于零,从而实现了数据的稀疏化。我感觉就是原来学到的特征有些是没必要的,就把这些给稀疏掉。

5.2.2 基于全卷积前馈深度自编码器的方法

Hasan et al.
思想:使用全卷积前馈深度自编码器来学习局部特征和分类
细节:

  1. 每个包中有32个视频片段,使用C3D提取特征
  2. 在正常视频上使用40帧的时间窗口来训练网络
  3. 利用重构误差检测异常

5.2.3 二分类SVM

使用二分类SVM作为baseline方法。 这里为什么?他和提出的方法也不类似啊,那他为什么是baseline方法因为本文是视频异常检测方向第一个提出弱监督的,前面没什么可以比较的方法了

思想:将所有异常视频视为一个类别,正常视频视为一个类别,总共为两个类别,通过训练一个二分类SVM来区分
细节:

  1. 为每个视频计算C3D特征
  2. 使用linear kernel训练二分类SVM
  3. 测试是为每个视频片段提供异常的概率

5.2.4 定量比较

这里主要是比较了之前的两种最先进的方法+二分类SVM+提出的方法(带约束和不带约束两种)
结果表明:

  1. 传统的动作识别方法(这里指的应该是二分类SVM)不能用于视频异常检测,因为绝大部分片段都是异常的,这就导致分类器学到的基本上都是正常视频的特征,所以对异常片段不能够很好的识别,所以会对所有的测试视频产生比较低的异常分数
  2. 基于字典的方法无法区分正常还是异常,对正常片段和异常片段都产生较低的重构误差
  3. 基于全卷积前馈深度自编码器的方法很好的学习了正常模式,但是对于新的正常模式还是会判断为异常
  4. 提出的方法优于以上方法

图6:ROC曲线。蓝色为二分类SVM,青色为基于字典的方法,黑色为基于全卷积前馈深度自编码器的方法,红色为本文所提的有稀疏性和平滑性约束的方法。他是不是少画了一个品红色曲线来表示本文所提的不带有稀疏性和平滑性约束的方法
在这里插入图片描述

表3:各方法在本文提出的数据集上训练后得到的AUC值(是ROC曲线下的面积)Proposed w/o constraints应该是不带约束的,Proposed w constraints是带约束的
在这里插入图片描述

5.2.5 测试

如图7所示:

  • (a)~(d)为成功例子,模型准确的检测出这些异常
  • (e)~(f)为成功例子,模型准确的检测出这是正常视频,给出的异常分数一直接近于0
  • (g)为失败例子,没有检测到异常(是因为场景黑暗),后面出现误报(是因为相机前有飞虫遮挡)
  • (h)为失败例子,对正常视频产生误报(表明提出的方法无法识别正常的群体活动

图7:测试视频的定性结果。红色窗口表示真实发生异常的片段,蓝色线表示模型在每一帧时预测的异常分数。
在这里插入图片描述

5.3 分析提出的方法

5.3.1 模型训练

使用带有视频级标签的正常视频和异常视频进行训练, 模型自动学习(根据异常分数)异常的时间位置。通过图7可以看到,迭代次数越多,模型预测的越精确。

5.3.2 虚警率

仅在普通视频上评估提出的方法和其他两种最先进的方法的虚警率为多少,结果验证了使用正常视频和异常视频训练有助于深度MIL排序模型学习更一般的正常模式。

表4:虚警率。[18]是基于全卷积前馈深度自编码器的方法,[28]是基于字典的方法
在这里插入图片描述

5.4 异常活动识别实验

提出的数据集可以作为异常活动识别的benchmark,因为在数据收集过程中为异常视频标注了事件标签,虽然这些标签并未用于之前讨论的异常检测方法中。
在活动识别方面,从每个事件类别中选取50个视频,按75/25的比例分为训练集和测试集。基于四折交叉验证,在数据集上提供了两种baseline结果用于活动识别。

5.4.1 第一种baseline

通过对每个16帧片段的C3D特征进行平均并进行 l 2 l_2 l2归一化后得到一个4096维的特征向量,将此向量输入到最近邻分类器中

最近邻分类器(Nearest Neighbor Classifier):通过比较测试样本与所有训练样本之间的距离,找出距离测试样本最进的那个训练样本,然后让他们同类别

5.4.2 第二种baseline

TCNN(Tube Convolutional Neural Network)引入了Tube of interest (ToI) pooling layer来代替C3D pipeline中的第5层和3d-max-pooling layer。ToI池化层将所有片段的特征进行聚合,并为整个视频输出一个特征向量。

我理解的就是通过两种不同的神经网络提取特征呗

5.4.3 定量结果

混淆矩阵和准确率如图9和表5所示。两种baseline方法在提出的数据集上都表现不佳(因此提出的数据集是一个独特且具有挑战性的异常活动识别数据集),因为这些视频都是未经修剪的长监控视频,有非常大的类内变化(very large intra-class variations)。是类与类之间差异很大呢,还是一类异常之内有很大的差异呢(就是虽然是同一类异常,但是表现形式不一样)

图9:混淆矩阵。左边是C3D的,右边是TCNN的。这里并没有给出这些颜色到底是什么意思,我猜测:①就主对角线而言越接近黄色,说明<真实为异常活动,预测为异常活动>的数量越多,即正确识别出异常活动的数量越多,而颜色越接近深色,则说明正确识别出异常活动的数量越少;②就其他地方而言,我猜测颜色越接近于深色则预测错误的越少,越接近于浅蓝色说明预测错误的越多
在这里插入图片描述

表5:准确率。
在这里插入图片描述

混淆矩阵视频链接
对于二分类:即识别图片是否为汉堡,我们的混淆矩阵如右下角所示,绿色的区域呢为判断正确的,橙色区域为判断错误的
在这里插入图片描述
如果推广到三分类,混淆矩阵如下:
在这里插入图片描述
继续推广到n分类,混淆矩阵如下:
在这里插入图片描述

六、结论

  1. 使用弱标记的正常和异常视频数据来训练一个深度MIL框架,是一个视频异常检测的通用模型,并且在新提出的数据集上验证其有效性。
  2. 展示了提出的数据集在异常识别任务种的实用性(benchmark)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值