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

前言 在上一篇推文中,我们简要介绍了异常检测常用的几种数据集如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辅导班

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

猜你喜欢

转载自blog.csdn.net/KANG157/article/details/130674068