Flownomaly:单步条件均值恢复实现少样本异常检测

Flownomaly在冻结DINOv2特征空间用条件流匹配单步恢复正常对应物,以残差检测少样本工业异常。
Flownomaly针对少样本工业异常检测提出新思路:不重建图像,而是在冻结的DINOv2 patch特征空间中进行条件流匹配,学习一个把高斯噪声输运到正常特征分布的速度场。由于路径被约束为直线,最优场在任意时刻即给出后验均值,推理时只需单次场评估即可把查询token恢复为其正常对应物,并以恢复前后的平方残差作为异常信号。针对无异常验证样本时恢复步长难调的问题,作者提出仅依赖正常样本的Jacobian增益-噪声准则来选择操作时间。在MVTec-AD与VisA的1-shot基准上,图像级AUROC分别达97.8%与95.3%,像素级达98.0%与98.7%,VisA图像级领先最强基线2.1个点。
少样本工业异常检测的难点在于:每个类别只有极少量的无缺陷样本,模型必须从这几张图中学会“正常”长什么样,然后对任意查询图像判断哪里异常。现有方法要么把推理绑在存储的样本上,要么强加线性结构,要么在重建过程中反而把异常内容也“恢复”出来。Flownomaly 换了一个思路——不重建图像,而是在冻结的 DINOv2 特征空间中,把查询 token 向“正常对应物”拉回,用恢复前后的残差作为异常信号。

