[2505.02393] Uncertainty-Weighted Image-Event Multimodal Fusion for Video Anomaly Detection

1. 引述

这篇论文结合了事件数据的概念,这个概念在事件相机这个领域中使用得比较多。不过这篇论文使用的事件数据并非从事件相机中获取,而是参考别人的工作从 RGB 数据中合成的。

论文的核心创新在于提出了一种全新的特征提取的方式,这种方式结合了大量概率论的知识。

这篇博客旨在让所有对视频异常检测领域有了解,但是对部分概率论相关的知识掌握不熟的学者(起码高斯分布你得知道),能够理解这篇论文的内容。

2. 前置知识

2.1 学生 t 分布

Student’s t 分布(学生 t 分布)是一种连续概率分布,它与正态分布同为对称的钟形曲线,但多了一个自由度参数 \nu 来控制分布形状。

当自由度很大时,学生 t 分布接近于正态分布;当自由度小(例如 \nu=1)时,学生 t 分布曲线会变得更平坦且尾部更厚。

如下图所示:红色曲线表示自由度 \nu=1 的学生 t 分布,蓝色曲线表示标准正态分布。

该分部的公式如下:

p(x \mid \nu) = \frac{\Gamma\left(\frac{\nu+1}{2}\right)}{\sqrt{\nu \pi} \, \Gamma\left(\frac{\nu}{2}\right)} \left( 1 + \frac{x^2}{\nu} \right)^{-\frac{\nu+1}{2}}

2.2 高斯分布的融合(什么是逆方差、不确定性)

假设你有两个高斯分布,这两个分布观测同一个量。

举个例子,你是一个数学家,你家里有两个温度计用来测室温。你知道这两只温度计都不太准,但都服从高斯分布。他们测出来的值分别是 \mu_1\mu_2,方差分别是 \sigma_1^2\sigma_2^2

所以你每次计算真正室温时,是通过某种方式,将这两个测量值 \mu_1\mu_2 结合起来看的。

那么怎么结合呢?

用数学的表达来说,就是现有两个高斯分布:

x \sim \mathcal{N}(\mu_1,\sigma_1^2), \quad x \sim \mathcal{N}(\mu_2,\sigma_2^2)

要把他们综合成一个新的高斯分布:

x \sim \mathcal{N}(\mu_f,\sigma_f^2)

首先,这两个高斯分布要独立,那么根据概率论的定理,两个高斯分布的乘积是一个新的高斯分布:

p_f(x) \propto \exp \left( - \frac{(x - \mu_1)^2}{2 \sigma_1^2} - \frac{(x - \mu_2)^2}{2 \sigma_2^2} \right)

然后经过一系列化简,最后要化成这样的形式:

p_f(x) = \frac{1}{\sqrt{2 \pi} \sigma_f} \exp \left( - \frac{(x - \mu_f)^2}{2 \sigma_f^2} \right)

化简过程我就不呈现了,但总之结果是:

\mu_f = \frac{\mu_1 \cdot \frac{1}{\sigma_1^2} + \mu_2 \cdot \frac{1}{\sigma_2^2}}{\frac{1}{\sigma_1^2} + \frac{1}{\sigma_2^2}} \quad\quad \sigma_f^2 = \left( \frac{1}{\sigma_1^2} + \frac{1}{\sigma_2^2} \right)^{-1}

最后的化简结果有好多方差的倒数,那么就令方差倒数为 \omega,并取名为逆方差(精度)。那么最后的公式就是:

\mu_f = \frac{\omega_1 \mu_1 + \omega_2 \mu_2}{\omega_1 + \omega_2} \quad \quad \sigma_f^2 = \frac{1}{\omega_1 + \omega_2}

融合后的方差会比原来任意一个分布的方差都少,换句话说精度更高。

3. 论文方法

3.1 核心思想

