工业异常检测:从前沿到落地

news2025/1/15 3:18:38

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

  • 前言
  • 一、前沿技术:SimpleNet
    • 1. 任务分类:分隔
    • 2. 性能对比:faster&higher
    • 3. 研究背景
      • 困难:
      • 方案:无监督
      • 数据集:MVTec AD
        • 性能对比:
        • 速度对比:
  • 二、代码实战
    • 1.引入库
    • 2.读入数据
  • 总结


前言

工业异常检测是一个比较古老的话题,从传统的图像处理到现在引入深度模型的深度视觉识别,也就短短十几年的时间。这样的提升主要体现在几个方面:1、检测能力越来越强大,从单一的异常检测到现在的多种类检测;2、模型越来越强大,从几个文件几张图片到现在大模型上万张图像。即使如此,在边缘GPU的加持下,深度模型取得了检测速度和检测精度的双平衡,这篇文章将从:1、原理解读,2、动手实践两个部分进行展开,恪守知行合一的原则,为有强迫症的读者带来酣畅的体验。


一、前沿技术:SimpleNet

在工业异常数据集MVTec AD上的实测效果图

图1 在工业异常数据集MVTec AD上的实测效果图

1. 任务分类:分隔

我们可以看到该技术提供了以下功能:1、生产的异常图可以叠加在原图上;2、异常区域的热力图显示,橙色表示得分高的异常区域;3、异常区域的边界用红色划分出来。因此,我们不难发现,工业异常检测的任务可以归类到图像分割中,如果能够指出是哪种异常,那么更具体到实例分割的任务中。

2. 性能对比:faster&higher

在这里插入图片描述

图2 在检测速度与检测精度面板上的性能对比

通过图2,我们不难发现该方法在取得接近80FPS(帧每秒)的前提下,还取得了超过99.5的分割准确率(I-AUROC)。这种又快又好的检测器,难道不是一把解决行业需求的利器吗?

但是,有一个待解决的问题:以上方法只给出了检测的异常位置,但是属于哪种异常,是钢件上异常还是丝绸的呢?这个方法并没有给出。如果在某种材料上的异常不确定时,还能检测出来吗?所以,至少两个问题还需要进一步研究:1、实例分割;2、迁移分割或者鲁棒性检测。

3. 研究背景

困难:

在工业场景下,异常检测与定位特别难,因为异常样本很少,而异常类型多,比如从细小的划痕到大结构缺失等。更多的样例可参考图1。这样让基于有监督的训练比较难执行。

方案:无监督

当前的方法为了解决这个问题,主要采用无监督的方式,即只采用正常样本来训练,只在测试过程中加入异常样本。比较常见的无监督方法有三种趋势:

  1. 重构的方法;它假设深度网络在只接受正常数据训练的情况下,不能准确地重构出异常,重构错误的像素被当成异常。但是,这样的假设不可能总成立,因为有时候网络泛化很好,往往也能重构出异常像素,导致误检。
  2. 合成的方法;它通过在无异常的数据上产生异常来训练网络,进而估计异常区域的边界。但是,合成的图片不够真实的话,产生的特征可能会偏离真实特征非常远,使用这样的负样本来训练可能会导致一个松散的有界正常特征空间。
  3. 嵌入(embedding)的方法;这类方法当前获得SOTA的性能。它一般采用在ImageNet上预训练的模型来提取通用的正常特征,然后采用统计算法比如多参高斯分布,归一化流和内存银行(memory bank)去嵌入正常的特征分布。通过比对输入特征与学习到的分布或者记忆到的特征来检测异常。但是,工业异常图片通常与ImageNet的分布不同。直接使用这些带有偏置的特征可能会导致不匹配的问题。并且,这些统计算法都需要高计算复杂度或者高消耗内存。

