【2020工业图像异常检测文献】SPADE
Sub-Image Anomaly Detection with Deep Pyramid Correspondences
1、Background
利用深度预训练特征的最近邻( kNN )方法在应用于整个图像时表现出非常强的异常检测性能。kNN 方法的一个局限性是缺乏描述图像中异常位置的分割图。
为了解决这一问题,提出了语义金字塔异常检测(SPADE)方法 使用基于多分辨率特征金字塔的对应关系。
SPADE 方法包括的 3 个阶段:
(1)使用预训练的深度神经网络(例如 ImageNet 训练的 ResNet)提取图像特征;
(2)最近的 K 个正常图像到目标的最近邻检索;
(3)在目标和正常图像之间找到密集的像素级对应关系,在检索到的正常图像中没有近匹配的目标图像区域被标记为异常。
2、Method
SPADE 方法主要由 3 个部分组成:
- 图像特征提取
- 使用一个在大量图像上预训练过的深度神经网络(例如ResNet)来提取图像的特征。这些特征能够捕捉图像的重要信息,比如形状、纹理等。
- K最近邻正常图像检索
- 使用欧几里得距离等度量方法来计算目标图像与数据库中每张正常图像之间的距离。
- 从数据库中检索与目标图像特征向量距离最近的 K 张图像。这些图像被认为是与目标图像最相似的正常图像。
- 具有深度特征金字塔对应的像素对齐
- 在目标图像和找到的正常图像之间建立像素级的对应关系。这意味着算法会逐像素地比较图像之间的差异,寻找那些在正常图像中找不到对应物的像素点。
- 如果目标图像的某个像素在正常图像中找不到相似的对应像素,那么这个像素就可能属于异常区域。通过这种方式,算法不仅能判断一张图像是否包含异常,还能精确地指出异常发生在图像的哪个部分。
- 为了更准确地建立像素间的对应关系,SPADE采用了一种叫做“特征金字塔”的技术。这涉及到使用不同层次的特征,从细节到全局,来描述每个像素。这样可以确保即使在图像的很小一部分中,也能准确地找到异常。
pseudo-code
# 伪代码:Semantic Pyramid Anomaly Detection (SPADE)# 输入:
# images - 包含所有图像的集合(正常图像和待检测图像)
# model - 预训练的深度学习模型(如ResNet)
# k - 最近邻检索的数量
# kappa - 像素级最近邻检索的数量
# threshold_distance - 用于确定异常的阈值# 输出:
# anomaly_maps - 包含每个图像异常区域的分割图def extract_features(model, images):# 使用预训练模型提取图像特征features = []for image in images:feature = model.extract_features(image)features.append(feature)return featuresdef find_k_nearest_neighbors(features, target_feature, k):# 找到目标特征的k个最近邻distances = [euclidean_distance(target_feature, feature) for feature in features]nearest_neighbors = sort_by_distance(distances)[:k]return nearest_neighborsdef compute_anomaly_score(model, target_image, neighbors, kappa):# 计算每个像素的异常得分anomaly_scores = []for p in target_image.pixels():target_pixel_feature = model.extract_pixel_features(target_image, p)neighbor_features = [model.extract_pixel_features(neighbor, p) for neighbor in neighbors]distances = [euclidean_distance(target_pixel_feature, neighbor_feature) for neighbor_feature in neighbor_features]average_distance = average(distances)anomaly_score = 1 if average_distance > threshold_distance else 0anomaly_scores.append(anomaly_score)return anomaly_scoresdef detect_anomalies(features, k, kappa, threshold_distance):anomaly_maps = {}for i, feature in enumerate(features):target_feature = featurenearest_neighbors = find_k_nearest_neighbors(features, target_feature, k)anomaly_score = compute_anomaly_score(model, images[i], nearest_neighbors, kappa)anomaly_maps[images[i]] = anomaly_scorereturn anomaly_maps# 主流程
features = extract_features(model, images)
anomaly_maps = detect_anomalies(features, k, kappa, threshold_distance)# 将异常得分转换为分割图
segmentation_maps = convert_scores_to_segmentation(anomaly_maps)return segmentation_maps
3、Experiments
只有GOOD。。。


