ICCV 2023 | MoCoDAD:一种基于人体骨架的运动条件扩散模型,实现高效视频异常检测

news2025/1/15 13:48:40

论文链接: https://arxiv.org/abs/2307.07205

视频异常检测(Video Anomaly Detection,VAD)扩展自经典的异常检测任务,由于异常情况样本非常少见,因此经典的异常检测通常被定义为一类分类问题(One-Class Classification,OCC)。而对于VAD而言,属于异常情况的样本更是非常罕见,因此常见的方法仅使用大量的正常样本进行训练,这些方法会将正常视频的隐藏特征限制在一个有限的空间内,然后通过距离、概率分布差异、重构和预测误差等度量方式将空间之外的样本检测为异常。

本文介绍一篇发表在ICCV 2023上的工作,提出了一种全新的视频异常检测方法,称为运动条件引导的扩散模型MoCoDAD。该模型主要针对于视频中人体的骨骼表示进行建模,并假设视频中出现的正常现象与异常现象都是多模态的,提出使用扩散模型来对人体未来姿态进行预测。通过将视频中行人的历史运动作为条件,利用扩散过程中的迭代更新机制来拟合人体运动并生成未来帧,当生成的运动骨架信息与真实未来运动骨架信息差异较大时,就可以认定为检测到异常。作者在4个标准的人体骨架视频异常检测基准:UBnormal、HR-UBnormal、HR-STC和HR-Avenue上进行了大量的实验,证明MoCoDAD已达SOTA效果。

01. 引言

虽然计算机视觉近些年发展非常迅速,但视频异常检测仍然是一项具有挑战性的任务,这其中主要有两大原因:

(1)异常的定义非常主观,并且通常会根据上下文和应用场景的改变而变化,因此很难对其进行普遍定义。

(2)异常事件本质上是罕见的,正常事件的数据量很庞大,而异常事件数据则非常稀少,有严重的数据不平衡问题

为了解决数据稀缺的问题,现有的模型通常仅从正常样本中学习(也称为一类分类),也有学者将这种方式称为半监督学习。本文基于这种背景提出了一种运动条件引导的扩散模型(Motion Conditioned Diffusion Anomaly Detection,MoCoDAD),它假设正常和异常都是多模态的。给定一个运动序列,无论是正常的还是异常的,都首先将序列进行分割,随后将未来帧退化为随机噪声。以第一个(历史帧)清晰输入帧作为条件,MoCoDAD会对其进行多模态重建。随后在通过比较多模态分布来区分正常和异常。在正常情况下,MoCoDAD生成的运动是多样且与真实情况相关的。而在异常的情况下,模型生成的运动虽然也具有一定的多样性,但缺乏针对性

上图展示了MoCoDAD对正常和异常示例生成未来帧的效果对比,其中红色(右)和绿色(左)分别代表异常和正常的示例。在图中底部还可视化了50个未来帧的特征向量,虚线轮廓表示当前输入序列所处的分布范围,其中的红点表示与当前预测帧所对应真实帧的特征向量,在正常情况下,真实帧会处在分布的中间区域,且预测结果与真实帧是相关的。在异常情况下,真实帧会处于分布的尾部,这会产生较差的预测,并且可以突出异常现象。

02. 本文方法

MoCoDAD基于去噪扩散概率模型(DDPM),并在其基础上通过对人体运动学特征进行建模,并通过人体骨架轨迹点信息作为基本单元,通过随机平移的方式来更新每一帧的身体关节坐标进行预测

2.1 模型架构

下图展示了MoCoDAD模型的整体架构,分为两个主要模块:(1)前向轨迹扩散模型和(2)运动条件引导自编码器。其中扩散模型使用橙色块表示,其任务是根据输入序列帧来估计其中退化噪声,从而重建实际的未来帧。作者仿照先前工作AnoDDPM[1],将这一部分设置为基于U-Net的架构。随后前向扩散网络会逐渐收缩,然后将生成的姿势序列拓展到与输入序列大小相同的空间尺寸。此外,考虑到输入序列的时序维度,作者使用时空可分离GCN(STS-GCN)[2]来构建U-Net扩散层

2.2 前向轨迹扩散模型

2.3 运动条件引导自编码器

03. 实验效果

本文在四个标准的视频异常检测数据集上进行了实验,分别是UBnormal、HR-UBnormal、HR ShanghaiTech Campus(HR-STC)和HRAvenue。其中UBnormal数据集为计算机合成数据集。其余三个数据集均为在真实监控场景中捕获的视频。模型的评价指标选用ROC-AUC。作者选取了包含MPED-RNN、GEPC、SSMTL++和COSKAD等在内的8个常见的视频异常检测算法进行实验对比,实验效果如下表所示。