RGB 模态的数据难以捕捉突发或瞬态运动线索,而时间模态可以。基于这个问题,论文的核心想法如下:

  1. 分别从 RGB 模态和事件模态提取特征
  2. 融合这两个特征
  3. 基于融合的特征,用一个分类头检测异常

3.2 简单特征提取

论文首先使用 CLIP 分别对 RGB 模态和事件模态数据提取特征,然后用一个时序 Transformer 给每个特征加上时序信息,最后提取到的特征写作 \hat{z}_m,这个符号同时代表从两个模态提取到的特征。

对应论文方法图的这个部分:

事件模态的数据是通过 RGB 合成的,合成方法是参考的前人的论文。

3.3 为特征建模分布

相比简单的把这两个模态的特征加在一起或者拼接在一起,论文采用了概率论中高斯分布融合的方法,使用这种方法就需要将两个模态的特征数据用高斯分布建模。

一部分基于概率分布的无监督方法,将所有的正常数据建模为高斯分布,然后在测试的时候,遇到分布外的情况(\mu \pm 3\sigma)就视为异常。这种做法可行,是因为用于建模的数据全是正常的,可以假设为高斯分布。

但是论文是弱监督方法,训练时有正常也有异常,而且正常占绝大多数。如果将数据建模为高斯分布,那么在遇到异常值时,由于高斯分布尾部衰减非常快,这些异常值(通常位于尾部)会对整体分布造成过大的影响,从而导致模型向异常方向偏移。

相比之下,学生 t 分布具有更厚的尾部,对异常值的容忍度更高,因此能有效缓解异常值对模型估计的干扰,使建模过程更加稳健。

因此,论文首先假设他们提取到的特征 \hat{z}_m 服从学生 t 分布,其包含两个部分:表示数据的信息 \mu_m 和噪声 \delta_m 。写成公式如下:

z_m = \mu_m + \delta_m, \quad \delta_m \sim t_{\nu} \left(0, \sigma_m \right), \quad m \in \{x, e\},

对于正常数据来说,噪声就小;对于异常数据来说,噪声就大。

接着,论文使用了两个全连接头,来分别预测 \mu_m 和 \sigma_m

\mu_m = g_m(\hat{z}_m), \quad \log \sigma_m^2 = h_m(\hat{z}_m).

这里全连接头预测 \sigma_m^2 的时候,认为预测得到的结果是 \log \sigma_m^2,这个做法大多数其他学者也是这样做的。

简单说说为什么这样做:由于方差必须大于 0,如果你让网络直接输出一个实数,再把它当成真正的方差,就可能出现方差为负数的情况。改成让网络输出 \log \sigma_m^2,然后在后面取指数,是最普遍的做法。

3.4 计算逆方差并融合特征

但是,使用学生 t 分布的话,根据概率论的概念,两个学生 t 分布的乘积不再是一个 t 分布,那么就用不了高斯分布融合分布的公式。

观察分布融合的公式:

\mu_f = \frac{\omega_1 \mu_1 + \omega_2 \mu_2}{\omega_1 + \omega_2} \quad \quad \sigma_f^2 = \frac{1}{\omega_1 + \omega_2}

我们只需要把学生 t 分布的方差 \sigma 转化为高斯分布的方差 \widetilde{\sigma} 就行了,而这个转化后的方差 \widetilde{\sigma} 被叫做等效方差

论文详细写了一遍推导过程,不想看具体推导的跳过这段就行:

首先,学生 t 分布的公式如下:



p(\delta) = \frac{\Gamma\left(\frac{\nu+1}{2}\right)}{\sqrt{\nu \pi} \, \Gamma\left(\frac{\nu}{2}\right)} \left( 1 + \frac{\delta^2}{\nu} \right)^{-\frac{\nu+1}{2}}



我们把这个公式前面的那坨系数看成一个常数 C
 

p(\delta) = C \left( 1 + \frac{\delta^2}{\nu} \right)^{-\frac{\nu+1}{2}}


 