为了解决上述问题,作者提出一个SimpleNet,能够利用合成和嵌入方法的优点,获得以下提升:

  1. 与直接使用预训练的特征不同,作者提出使用一个特征适配器来产生针对目标的特征,以减少领域偏见。
  2. 与直接合成异常样本不同,作者提出通过放置噪声到特征空间的正常特征中来产生异常特征。作者认为通过适当校准噪声的尺度,能够产生一个紧密有界的正常特征空间。
  3. 通过训练一个简单的判别器能够简化异常检测过程,这将比在嵌入方法中使用复杂统计算法更加高效运算。
    具体说,就是SimpleNet利用预训练的骨架来提取正常特征,然后进行判别。判别器的结构非常简单,仅由MLP构成。作者的框架如下所示:
    在这里插入图片描述
    |图3 SimpleNet的框架|
    |–|

数据集:MVTec AD

它是一个非常流行的数据集,在异常检测与定位方面。它包含5中纹理,和10个物体分类,总共包含5354张图片。这个数据集通常由正常样本的训练集,和异常正常兼有的测试集构成。并且,它还提供了像素级别的标注用于异常图片测试。在作者的文中,它将所有类别当成一个分类,也就是所谓的冷启动异常测试,即作者在对应的正常训练样本上为每一个分类训练一个单分类器。没有使用数据增强,每一张图片都被归一化到256x256,中心切割224x224。

性能对比:

下图展示了当前数据集上的领先方法对比性能:
在这里插入图片描述

图4 SimpleNet与当前领先方法的性能对比
速度对比:

作者在a Nvidia GeForce GTX 3080ti GPU and an Intel®和Xeon® CPU E5-2680 v3@2.5GHZ的CPU上跑出了比PatchCore几乎快8倍的性能。

在这里插入图片描述

图5 更多的分割效果

二、代码实战

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

主要对SimpleNet进行了原理解读,和效果分析。通过解读,我们知道当前主流的数据集,和任务,这给我们后续做检测提供了一个方向。

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

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

相关文章

8.1 矢量图层符号化整体说明

文章目录 前言符号化与图层渲染符号符号层渲染器 总结 前言 地图制图是QGIS的优势所在,QGIS包含完整的地图制图功能,如标注与注记、符号化与地图综合等多种功能。 符号化(Symbolization)是指利用符号将地理事物或现象抽象化。 QGi…

STM32-ADC实验

实验1:单ADC单通道中断 硬件原理图 由于PC1接到电位器上,所以我们实验选择PC1引脚作为ADC接口,查询STM32数据手册得知PC1可作为ADC1的IN11(ADC1_IN11)。 USART配置 115200-8-N-1,重定向支持printf打印&…

超简单的视差滚动网站

超简单的视差滚动网站 原理能就是记录鼠标的滚动,然后给不同的元素添加不同的偏移 遵循开源精神,源码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"width…

视觉SLAM数据集(三):KITTI 数据集

教程目录 一、官网二、注册登录三、下载数据集四、测试数据集 一、官网 官网地址&#xff1a;https://www.cvlibs.net/datasets/kitti/eval_odometry.php Kitti数据集很庞大&#xff0c;包含了双目、光流、场景流、深度、里程计、目标、跟踪、马路、语义、原始数据等大类别&…

C++入门(3):引用,内联函数

一、引用 1.1 引用特性 引用必须初始化 一个变量可以有多个引用 引用一旦引用一个实体&#xff0c;就不能引用其他实体 int main() {int a 10, C 20;int& b a;b c; // 赋值&#xff1f;还是b变成c的别名&#xff1f;return 0; }1.2 常引用 引用权限可以平移或缩小…

有没有免费靠谱的配音软件?(不带广告)

免费配音软件在当今社会中越来越受到人们的关注和喜爱。随着科技的不断发展和智能手机的普及&#xff0c;配音软件成为了人们生活中不可或缺的一部分。无论是在职场中需要制作视频配音&#xff0c;还是在社交媒体上发布个人动态&#xff0c;配音软件都能帮助我们实现文字转语音…

以太坊搭建私有链(非常详细!!!)

我的系统&#xff1a;CentOS7 64位 我喜欢宝塔的直观&#xff1a; /www/server/panel/pyenv/bin/python3.7 -m pip install --upgrade pip yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed84…

【APP VTable】和市面上的 Table 组件一样,都是接收表格[] 以及数据源[]

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; uni-app | 小程序开发 开发工具&#xff1a;HBuilderX 这里写目录标题 表格组件USE 表格组件 <template><view class"scroll-table-wrapper"><view class"scroll-table-container"…