上表中前四种方法由于使用了异常片段的标签进行训练,因此不在OCC方法的范畴内(很多文献将这类方法称为弱监督方法),直接与本文方法进行对比不公平。可以看到MoCoDAD仍然取得了最好的效果,相比于同类方法COSKAD,本文方法在两个数据集上性能分别提高了3.6%和2.9%。甚至与弱监督方法相比,MoCoDAD也有非常明显的优势,例如与TimeSFormer相比,本文方法的性能基本与其持平,但参数仅为288K,而TimeSFormer的参数高达121M

为了进一步分析扩散过程对视频异常检测性能的影响,作者对扩散模型生成代数 m 和异常分数 S 的聚合策略进行了消融分析,如上图所示,图左侧表示四种不同聚合策略得到的重构误差直方图,图右测展示了模型检测AUC分数与生成代数之间的相关性,其中每条曲线对应不同的聚合统计量。

04. 总结

本文基于扩散模型提出了一种新型的视频异常检测方法MoCoDAD,作者强调,他们首次将扩散模型技术引入到这一领域,通过对人体骨架序列运动情况进行分析,MoCoDAD可以高效的理解画面中人体的运动趋势,在正常情况下,模型就可以根据观察到的历史序列对未来序列进行预测。而在异常情况下,模型在异常运动信息的引导下,会展现出与真实未来序列的偏差,通过这一偏差,就可以精确的实现异常动作的检测。此外由于MoCoDAD无需任何像素外观信息,仅对人体骨架信息进行计算,可以实现轻量化的网络设计和更好的计算效率

参考

[1] Julian Wyatt, Adam Leach, Sebastian M. Schmon, and Chris G. Willc cks. Anoddpm: Anomaly detection with denoising diffusion probabilistic models using simplex noise. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops, pages 650–656, June 2022.

[2] Theodoros Sofianos, Alessio Sampieri, Luca Franco, and Fabio Gala so. Space-time-separable graph convolutional network for pose forecas ing. In Proceedings of the IEEE/CVF International Conference on Computer Vision, pages 11209–11218, 2021.


  关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录--CSS 滚动驱动动画 scroll()

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 CSS 滚动驱动动画 scroll() animation-timeline 通过 scroll() 指定可滚动元素与滚动轴来为容器动画提供一个匿名的 scroll progress timeline. 通过元素在顶部和底部(或左边和右边)的滚动推进 scroll…

界面控件DevExpress WPF(v23.2)下半年发展路线图

本文主要概述了DevExpress官方在下半年(v23.2)中一些与DevExpress WPF相关的开发计划。 通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress …

如何让 Llama2、通义千问开源大语言模型快速跑在函数计算上?

:::info 本文是“在Serverless平台上构建AIGC应用”系列文章的第一篇文章。 ::: 前言 随着ChatGPT 以及 Stable Diffusion,Midjourney 这些新生代 AIGC 应用的兴起,围绕AIGC应用的相关开发变得越来越广泛,有呈井喷之势,从长远看这波应用的爆…

算法基础-数学知识-高斯消元、求组合数

高斯消元、求组合数 高斯消元883. 高斯消元解线性方程组 组合数AcWing 885. 求组合数 IAcWing 886. 求组合数 IIAcWing 887. 求组合数 IIIAcWing 888. 求组合数 IV 高斯消元 找到当前列绝对值最大的数 所在的行将改行的该列的系数变成1,其他列也要跟着变将这行和最…

使用GPT-4生成训练数据微调GPT-3.5 RAG管道

OpenAI在2023年8月22日宣布,现在可以对GPT-3.5 Turbo进行微调了。也就是说,我们可以自定义自己的模型了。然后LlamaIndex就发布了0.8.7版本,集成了微调OpenAI gpt-3.5 turbo的功能 也就是说,我们现在可以使用GPT-4生成训练数据&a…

taro vue3 ts nut-ui 项目

# 使用 npm 安装 CLI $ npm install -g tarojs/cli 查看 Taro 全部版本信息​ 可以使用 npm info 查看 Taro 版本信息,在这里你可以看到当前最新版本 npm info tarojs/cli 项目初始化​ 使用命令创建模板项目: taro init 项目名 taro init myApp …

《TCP/IP网络编程》阅读笔记--基于UDP的服务器端/客户端