4、Conclusion
- 提出了一种新的基于对齐的方法 SPADE,用于检测和分割图像中的异常。
- SPADE 方法依赖于通过预训练的深度特征提取的像素级特征金字塔的K个最近邻。
- SPADE 方法由两个阶段组成,旨在实现高精度和合理的计算复杂度。(阶段一:使用预先训练的深度神经网络进行图像特征提取,阶段二:对距离目标最近的K个正常图像进行最近邻居检索,在检索到的正常图像中不具有接近匹配的目标图像区域被标记为异常。)
[COPY]
Sub-Image Anomaly Detection with DeepPyramid Correspondences 基于深金字塔对应的子图像异常检测(KNN)
相关文章:
【2020工业图像异常检测文献】SPADE
Sub-Image Anomaly Detection with Deep Pyramid Correspondences 1、Background 利用深度预训练特征的最近邻( kNN )方法在应用于整个图像时表现出非常强的异常检测性能。kNN 方法的一个局限性是缺乏描述图像中异常位置的分割图。 为了解决这一问题&a…...
C++QT医院专家门诊预约管理系统
目录 一、项目介绍 二、项目展示 三、源码获取 一、项目介绍 医院专家门诊预约管理系统 [要求] 该系统需创建和管理以下信息:1、门诊专家信息:专家姓名、编号、性别、年龄、职称、门诊科目、服务时间、门诊预约数据集等;2、门诊预约信息…...
在SpringBoot项目中利用Redission实现布隆过滤器(布隆过滤器的应用场景、布隆过滤器误判的情况、与位图相关的操作)
文章目录 1. 布隆过滤器的应用场景2. 在SpringBoot项目利用Redission实现布隆过滤器3. 布隆过滤器误判的情况4. 与位图相关的操作5. 可能遇到的问题(Redission是如何记录布隆过滤器的配置参数的)5.1 问题产生的原因5.2 解决方案5.2.1 方案一:…...
【prefect】python任务调度工具 Prefect | 可视化任务工具 | Python自动化的终极武器 | 高效数据管道管理
一、产品介绍 1、官方 Github https://github.com/PrefectHQ/prefect 2、官方文档 https://docs.prefect.io/3.0/get-started/index 3、Pgsql说明 正确的python链接pgsql如下: import psycopg2 from sqlalchemy import create_enginedef connect_with_psycopg2(…...
蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推
蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推 ①蓝禾 【岗位】国内/国际电商运营,设计,…...
【面向对象】设计模式分类
java中设计模式共23种,根据使用场景可分为创建型模式、结构型模式、行为型模式。 创建型: 如何创建对象。 单例模式:保证一个类在一个程序中只能创建一个对象。例如windows任务管理器窗口只需要创建一个。单例模式只创建一个对象࿰…...
花朵识别系统Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
一、介绍 花朵识别系统。本系统采用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,并基于前期收集到的5种常见的花朵数据集(向日葵、玫瑰、蒲公英、郁金香、菊花)进行处理后进行模型训练,最…...
中泰免签,准备去泰国旅游了吗?《泰语翻译通》app支持文本翻译和语音识别翻译,解放双手对着说话就能翻译。
泰国是很多中国游客的热门选择,现在去泰国旅游更方便了,因为泰国对中国免签了。如果你打算去泰国,那么下载一个好用的泰语翻译软件是很有必要的。 简单好用的翻译工具 《泰语翻译通》App就是为泰国旅游设计的,它翻译准确&#x…...
C++/Qt 集成 AutoHotkey
C/Qt 集成 AutoHotkey 前言AutoHotkey 介绍 方案一:子进程启动编写AutoHotkey脚本准备 AutoHotkey 运行环境编写 C/Qt 代码 方案二:显式动态链接方案探索编译动态链接库集成到C工程关于AutoHotkeyDll.dll中的函数原型 总结 前言 上一篇介绍了AutoHotkey…...
OpenMV学习第一步安装IDE_2024.09.20
用360浏览器访问星瞳科技官网,一直提示访问不了。后面换了IE浏览器就可以访问。第一个坑。...
RK3568平台(基础篇)万用表的使用
一.万用表的通断判断 万用表两个笔头的插法:黑笔头是插在COM的孔里面,红色笔头可以插在其他的三个孔里面,20A和mA分别用来测电流,另外一个孔可以用来测其他(电压 电阻)。 以下这个三角符号(像wifi一样的)可以用来测通断: 使用万用表的红笔和黑笔进行短接,这时候两端…...
more、less 命令:阅读文本
一、命令简介 more 和 less 都是用于查看文本文件内容的命令,但它们在显示方式和功能上有一些区别。 简单的说 less 是 more 的升级版:增加了搜索、跳转等功能。所以优先使用 less,可以不用 more 了。 二、命令参数 基…...
【笔记】1.3 塑性变形
一、塑性变形的方式 DDWs(Dislocation-Dipole Walls,位错偶极墙):指由两个位错构成的结构,它们以一种特定的方式排列在一起,形成一个稳定的结构单元。 DTs(Dislocation Tangles,位错…...
Java集合(三)
目录 Java集合(三) Java双列集合体系介绍 HashMap类 HashMap类介绍 HashMap类常用方法 HashMap类元素遍历 LinkedHashMap类 LinkedHashMap类介绍 LinkedHashMap类常用方法 LinkedHashMap类元素遍历 Map接口自定义类型去重的方式 Set接口和Ma…...
python:给1个整数,你怎么判断是否等于2的幂次方?
最近在csdn上刷到一个比较简单的题目,题目要求不使用循环和递归来实现检查1个整数是否等于2的幂次方,题目如下: 题目的答案如下: def isPowerofTwo(n):z bin(n)[2:]print(bin(n))if z[0] ! 1:return Falsefor i in z[1:]:if i !…...
Centos7安装gitlab-ce(rpm安装方式)
本章教程,主要介绍如何在Centos7安装gitlab-ce。 一、安装基础环境 安装gitlab-ce之前,我们需要安装一下jdk版本。 sudo yum install java-11-openjdk-devel二、下载安装包 这里我们下载的是rpm包。更多gitlab-ce版本可以在这里查看:https://…...
Flutter 获取手机连接的Wifi信息
测试版本 Flutter:3.7.6Dart:2.19.3 network_info_plus: 4.0.1 前言 我在做设备配网的时候,需要选择配网的WiFi。用下拉选择框展示WiFi列表。现在有个需求:默认展示的设备为手机连接的wifi。要实现这个需求只要能够获取到手机连接的wifi信息…...
誉龙视音频 Third/TimeSyn 远程命令执行复现
0x01 漏洞描述: 誉龙公司定位为系统级的移动视音频记录解决方案提供商,凭借其深厚的行业经验,坚持自主研发,匠心打造记录仪领域行业生态,提供开放式的记录仪APK、GB28181 SDK、国网B协议、管理平台软件OEM。誉龙视音频…...
ATMEGA328P芯片引脚介绍
1.AVCC AVCC是ATmega328P芯片的模拟电源引脚。 AVCC引脚的定义 模拟电源引脚:AVCC(Analog Voltage Common)是ATmega328P微控制器中的模拟电源引脚,用于为模拟电路部分提供稳定的电源。功能描述:AVCC通常连接到一个干…...
现代前端构建工具对比:Vue CLI、Webpack 和 Vite
一、引言🌟 在现代前端开发中,选择合适的构建工具对于提高项目的效率和可维护性至关重要。🛠️ Vue CLI、📦 Webpack 和 🚀 Vite 是目前最流行的三个构建工具,它们各自具有独特的优势和适用场景。本文将深…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
6.计算机网络核心知识点精要手册
计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...
Axure零基础跟我学:展开与收回
亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...
2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】
1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...