问题设定:从少样本中学习类别特异性正常性
工业异常检测通常按类别建模:每个产品类别单独训练或适配一个检测器。少样本设定进一步把可用正常图像压缩到 1、2 或 4 张。这意味着模型不能依赖大量数据估计分布,必须借助预训练特征空间中已经编码的通用视觉结构。
Flownomaly 的做法是把问题转化为“正常对应物恢复”:给定少量正常支持样本,学习一个速度场,把高斯噪声输运到正常特征分布附近;对查询 token,则用这个场做一次恢复,得到它在正常流形上的对应点。异常程度由查询 token 与恢复结果之间的平方残差衡量。
方法核心:条件流匹配与单步恢复
在冻结特征空间中学一个速度场
Flownomaly 不微调 DINOv2 主干,而是在冻结的 patch token 上做条件流匹配。以正常支持样本的特征为条件,学习一个速度场,把标准高斯噪声沿直线路径输运到正常特征。由于路径被约束为直线,最优场在任意时刻的取值可以直接给出后验均值,因此推理时不需要沿轨迹积分——只做一次场评估,就得到干净正常 token 的条件均值。
这个设计把“去异常”变成一次前向计算,而不是迭代式扩散采样,推理开销显著降低,也让少样本场景下的部署更现实。
条件流匹配(Conditional Flow Matching)源自连续归一化流(CNF)框架:用一个神经网络参数化的速度场 v(x,t) 定义一个时间连续的变换,把简单分布(如标准高斯)映射到目标数据分布上。训练时并不直接模拟ODE轨迹,而是对每个样本采样一条从噪声到数据的条件路径,令网络回归该路径上的瞬时速度。当路径被指定为直线时,目标速度恒为终点减起点,训练目标非常简洁。理论上的关键结论是:对直线条件路径做速度回归,其最优解在所有时刻都等于给定条件时终点的后验均值。Flownomaly 正是利用这一性质——推理时只需在选定时刻对场做一次评估,就得到查询 token 在正常流形上的条件均值,省去ODE积分。
操作时间:用正常样本自身选出恢复强度
恢复步长由一个“操作时间”参数控制,它决定恢复在多大程度上修改查询 token。时间太小,异常残留;时间太大,正常细节被抹平。难点在于少样本设定下没有异常验证样本可用于调参。
Flownomaly 提出一个仅依赖正常样本的 Jacobian 增益-噪声准则:在支持集上评估恢复映射对扰动的放大程度与噪声水平之间的权衡,从中选出操作时间。换句话说,恢复强度不是拍脑袋定的,而是从正常数据自身的几何性质中推出来的。
Jacobian 增益指的是恢复映射对输入微小扰动的局部放大倍数,可用该映射在支持样本处的雅可比矩阵的谱范数(或与之相关的量)来刻画。增益过大意味着映射对噪声和扰动敏感,恢复输出的方差会偏高;增益过小则说明映射接近恒等,对异常偏移的修正能力不足。噪声准则则是把支持集特征本身的噪声水平纳入权衡:在给定噪声下,恢复误差可由增益与噪声的乘积估计。Jacobian 增益-噪声准则本质上是在“过度修正”与“修正不足”之间寻找平衡点,其优势在于整个评估只用正常支持样本,不需要任何异常样本或标签,因而契合少样本工业设定下异常样本不可得的现实约束。
实验表现:1-shot 下的图像与像素级指标
论文在 MVTec-AD、VisA 上覆盖 1、2、4-shot 基准,并在 Real-IAD 上做样本数变化评估,与近期类别特异性方法对比均达到 state-of-the-art。
1-shot 设定下的关键数字:
- MVTec-AD:图像级 AUROC 97.8%,像素级 AUROC 98.0%
- VisA:图像级 AUROC 95.3%,像素级 AUROC 98.7%,图像级比最强基线高 2.1 个点
像素级 AUROC 在 1-shot 下接近 98%,说明单步恢复产生的残差图在定位上足够锐利;图像级与像素级之间的差距也较小,意味着该方法没有出现“定位好但整图判断弱”的常见失衡。
AUROC(Area Under the ROC Curve)是异常检测最常用的评价指标之一,衡量模型把异常样本排在正常样本之前的整体能力,取值 0.5 相当于随机猜测、1.0 为完美排序。图像级 AUROC 针对整张图的异常分数,像素级 AUROC 则对每个像素的异常分数独立评估排序质量,用于衡量缺陷定位能力。由于工业异常检测中正常样本远多于异常样本,AUROC 对类别不平衡不敏感,因而比准确率更合适。1-shot 下像素级 AUROC 接近 98%,意味着异常分数在绝大多数像素位置上都能正确区分缺陷与背景,单步恢复产生的残差图在空间定位上足够锐利。
值得关注的几点判断
第一,把异常检测转化为特征空间中的对应物恢复,绕开了像素重建容易复现异常内容的陷阱。重建类方法的一个结构性风险是:如果解码器能力足够强,它也可能把缺陷纹理重建出来,导致残差消失。Flownomaly 在冻结特征上做条件输运,恢复目标被锚定在正常支持样本上,这种风险被结构性压低。
第二,单步推理来自直线路径的数学性质,而不是工程近似。条件流匹配在直线路径下后验均值可直接由单次场评估给出,这一点让“快”和“准”不冲突。
第三,无异常验证样本下的超参选择是一个被长期忽视的工程痛点。Jacobian 增益-噪声准则的价值不只在于省掉调参,更在于它让少样本方法在实际产线中可复现——没有异常样本时,选参过程本身必须是正常的。
代码已开源于 github.com/b-rbmp/Flownomaly,可直接在 MVTec-AD 与 VisA 上复现少样本基准。
局限与适用边界
论文的评估集中在工业检测基准,类别特异性建模意味着每个类别需要单独适配,跨类别的泛化能力尚未展开讨论。冻结 DINOv2 特征也意味着方法的上限受制于该特征空间对细粒度缺陷的敏感度。此外,操作时间的选择依赖支持集规模,1-shot 极端设定下的稳定性仍值得在更多类别上验证。
相关推荐

Ollama+RAG本地知识库搭建实战:AnythingLLM喂饭教程
基于B站教程整理,详解Ollama+AnythingLLM搭建本地RAG知识库的完整流程:从通用大模型的知识局限、RAG检索增强生成原理,到文档上传、向量化入库与效果验证的实操步骤。

Ollama保姆级教程:本地免费跑大模型入门指南
Ollama是一款开源的本地大模型管理工具,支持免费下载部署DeepSeek等模型,提供命令行和Web UI,跨平台且能自动调度GPU/CPU资源,适合AI开发入门与私有化部署。

给Claude装上"手":Exoproc开源MCP服务器实现活体进程钩子
Exoproc是一个开源MCP服务器,让Claude Code通过线程劫持直接挂钩活跃Windows x64进程,绕过EDR实现动态分析。静态反编译给Claude眼睛,动态钩子给它双手。