异常检测专栏(三)传统的异常检测算法——上

news2024/11/25 20:25:17
前言 在上一篇推文中,我们简要介绍了异常检测常用的几种数据集如ImageNet、CIFAR10/CIFAR100、MNIST等。接下来,我们将基于传统的异常检测算法分为上、下两部分,逐一介绍不同类别的方法。

本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。

Transformer、目标检测、语义分割交流群

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

CV各大方向专栏与各个部署框架最全教程整理

目录

  • 传统异常检测算法概要

    • 基于模板匹配的异常检测方法

    • 基于统计模型的异常检测方法

    • 基于图像分解的异常检测方法

    • 基于频域分析的异常检测方法

  • 总结

  • 下篇预告

  • 参考文献

我们将基于传统的异常检测算法分为上、下两部分,逐一介绍不同类别的方法。其主要类别如下图示:

传统异常检测算法概要

基于传统方法的异常检测技术大致包含6个类别:基于模板匹配、基于统计模型、基于图像分解、基于频域分析、基于稀疏编码重构和基于分类面构建的异常检测算法。如下图所示:

下表总结了各类基于传统方法的图像异常检测方法的设计思路和优缺点。

基于模板匹配的异常检测方法

在图像异常检测任务中,最理想的情况是所有的正常图像都高度相似,且异常图像与正常图像之间只会在小部分区域出现区别。因此,模板匹配是非常有效的一类异常检测方法。得到待测图像和模板图像之间的对应关系后,比较两者之间的差异即可实现异常检测。

其中。Vaikundam[1]尝试通过从不包含异常的等效参考图像中减去图像来识别异常样本,而做差后的图像residual image可以更方便的对异常区域进行定位和识别。首先利用SIFT提取关键特征点,并利用Hough聚类算法进行描述符筛选后,找到与异常图像最为匹配的正常图像作为模板来检测钢材表面的异常。其流程如下图所示:

模板匹配的方法一般适用于图像采集环境稳定且可控的场景,如下图所示:

基于统计模型的异常检测方法

这类方法通常是利用统计模型来描述正常图像中像素值或者特征向量的分布情况,而对于一些远离该分布的图像区域则认定为异常。

其中,较为常见的方式是利用高斯模型进行描述。较为典型的算法由Reed和Xiaoli Yu提出的RX算法[2]。该算法建立在多元正态分布基础上,整幅场景中的数据表现为多个多元正态分布的组合,而局部范围的数据可以用同一个多元正态分布近似,通过计算检查点数据与背景数据的马氏距离来查找异常点。

RX算法主要是判别一个二元假设检验问题。若满足原假设则说明待检测位置目标不存在,否则说明目标存在。对于像素点个数为、图像维数为的高分辨影像数据,假设观测像素表示一个维数为的光谱矢量,其中,则相应的二值目标检验假设模型如下:

在二值统计模型基础上,采用广义似然比检验方法即可推演处RX检测算子,其表达式为:

 

一般来说,基于统计模型的异常检测算法在一些背景较为简单的图像中有较好的检测效果。但是结构更为复杂的图形往往难以预先假设其数据分布,并且在模型参数的估计上也有较高的难度。

统计模型适用场景如下图所示:

基于图像分解的异常检测方法

基于图像分解的方法大多针对的是周期性纹理表面小面积异常区域的检测任务。由于异常区域一般是随机出现的,其周期性较弱,这一特点使其可以域周期性的背景纹理及进行区分。

较为常用的方法主要利用了周期性背景纹理低秩性的这一先验,采用低秩分解将原始待检测图形分解成为代表背景的低秩矩阵和异常区域的稀疏矩阵:

其大致流程如下图所示,图中分解得到的稀疏矩阵就对应着可能存在异常的区域

基于低秩分解的异常检测算法,其优点在于完全不需要任何训练样本,可以直接在待检测图像上进行异常区域的检测。但这类方法检测速度较慢。由于我们需要对背景图像做低秩性假设,这类方法适用于如下图所示的布匹等各种格则纹理表面的缺陷检测问题。

基于频域分析的异常检测方法

基于频域分析的方法主要针对的也是规则纹理表面异常区域的检测。主要针对图像的频谱信息进行编辑,尝试消除周期性背景纹理以凸显异常区域。

其中,最常用的方法包含背景频谱消除和纯相位傅里叶变换法(Phase only fourier transform,POFT)两类。

(1)第一类方法

早期的方法如下图所示。在检测过程中首先利用傅里叶变换(Fourier transform,FT)将原始图像转换到频域空间,在幅度谱中将对应着周期性别境纹理的频谱分量去除以后,通过逆傅里叶变换(Inverse Fourier transform,IFT)来得到异常区域的位置信息[3]。

(2)第二类方法

第二类常用的方法采用POFT来消除背景区域。POFT[4]是在对图像进行傅里叶变换之后,抛弃了幅度谱的信息而仅采用其相位谱信息来进行傅里叶逆变换。

