论文发表年限:CVPR,2020
作者:Hyunjong Park、Jongyoun Noh、Bumsub Ham
论文下载地址:Learning Memory-guided Normality for Anomaly Detection
github地址:https://github.com/cvlab-yonsei/MNAD
摘要:异常检测、无监督
Motivation
现有的方法没有考虑到正常行为(normal)的多样性。同时强大的CNN网络能够重构异常行为(abnormal),导致不能检测出异常行为。
Contribution
- 引入一个存储模块(memory module)来记录正常数据的模式。
- 提出了Feature compactness loss和Feature separateness loss两个损失函数来确定内存项的多样性和判别能力。
- 模型的效果在相关数据集上达到了很好的效果。
模型介绍(MNAD)
该模型的结构如下所示:
从图中可以看出,该模型由Encoder、Decoder和一个Memory Module构成。
关于Encoder和Decoder模块,文中选择U-Net模型,并在其基础上进行修改,具体修改参考原文。Encoder模块输入为视频帧,输出为H x W x C的query map,其中包含H x W个query,每个query的大小为1 x 1 x C。
关于Memory module模块,该模块包含M个项(item),用来记录正常数据的原型模式(prototypical patterns),这M个项可以理解为概括正常行为的特征(个人理解)。该模块通过read和update来更新这些M个项。其read和update模块的结构如下图所示。
在Read阶段,将每个query和M个item计算其余弦相似度,得到一个M x K大小的二维相关图,然后在垂直方向上应用softmax函数,通过以下公式获得匹配概率 w t k , m w_{t}^{k,m} wtk,m。
通过计算匹配概率 w t k , m w_{t}^{k,m} wtk,m和M个item项来获取特征p_{t}^{k},如下。
在update阶段,主要是更新memory中的M个item。对于每个query选择匹配概率最大一个项进行更新。与read阶段相似,通过相关操作计算出 v t k , m v_{t}^{k,m} vtk,m,并通过公式5出 v t ′ k , m v_{t}^{'k,m} vt′k,m。最后由公式7计算出权重 W i j W_{ij} Wij,并更新 p m p_{m} pm。
文中说,在训练和测试阶段都可以更新memory item,但是会使用加权分数来预防异常帧去更新item。
关于training loss,由Reconstruction loss、Feature compactness loss以及Feature separateness loss构成。其公式如下所示。
其中,Reconstruction loss为计算解码器重构的视频帧与实例之间的损失。Feature compactness loss是为了鼓励查询memory中最相似的item,从而减少相同正常行为类的差异。Feature separateness loss是为了将相似的query分配到相同的item中,以减少item的数量和大小而设计的损失函数。
关于异常分数(Abnormality score),被定义为如下:
公式中的P、g、D函数公式参考原文。
效果
在Ped2、CUHK以及ShanghaiTech数据集上的效果如下:
消融实验结果如下:
该文为博主自己的思考与理解,如有错误还请指出。