使用 excel 快速拼接省市区镇街村居五级区划完整名称

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言数据准备excel 函数附件 前言 之前做了国家区划的映射关系&#xff0c;在其过程中&#xff0c;使用代码…

JAVA-编程基础-12-01-创建多线程的3种方式

JAVA-编程基础-12-创建多线程的3种方式 文章目录 JAVA-编程基础-12-创建多线程的3种方式创建一个类继承Thread类&#xff0c;并重写run方法创建一个类实现Runnable接口&#xff0c;并重写run方法实现Callable接口&#xff0c;重写call()方法&#xff0c;这种方式可以通过Future…

亚马逊云代码AI助手CodeWhisperer使用教程

一、CodeWhisperer 简介 1、CodeWhisperer是一款基于机器学习的通用代码生成器&#xff0c;由Amazon出品&#xff0c;可以给我们提供代码建议。 2、CodeWhisperer 基于各种上下文线索提供建议&#xff0c;包括光标在源代码中的位置、位于光标前面的代码、注释&#xff0c;以及…

MR混合现实情景实训教学系统在旅游管理专业中的应用

在旅游管理专业中&#xff0c;MR混合现实情景实训教学系统的主要应用包括但不限于以下几个方面&#xff1a; 1. 实地考察的替代&#xff1a;对于一些无法实地考察的景点或设施&#xff0c;学生可以通过MR系统进行虚拟参观&#xff0c;从而了解其实际情况。这不仅可以减少时间和…

Banana Pi BPI-W3 RK3588开源硬件开发板 Debian11详解

1. 简介 RK3588从入门到精通Debian 是⼀种完全⾃由开放并⼴泛⽤于各种设备的 Linux 操作系统。Rockchip在官⽅Debian发⾏版的基础上构建和适配了相关硬件功能 2. 环境介绍 硬件环境&#xff1a; ArmSoM-W3 RK3588开发板软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian…

Java中配置RabbitMQ基本步骤

在Java中配置RabbitMQ&#xff0c;需要遵循以下步骤&#xff1a; 1.添加依赖 在项目的pom.xml文件中添加RabbitMQ的Java客户端依赖&#xff1a; <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><versio…

搜维尔科技:Varjo-最自然和最直观的互动

创建真实生活虚拟设计 Varjo让你沉浸在最自然的混合和虚拟现实环境中。 世界各地的设计团队可以聚集在一个摄影现实的虚拟空间中,以真实的准确性展示新的概念-实时的讨论和迭代。这是一个充满无限创造潜力的新时代,加速了人类前所未有的想象力。 虚拟现实、自动反应和XR设计的…

虹科案例 | 2016款别克昂科拉车发动机偶尔无法起动

作者&#xff1a;建辉汽车诊断中心 梁建辉 梁建辉&#xff0c;TechGear汽车诊断学院优秀学员&#xff0c;从事汽车维修工作15年&#xff0c;现自营“建辉汽车诊断中心”门店。 故障现象 一辆2016款别克昂科拉车&#xff0c;搭载LFF发动机&#xff0c;累计行驶里程约为8.6万km。…

【LeetCode每日一题】——1379.找出克隆二叉树中的相同节点

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目注意】六【题目示例】七【题目提示】八【题目进阶】九【解题思路】十【时间频度】十一【代码实现】十二【提交结果】 一【题目类别】 广度优先搜索 二【题目难度】 简单 三【题目编号】 1379.找…

分享一下微信小程序的文章中怎么添加营销活动

在数字化时代&#xff0c;小程序已经成为企业营销的重要工具。通过小程序&#xff0c;企业可以提供更加便捷、高效的服务&#xff0c;吸引更多的用户和客户。本文将以小程序营销活动为主题&#xff0c;介绍如何在小程序文章中加入营销活动&#xff0c;提高品牌知名度和销售额。…

DAY32 122. 买卖股票的最佳时机 II + 55. 跳跃游戏 + 45.跳跃游戏 II

122. 买卖股票的最佳时机 II 题目要求&#xff1a;给定一个数组&#xff0c;它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;。 注意&#xff1a;你不能同时…

基于springboot实现漫画网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于Springboot实现漫画网站管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包括…