由于这类方法无法应用到无周期性的图像,后来Bai等人通过人工构建周期性的方式解决了这一问题。如下图所示:

当样本光照变化或者图像内目标出现平移和旋转等变化导致周期性较弱时,这些方法往往表现不佳,在正常目标附近也会出现许多干扰,如下图所示:

总结

基于模板匹配的方法十分适用于工业生产这类环境可控且目标高度一致的场景,实现了较高的检测精度,但不适用于采集环境多变或者正常图像中存在较大差异的情况。基于统计模型的方法虽然速度很快,但需要一定的训练样本来评估背景模型的参数。基于图像分解的方法则适合训练样本稀缺的场合,可以直接在待测样本上检测异常区域,不过该方法检测速度较慢,难以应用到实时检测任务当中。而基于频域分析的方法则兼顾了检测精度和速度,并且对训练样本的依赖性较低,但其由于对背景图像有一定的限制,因此通用性较差,这也是上述四类算法的共同问题。

下篇预告

本篇推文介绍了基于模板匹配、基于统计模型、基于图像分解、基于频域分析这四类传统的异常检测算法,了解到这四类算法各自的优缺点和适用场景。在下一篇推文中我们将继续介绍基于稀疏编码重构和分类面构建的异常检测方法。

参考文献

[1] S. Vaikundam, T. -Y. Hung and L. T. Chia, "Anomaly region detection and localization in metal surface inspection," 2016 IEEE International Conference on Image Processing (ICIP), Phoenix, AZ, USA, 2016, pp. 759-763, doi: 10.1109/ICIP.2016.7532459.

[2] I. S. Reed and X. Yu, "Adaptive multiple-band CFAR detection of an optical pattern with unknown spectral distribution," in IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 38, no. 10, pp. 1760-1770, Oct. 1990, doi: 10.1109/29.60107.

[3] Hongxi Zhang, Zhenduo Guo, Zegang Qi and Jiuge Wang, "Research of glass defects detection based on DFT and optimal threshold method," 2012 International Conference on Computer Science and Information Processing (CSIP), Xi'an, China, 2012, pp. 1044-1047, doi: 10.1109/CSIP.2012.6309035.

[4] D. Aiger and H. Talbot, "The phase only transform for unsupervised surface defect detection," 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, San Francisco, CA, USA, 2010, pp. 295-302, doi: 10.1109/CVPR.2010.5540198.

 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:470899183。群内有大佬负责解答大家的日常学习、科研、代码问题。

模型部署交流群:732145323。用于计算机视觉方面的模型部署、高性能计算、优化加速、技术学习等方面的交流。

其它文章

上线一天,4k star | Facebook:Segment Anything

3090单卡5小时,每个人都能训练专属ChatGPT,港科大开源LMFlow

Efficient-HRNet | EfficientNet思想+HRNet技术会不会更强更快呢?

实践教程|GPU 利用率低常见原因分析及优化

ICLR 2023 | SoftMatch: 实现半监督学习中伪标签的质量和数量的trade-off

目标检测创新:一种基于区域的半监督方法,部分标签即可(附原论文下载)

CNN的反击!InceptionNeXt: 当 Inception 遇上 ConvNeXt

神经网络的可解释性分析:14种归因算法

无痛涨点:目标检测优化的实用Trick

详解PyTorch编译并调用自定义CUDA算子的三种方式

深度学习训练模型时,GPU显存不够怎么办?

CV各大方向专栏与各个部署框架最全教程整理

计算机视觉入门1v3辅导班

计算机视觉各个方向交流群

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

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

相关文章

matlab将RGB图像在HSI空间去噪

思路与代码 RGB 转换为 HSI 的计算步骤如下: 首先归一化三通道值 : r R R G B r \frac{R}{RGB} rRGBR​ g G R G B g \frac{G}{RGB} gRGBG​ b B R G B b \frac{B}{RGB} bRGBB​ 接下来,计算 HSI 图像的亮度 I I I&#xf…

(转载)从0开始学matlab(第3天)—子数组

你可以选择和使用一个 MATLAB 函数的子集,好像他们是独立的数组一样。在数组名后面加括号,括号里面是所有要选择的元素的下标,这样就能选择这个函数的子集了。例如,假设定义了一个数组 arr1 如下 arr1[1.1 -2.2 3.3 -4.4 5.5] 那…

yolov5 实例分割 jason标注格式转换 训练自己的数据集

目录 一、coco128-seg数据集分析 1、配置文件 coco128-seg.yaml 2、coco128-seg数据集 二、自己用anylabeling标注获得的json文件 三、json文件转coco128-seg格式 四、实例分割训练 1、修改数据配置文件 coco128-seg.yaml 2、训练 一、coco128-seg数据集分析 这个博客中有…

5。STM32裸机开发(3)

嵌入式软件开发学习过程记录,本部分结合本人的学习经验撰写,系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维,为RTOS做铺垫(本部分基于库函数版实现),如有不足之处,敬请批评指正。 &…

