惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
云风的 BLOG
云风的 BLOG
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
Engineering at Meta
Engineering at Meta
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
罗磊的独立博客
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
异常检测 DiffusionAD
Yiwei Zhang · 2023-12-25 · via 又见苍岚

本文介绍 2023 年一篇异常检测中基于扩散模型实现异常检测的工作 —— DiffusionAD。

基本信息

项目 内容 备注
方法名称 DiffusionAD
论文题目 DiffusionAD: Norm-guided One-step Denoising Diffusion for Anomaly Detection
论文连接 https://arxiv.org/pdf/2303.08730v3.pdf
开源代码 https://github.com/HuiZhang0812/DiffusionAD-Denoising-Diffusion-for-Anomaly-Detection
发表时间 2023.08.29
方法类别 深度学习 -> 基于重构 -> 扩散模型
Detection AU-ROC 99.7%
Segmentation AU-ROC 98.7%
Segmentation AU-PRO 95.7%
FPS 23.5
核心思想 用扩散模型作为数据重构子模块,结合一个分割网络用于异常检测。

框架

提出的基于生成模型的框架由两个组件组成:重建子网络分割子网络

引导、重建子网络

通过引导扩散模型实现重建子网络,该模型将重建过程重新表述为噪声到正常图像。

输入图像 $x_0$,向其中逐步加入 $t$ 次高斯噪声得到 $x_t$,该加噪的图像会逐渐失去原始图像的信息,变为一个随机的高斯噪声。

网络先向 $x_0$ 输入两种程度的噪声得到 $x_{t_s}$ (弱)和 $x_{t_b}$(强)。

文章没有像传统扩散模型逐步加噪恢复图像,而是通过一步加噪直接恢复原始图像的样貌,这样可以节约大量运算量。

将 $x_{t_s}$ 和 $x_{t_b}$ 输入扩散模型,预测可以将两组噪声图像恢复正常的添加噪声 $\epsilon_{\theta}\left(x_{t_s}\right)$ 和 $\epsilon_{\theta}\left(x_{t_b}\right)$

文章发现如果直接将 $x_{t_s}$ 和 $x_{t_b}$ 恢复为正常图像,由于 $\hat{x_{0_s}}$ 带有更多原始图像的特征,由他恢复出的图像细节和原始图像更接近,但是扩散模型一步难以恢复较严重的异常,而 $\hat{x_{0_b}}$ 基本上是正常图像的样貌。

也就是说 $x_{t_s}$ 细节较好, $x_{t_b}$ 的大局观更好,为了结合二者的优点,文章使用了带引导的扩散模型恢复 $\hat{x_{0_s}}$ 。

具体来说就是将 $\hat{x_{0_b}}$ 作为预测 $\epsilon_{\theta}\left(x_{t_s}\right)$ 的输入加进去,这样预测出的 $\hat{x_{0_b}}$ 质量高且具有大局观($\hat{x_{0_g}}$)。

分割子网络

分割子网络为 U-Net 结构,包含编码器、解码器和层级连接,网络接受 $x_0$ 和 $\hat{x_{0_g}}$ 作为输入,直接预测异常分值。

网络学习到的不一致性减少了正常区域与其重建之间轻微的像素差异引起的误报,并突出显示了异常的区域。

训练

扩散模型学习正常样本 ($y=0$) 的重建过程:

$$ \mathcal{L}_{noise}=\frac{(1-y)(\|\epsilon_{t_s}-\epsilon_\theta(x_{t_s})\|^2+\|\epsilon_{t_b}-\epsilon_\theta(x_{t_b})\|^2)}{2}. $$

分割网络直接预测异常得分 Mask:

$$ \mathcal{L}_{mask}=\text{Smooth}_{\mathcal{L}1}\left(M,\hat{M}\right)+\gamma\mathcal{L}_{focal}\left(M,\hat{M}\right) $$

其中 $M$ 是 GT 异常 mask, $\hat{M}$ 是分割网络的输出,平滑 L1 损失和 Focal Loss 同时应用,以减少对异常值的过度敏感并准确分割困难异常样本。

将扩散模型与分割网络一起训练:

$$ \mathcal{L}_{total}=\mathcal{L}_{noise}+\mathcal{L}_{mask}. $$

异常生成

上述过程中需要大量带异常的数据才可以训练起来,论文中使用了人工制造异常的方式实现。

通过随机创造一些 mask 将其他数据集的数据以一定透明度叠加到正常图像上,得到异常数据:
$$
S=\beta(M\odot N)+(1-\beta)(M\odot A)+\bar{M}\odot N
$$

参考资料

文章链接:
https://www.zywvvd.com/notes/study/deep-learning/anomaly-detection/diffusionad/diffusionad/