等式两边同时去对数:

\log p(\delta) = {-\frac{\nu+1}{2}} \log \left( 1 + \frac{x^2}{\nu} \right) + \log C


 

当噪声很小,趋近于 0 的时候,由高数学的等价无穷小:


 

\log (1 + \frac{\delta^2}{\nu}) \sim \frac{\delta^2}{\nu}


 

则原式变为:


 

\log p(\delta) \approx {-\frac{\nu+1}{2}} \cdot \frac{\delta^2}{\nu} + \log C


 

按照相同的方式,对高斯分布的公式推一遍,得到:


 

\log p_\text{Gaussian}(\delta) \approx -\frac{1}{2\widetilde{\sigma}} + \log C


 

把上下两个式子等起来,忽略常数项:


 

{-\frac{\nu+1}{2}} \cdot \frac{\delta^2}{\nu} =-\frac{1}{2\widetilde{\sigma}}

最后推导结果为:

\widetilde{\sigma}=\frac{\nu}{\nu+1}\sigma

有了等效方差之后,就能计算逆方差了:

\omega_m=\frac{1}{\widetilde{\sigma}_m^2+\epsilon}

这里的 \epsilon 是一个很小的值,为了防止方差为 0 导致逆方差计算错误。

这样一来,就可以融合这两个特征了:

\mu_f = \frac{w_x \mu_x + w_e \mu_e}{w_x + w_e}

3.5 融合特征的时序信息与去噪

虽然之前用时序 Transformer 获取了一下时序信息,但是这个时序信息仅仅只是对一个短时间窗口(如前后若干帧)做自注意力,捕获 “哪个时间步的上下文对当前帧重要”。它只关注一个固定长度的时序片段内的依赖,不会把更早帧的信息带到后面,也不会在异常发生后平滑抑制瞬时噪声

而论文将当前的融合特征和历史融合特征也做了高斯分布融合的操作:

\mu_f^t = \frac{w_f^{t-1} \mu_f^{t-1} + w^t \mu^t}{w_f^{t-1} + w^t}, \quad \tilde{\sigma}_{f,t}^2 = \frac{1}{w_f^{t-1} + w^t}, \quad t \geq 1.

融合了之后还没完,论文认为融合后的特征,由于模态之间的差异,可能在融合之后出现噪声 。因此,论文又用了一个网络 F(\cdot) 去预测这个噪声 \Delta \mu_f^{t, r} = F'(\mu_f^{t, r}) ,最后减去这个噪声:

\mu_f^{t, r+1} = \mu_f^{t, r} - \lambda_r \Delta \mu_f^{t, r}.

最终得到的 \mu_f^{t, r+1} 被送进一个简单的二分类头进行异常检测。

4. 训练损失

训练有三个损失,第一个损失是常规的弱监督视频异常检测的二元交叉熵损失。

第二个损失是 KL 散度约束。当遇到异常帧的时候,为了防止模型偏移太大,同时也是让两个全连接头输出的 \mu_m 和 \log \sigma_m^2 接近标准正态分布。

\mathcal{L}_{\mathrm{KL}} = KL \left( \mathcal{N}(\mu_m, \tilde{\sigma}_m^2) \| \mathcal{N}(0, I) \right) = \frac{1}{2} \left( \tilde{\sigma}_m^2 + \mu_m^2 - 1 - \log \tilde{\sigma}_m^2 \right)

【信息论】【笔记】信息熵为什么用 log?KL 散度是什么?_计算熵为什么用log-CSDN博客

第三个损失是模态对齐损失,目的是让 RGB 和事件模态对齐。对齐从两个方向出发,一个是在向量空间的方向要对齐,另一个是两个向量的大小要对齐。

\mathcal{L}_{\mathrm{reg}} = \lambda_1 \left(1 - \cos(\mu_x, \mu_e) \right) + \lambda_2 \left\| \| \mu_x \| - \| \mu_e \| \right\|

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