【探索SpringCloud】服务发现

前言 今天,我们来聊聊SpringCloud服务发现。主要有如下几个议题: 一、服务发现的概念与方案;二、SpringCloud是如何与各个服务注册厂商进行集成的。 服务发现 在微服务架构中,我们不可避免的需要通过服务间的调用来完成系统功能…

Fourier分析入门——第1章——数学预备知识

第 1 章 学习Fourier分析的数学预备知识 目录 第 1 章 学习Fourier分析的数学预备知识 1.1 引言 1.2 几何和代数的一些相关概念的回顾 1.2.1 标量运算(scalar arithmetic) 1.2.2 向量运算(vector arithmetic) 1.2.3 向量乘法(vector multiplication) 1.2.4 向量长度 …

设计模式(java)-观察者模式

1. 简介 观察者模式,行为型设计模式。观察者模式在实际项目实践中,是一种使用较频繁的设计模式,它主要解决的是信息同步的问题,当多个对象需要从同一个主题中得到自身所需要的信息或状态,并通过这些信息或状态做出相应…

以太网外设ETH

1. 概述 近几年,项目需要,在多款单片机上使用了以太网外设。 本文为阶段知识整理,查缺补漏,方便以后再次遇到相关任务时,可以游刃有余的完成工作。 1.1 修改时间 2023年5月6日创建本文。包含STM32的ETH外设。2023年…

利用CNN对车牌进行智能识别(python代码,解压缩后直接运行)

1.代码流程 该段代码主要利用卷积神经网络(CNN)来识别车牌。下面是代码的主要流程: 导入所需的库和模块,包括matplotlib、numpy、cv2、tensorflow等。 加载用于检测车牌的级联分类器(cascade classifier)…

可见光遥感目标检测(一)任务概要介绍

前言 本篇开始对遥感图像的目标检测进行介绍,介绍了其目标前景、数据集以及评价指标。 本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。 Transformer、目标检测、语义分割交流群 欢迎关注公众号CV技…

机器学习13(正则化)

文章目录 简介正则化经验风险和结构风险过拟合正则化建模策略 逻辑回归逻辑回归评估器 练习评估器训练与过拟合实验评估器的手动调参 简介 这一节详细探讨关于正则化的相关内容,并就 sklearn 中逻辑回归(评估器)的参数进行详细解释由于 skle…

javaweb项目实战之myBlog

项目简介 技术栈: Java Mysql Html Ajax Css JS Json 项目说明 :项目使用maven创建,使用MVC架构模式 表示层:通俗讲就是展现给用户的界面和控制器层Servlet,接受请求、封装数据、调用业务 逻辑层,响…

libevent高并发网络编程 - 05_libevent实现http客户端

文章目录 1 http客户端相关的APIevhttp_uri_parse()evhttp_uri_get_scheme()evhttp_uri_get_port()evhttp_uri_get_host()evhttp_uri_get_path()evhttp_uri_get_query()evhttp_connection_base_bufferevent_new()evhttp_request_new()evhttp_make_request()evhttp_request_get_…

刷题刷题,开心

一先来每日一题 在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。 请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。 示例 1: 输入&…

基于html+css图展示59

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Prompt learning 教学[最终篇]:Chatgpt使用场景推荐、优秀学习资料推荐、AI工具推荐

Prompt learning 教学[最终篇]:Chatgpt使用场景推荐、优秀学习资料推荐、AI工具推荐 1.chatgpt使用场景推荐 各位应该在各种平台看到不少可以尝试使用的场景,我这里仅收录: 有意思的场景:一般比较垂直或者小众,或者出…

CobaltStrike项目实战

环境介绍 模拟内网有三台机器:WEB、PC和DC。 WEB服务器有两个网络适配器,适配器1处于NAT模式用于连接外网,适配器2用于内网。 PC和WEB服务器一样,有两个适配器,能够同时访问外网和内网;DC作为域控制器&…

神经网络的训练过程、常见的训练算法、如何避免过拟合

神经网络的训练是深度学习中的核心问题之一。神经网络的训练过程是指通过输入训练数据,不断调整神经网络的参数,使其输出结果更加接近于实际值的过程。本文将介绍神经网络的训练过程、常见的训练算法以及如何避免过拟合等问题。 神经网络的训练过程 神…

henan Problem E. 矩阵游戏

hunan Problem E. 矩阵游戏 Attachments - 2023 CCPC Henan Provincial Collegiate Programming Contest - Codeforces 思路: 我们考虑用dp,定义f[i][j][k],代表从1,1走到i,j并且使用k次变换操作能够获得的最大 价值,那么类似于01背包,接下…

分布式数据库集成解决方案2

分布式数据库集成解决方案2 扩展阅读内部结构1.表空间(TABLESPACE) # 摘要 : 本文讨论了某公司发货系统的分布式数据库集成解决方案。该公司由于业务的发展,要在另三个城市设立货仓进行发货。为此,需要增加原先的MIS系统实现这一功…