目录 1--TCP和UDP的主要区别 2--基于 UDP 的数据 I/O 函数 3--基于 UDP 的回声服务器端/客户端 4--UDP客户端Socket的地址分配 5--UDP存在数据边界 6--UDP已连接与未连接的设置 1--TCP和UDP的主要区别 ① TCP 提供的是可靠数据传输服务,而 UDP 提供的是不可靠…

使用Java分析器优化代码性能,解决OOM问题

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 背景 最近我一直在做性能优化,对一个单机应用做性能优化。主要是涉及到解析和导入导出相关的业务。 大致说一下这个单机应用…

算法 数据结构 递归插入排序 java插入排序 递归求解插入排序算法 如何用递归写插入排序 插入排序动图 插入排序优化 数据结构(十)

1. 插入排序(insertion-sort): 是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入 算法稳定性: 对于两个相同的数,经过…

Matlab进阶绘图第28期—带回归趋势线的密度散点图

在之前的文章中,分享了Matlab密度散点图的绘制方法: 进一步,假如我们需要计算、添加散点的拟合线,该怎么操作呢? 本期就来分享一下带回归趋势线的密度散点图的绘制方法,先来看一下成品效果: 特…

iOS开发Swift-10-位置授权, cocoapods,API,天气获取,城市获取-和风天气App首页代码

1.获取用户当前所在的位置 在infi中点击加号,选择权限:当用户使用app的时候获取位置权限. 填写使用位置权限的目的. 2.获取用户的经纬度. ViewController: import UIKit import CoreLocationclass ViewController: UIViewController, CLLocationManagerDelegate { //遵循CLL…

C#进阶 多个泛型约束

using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine;public class A02_Generic : MonoBehaviour {[ContextMenu("测试Start")]// Start is called before the first frame updatevoid Start(){Person…

Java SPI的原理和实践

Java SPI的概念和术语 SPI:全称是Service Provider Interface它是从Java 6开始引入的,是一种基于ClassLoader来发现并加载服务的机制。一个标准的SPI,由3个组件构成,分别是: Service - 服务接口:是一个公…

简单理解微服务限流、降级、熔断

微服务限流、降级、熔断分别都是什么意思,我们平时工作中为什么要关注这些东西呢? 公司不断的发展壮大,一开始处于蛮荒时代,咱们从单体应用过渡到微服务的时候,可能还是那一套单体的思想,再加上用户量可能…

VIT理论代码详解

将图像输入到transformer的思想 把每个像素点按照顺序拿出来,作为token,这样做的话输入参数规模是:假如是1通道的灰度图: 224x224x150176,bert才512,是bert的100倍。 改进方法: VIT模型架构图…

前端代理报错Error occured while trying to proxy to: localhost:端口

webpack配置进行前端代理时, 报错信息如下:(DEPTH_ZERO_SELF_SIGNED_CERT) 需设置:secure为false即可解决此报错 // webpack配置前端代理config["/test"]{target: https://xxxx.com,changeOrigin: true,secure: false // 这个配置…

设计模式(1) - UML类图

1、前言 最近在阅读 Android 源码,时常碰到代码中有一些巧妙的写法,简单的如 MediaPlayerService 中的 IFactory,我知道它是工厂模式,但是却不十分清楚它为什么这么用;复杂点的像 NuPlayer 中的 DeferredActions 机制…

云原生Kubernetes:kubectl管理命令

目录 一、理论 1.kubectl 管理命令 2.项目的生命周期 二、实验 1.kubectl 管理命令 2.项目的生命周期 三、总结 一、理论 1.kubectl 管理命令 (1)陈述式资源管理方法 kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口…

进入低功耗和唤醒

休眠模式 进入休眠模式 如果使用 WFI 指令进入睡眠模式,则嵌套向量中断控制器 (NVIC) 确认的任意外设中断都会 将器件从睡眠模式唤醒。 如果使用 WFE 指令进入睡眠模式,MCU 将在有事件发生时立即退出睡眠模式。唤醒事件可 通过以下方式产生&#xff…

转载: 又拍云【PrismCDN 】低延时的P2P HLS直播技术实践

低延时的P2P HLS直播技术实践本文是第二部分《PrismCDN 网络的架构解析,以及低延迟、低成本的奥秘》低延时的P2P HLS直播技术实践 [首页 > Open Talk NO.41 | 2018 音视频技术沙龙深圳站 > 低延时 WebP2P 直播技术实践https://opentalk-blog.b0.upaiyun.com/prod/2018-0…